示例#1
0
/*************************************************************************
* 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() */
示例#2
0
/**************** 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    
}
示例#3
0
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
}