/************************************************************************* * FUNCTION * usbvideo_camera_capture * * DESCRIPTION * This function start camera capture * * PARAMETERS * None * * RETURNS * None * * GLOBALS AFFECTED * *************************************************************************/ kal_bool usbvideo_camera_capture(usbvideo_camera_process_struct *usbvideo_param) { #if 0//JiaShuo Delete for webcam if (sensor_err_check<0) return KAL_FALSE; if (usbvideo_cam_operation_state != USBVIDEO_CAM_STANDBY_STATE) ASSERT(0); g_usbvideo_cam_buff = USBVideo_Get_Still_Buffer(); if(g_usbvideo_cam_buff!=NULL) { g_usbvideo_cam_size = usbvideo_param->target_size_enum; g_usbvideo_camera_data.target_width = STILL_SIZE[g_usbvideo_cam_size-1].width; g_usbvideo_camera_data.target_height = STILL_SIZE[g_usbvideo_cam_size-1].height; g_usbvideo_camera_data.target_buffer_size = STILL_SIZE[g_usbvideo_cam_size-1].max_frame_size; ENABLE_CMOS_SESNOR; config_usbvideo_preview_jpeg(usbvideo_param); usbvideo_cam_operation_state=USBVIDEO_CAM_CAPTURE_STATE; // Update attr usbvideo_camera_update_attr(); SET_CAMERA_CAPTURE_MODE; SET_CAMERA_FRAME_RATE(0); ENABLE_VIEW_FINDER_MODE; return KAL_TRUE; } #endif return KAL_TRUE; } /* usbvideo_camera_capture() */
/**************** naming, 6253 yuv difference ******************/ void IspStartInput(ISP_OPERATION_STATE_ENUM IspState) { #if (defined(ISP_SUPPORT)) #if (defined(__ISP_CRZ_HW_FRAME_SYNC_SUPPORT__)) ENABLE_CAMERA_TO_CRZ_INIT; /*Enable hardware frame reset*/ ENABLE_CAMERA_RESIZER_OVERRUN_INT; #endif /******* confirm if necessary ********/ ENABLE_CAMERA_RESIZER_OVERRUN_INT; ENABLE_CAMERA_GMC_OVERRUN_INT; switch(IspState) { case ISP_PREVIEW_STATE: #if defined(WEBCAM_SUPPORT) case ISP_PREVIEW_WEBCAM_STATE: #endif case ISP_MPEG4_ENCODE_STATE: WaitFirstFrameFlag=KAL_TRUE; IspPreviewFrameCount=0; SET_CAMERA_PREVIEW_MODE; SET_CAMERA_FRAME_RATE(0); ENABLE_VIEW_FINDER_MODE; break; case ISP_CAPTURE_JPEG_STATE: #if(defined(__ISP_AUTO_RECAPTURE_SUPPORT__)) #if (!(defined(LED_FLASHLIGHT_SUPPORT) ||defined(MSHUTTER_SUPPORT) )) ENABLE_REZ_OVRUN_FLIMIT_EN; SET_REZ_OVRUN_FLIMIT_NO(CAPTURE_RETRIAL_FRAME_NO);//recapture times #endif #endif IspIdleDoneFlag=KAL_FALSE; IspDoneFlag=KAL_FALSE; ENABLE_CAMERA_ISP_DONE_INT; ENABLE_CAMERA_IDLE_INT; SET_CAMERA_CAPTURE_MODE; ENABLE_VIEW_FINDER_MODE; break; #if defined(WEBCAM_SUPPORT) case ISP_CAPTURE_WEBCAM_STATE: IspIdleDoneFlag=KAL_FALSE; IspDoneFlag=KAL_FALSE; ENABLE_CAMERA_ISP_DONE_INT; ENABLE_CAMERA_IDLE_INT; SET_CAMERA_CAPTURE_MODE; ENABLE_VIEW_FINDER_MODE; break; #endif default: break; } DISABLE_REZ_DISCONN; #endif }
MM_ERROR_CODE_ENUM IspJpegSensorCaptureStart(kal_uint32 JpegBufAddr) { #if (defined(ISP_SUPPORT)) #define CRZ_CTRL_REG (CRZ_base + 0x00) #define REG_CRZ_CTRL *((volatile unsigned int *)(CRZ_CTRL_REG)) volatile kal_uint32 i=0; MM_ERROR_CODE_ENUM ErrorCode = MM_ERROR_NONE; ASSERT(JpegBufAddr != NULL); SET_CAMERA_INPUT_TYPE(INPUT_BAYER); IspDoneFlag=KAL_FALSE; IspIdleDoneFlag=KAL_FALSE; DISABLE_VIEW_FINDER_MODE; ENABLE_CAMERA_ISP_DONE_INT; ENABLE_CAMERA_IDLE_INT; ENABLE_CAMERA_GMC_OVERRUN_INT; mm_enable_power(MMPWRMGR_RESZ_LB); REG_CRZ_CTRL = 0x0000; ENABLE_REZ_DISCONN; ENABLE_REZ_LPF; //ENABLE_CAMERA_JPG_INTERFACE; ENABLE_ISP_USING_RESIZER_LINE_BUFFER; SET_OUTPUT_PATH_TYPE(0); ENABLE_CAMERA_OUTPUT_TO_MEM; REG_ISP_OUTPUT_ADDR = JpegBufAddr; SET_ISP_MEM_BURST_MODE(7); DISABLE_CAMERA_INPUT_FROM_MEM; SET_CAMERA_INPUT_RATE(3); //IspReset(); //start_yuv_isp(ISP_CAPTURE_JPEG_STATE); SET_CAMERA_CAPTURE_MODE; SET_CAMERA_FRAME_RATE(0); //IspJpegCaptureStart = KAL_TRUE; ENABLE_VIEW_FINDER_MODE; /* Wait capture done */ i=0; IspWaitOneVsync(IspVsyncTimeOut250MS); while((IspIdleDoneFlag==KAL_FALSE)||(IspDoneFlag==KAL_FALSE)) { i++; kal_sleep_task(2); if(i>100) break; } //stop_yuv_isp(ISP_CAPTURE_JPEG_STATE,CAM_CAPTURE_TIME_OUT_STOP); DISABLE_VIEW_FINDER_MODE; #if 0 /* under construction !*/ /* under construction !*/ /* under construction !*/ /* under construction !*/ /* under construction !*/ /* under construction !*/ /* under construction !*/ /* under construction !*/ /* under construction !*/ /* under construction !*/ /* under construction !*/ #endif if(i<=100) { stack_stop_timer(&CalTaskStackTimer); IspJpegCaptureStart = KAL_FALSE; SendMsgToCal(MSG_ID_CAL_JPEG_SENSOR_PARSE_REQ, &JpegSensorInfo); //pfCalIspCb(CAL_CBID_AF_RESULT, &JpegSensorInfo, sizeof(CAL_JPEG_SENSOR_PARSE_REQ_MSG_STRUCT)); } else { ErrorCode = MM_ERROR_CAL_STILL_CAPTURE_TIMEOUT; } return ErrorCode; #else return MM_ERROR_SENSOR_FEATURE_NOT_SUPPORT; #endif }