⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isp_yuv_if.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 4 页
字号:
	isp_idle_done_flag=KAL_FALSE;
	DISABLE_VIEW_FINDER_MODE;
	i=0;
	kal_sleep_task(25);
	while(isp_idle_done_flag==KAL_FALSE)
	{
		i++;
		kal_sleep_task(10);
		if(i>5) break;
	}
	DISABLE_CAMERA_IDLE_INT;

	lcd_fb_update(&lcd_data);
#if (defined(MT6226)||defined(MT6226M)||defined(MT6227))
	video_buffer_size=mpeg4_encode_data.mpeg4_image_width * mpeg4_encode_data.mpeg4_image_height * 3;
	video_buffer_size>>=1;
	mpeg4_encode_data.video_buffer1_address=(kal_uint32) intmem_get_buffer(video_buffer_size);
	mpeg4_encode_data.video_buffer2_address=(kal_uint32) intmem_get_buffer(video_buffer_size);

	config_image_dma(scene_id,mpeg4_encode_data.image_target_width,mpeg4_encode_data.image_target_height);
	config_image_processor(scene_id);
	config_pixel_resizer(scene_id);
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
	open_image_data_path(scene_id);
	config_video_encode_data_path(scene_id,&ipp_video_encode_data);
#endif

	camera_image_setting(CAM_PARAM_EFFECT,isp_preview_config_data.image_effect);
	if(isp_preview_config_data.image_effect==0)
	{
		camera_image_setting(CAM_PARAM_CONTRAST,isp_preview_config_data.contrast_level);
		camera_image_setting(CAM_PARAM_BRIGHTNESS,isp_preview_config_data.brightness_level);
		camera_image_setting(CAM_PARAM_SATURATION,isp_preview_config_data.saturation_value);
	}
	camera_image_setting(CAM_PARAM_WB,isp_preview_config_data.wb_mode);
	camera_image_setting(CAM_PARAM_EXPOSURE,isp_preview_config_data.ev_value);
	camera_image_setting(CAM_PARAM_BANDING,isp_preview_config_data.banding_freq);
	camera_image_setting(CAM_PARAM_NIGHT_MODE,isp_preview_config_data.night_mode);

	ENABLE_VIEW_FINDER_MODE;
	
#endif
	return KAL_TRUE;
}	/* mpeg4_encode_yuv_process */

/*************************************************************************
* FUNCTION
*	isp_yuv_digital_zoom
*
* DESCRIPTION
*	This function is for setting the digital zoom factor
*
* PARAMETERS
*	zoom_factor : ISP digital zoom factor
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void isp_yuv_digital_zoom(kal_uint8 zoom_factor)
{
#if (defined(YUV_SENSOR_SUPPORT))
	kal_uint16 temp_grab_size;
		
	isp_grab_width= ((exposure_window.exposure_window_width * ISP_MIN_DIGITAL_ZOOM_FACTOR)/isp_digital_zoom_factor)&0xFFFC ;
	isp_grab_height=((exposure_window.exposure_window_height * ISP_MIN_DIGITAL_ZOOM_FACTOR)/isp_digital_zoom_factor)&0xFFFC ;

	isp_grab_start_x=exposure_window.grab_start_x+ (((exposure_window.exposure_window_width-isp_grab_width)>>1)&0xFFFC);
	isp_grab_start_y=exposure_window.grab_start_y+ (((exposure_window.exposure_window_height-isp_grab_height)>>1)&0xFFFE);

	if (isp_operation_state==ISP_PREVIEW_STATE)
	{
		if ((isp_preview_config_data.target_width * exposure_window.exposure_window_height) >=
			 (isp_preview_config_data.target_height * exposure_window.exposure_window_width))
		{	/* x limit */
			temp_grab_size=isp_grab_height;
			isp_grab_height=(isp_grab_width * isp_preview_config_data.target_height/
								 isp_preview_config_data.target_width)&0xFFFE;
			isp_grab_start_y+=(((temp_grab_size-isp_grab_height)>>1)&0xFFFE);
		}
		else
		{	/* y limit */
			temp_grab_size=isp_grab_width;
			isp_grab_width=(isp_grab_height * isp_preview_config_data.target_width/
								isp_preview_config_data.target_height)&0xFFFE;
			isp_grab_start_x+=(((temp_grab_size-isp_grab_width)>>1)&0xFFFC);
		}
	}
	else if (isp_operation_state==ISP_MPEG4_ENCODE_STATE)
	{
		if ((mpeg4_encode_data.mpeg4_image_width * exposure_window.exposure_window_height) >=
			 (mpeg4_encode_data.mpeg4_image_height * exposure_window.exposure_window_width))
		{	/* x limit */
			temp_grab_size=isp_grab_height;
			isp_grab_height=(isp_grab_width * mpeg4_encode_data.mpeg4_image_height/
								 mpeg4_encode_data.mpeg4_image_width)&0xFFFE;
			isp_grab_start_y+=(((temp_grab_size-isp_grab_height)>>1)&0xFFFE);
		}
		else
		{	/* y limit */
			temp_grab_size=isp_grab_width;
			isp_grab_width=(isp_grab_height * mpeg4_encode_data.mpeg4_image_width/
								mpeg4_encode_data.mpeg4_image_height)&0xFFFE;
			isp_grab_start_x+=(((temp_grab_size-isp_grab_width)>>1)&0xFFFC);
		}
	}

#if(defined(MT6226)||defined(MT6226M)||defined(MT6227)||defined(MT6228)||defined(MT6229)||defined(MT6230))
	/* Disable ISP Down Sample */	
	DISABLE_VERTICAL_SUB_SAMPLE;
	DISABLE_HORIZONTAL_SUB_SAMPLE;	
	SET_HSUB_SRC_SIZE(isp_grab_width);	
	SET_VSUB_SRC_SIZE(isp_grab_height);	
	SET_HSUB_DST_SIZE(isp_grab_width);				  
	SET_VSUB_DST_SIZE(isp_grab_height);
	isp_preview_config_data.source_width=isp_grab_width;
	isp_preview_config_data.source_height=isp_grab_height;	
	mpeg4_encode_data.image_source_width=isp_grab_width;
	mpeg4_encode_data.image_source_height=isp_grab_height;	

#if(defined(MT6228)||defined(MT6229)||defined(MT6230))
	ipp_preview_data.image_src_width=isp_preview_config_data.source_width;
	ipp_preview_data.image_src_height=isp_preview_config_data.source_height;
	ipp_video_encode_data.image_src_width=mpeg4_encode_data.image_source_width;
	ipp_video_encode_data.image_src_height=mpeg4_encode_data.image_source_height;
#endif
#endif
#endif /* YUV_SENSOR_SUPPORT */ 
}

/*************************************************************************
* FUNCTION
*	camera_yuv_image_setting
*
* DESCRIPTION
*	This function set yuv sensor image parameter
*
* PARAMETERS
*	type_sel:	image type
*	para	  :	parameter
*
* RETURNS
*	TRUE or FALSE
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint8 camera_yuv_image_setting(kal_uint8 type_sel, kal_uint16 para)
{
#if (defined(YUV_SENSOR_SUPPORT))
	switch (type_sel)
	{
		case CAM_PARAM_ZOOM_FACTOR:
			isp_digital_zoom(para);
		break;
		case CAM_PARAM_CONTRAST:
      	image_sensor_func->yuv_sensor_setting(CAM_PARAM_CONTRAST,para);
		break;
		case CAM_PARAM_BRIGHTNESS:
			image_sensor_func->yuv_sensor_setting(CAM_PARAM_BRIGHTNESS,para);
		break;
		case CAM_PARAM_HUE:
			image_sensor_func->yuv_sensor_setting(CAM_PARAM_HUE,para);
		break;
		case CAM_PARAM_WB:
      	image_sensor_func->yuv_sensor_setting(CAM_PARAM_WB,para);
		break;
		case CAM_PARAM_EXPOSURE:
			image_sensor_func->yuv_sensor_setting(CAM_PARAM_EXPOSURE,para);
		break;
		case CAM_PARAM_EFFECT:
			image_sensor_func->yuv_sensor_setting(CAM_PARAM_EFFECT,para);
		break;
		case CAM_PARAM_BANDING:
         image_sensor_func->yuv_sensor_setting(CAM_PARAM_BANDING,para);
		break;
		case CAM_PARAM_SATURATION:
	      image_sensor_func->yuv_sensor_setting(CAM_PARAM_SATURATION,para);
		break;
		case CAM_PARAM_NIGHT_MODE:
			image_sensor_func->yuv_sensor_setting(CAM_PARAM_NIGHT_MODE,para);
		break;
	}
#endif
	return KAL_TRUE;
}

/*************************************************************************
* FUNCTION
*	background_yuv_image_setting
*
* DESCRIPTION
*	This function set yuv sensor image parameter
*
* PARAMETERS
*	NONE
*
* RETURNS
*	TRUE or FALSE
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint8 background_yuv_image_setting(void)
{
#if (defined(YUV_SENSOR_SUPPORT))
	kal_uint8 i;

	for (i=0;i<CAM_NO_OF_PARAM;i++)
	{
		if (image_setting_index & (1<<i))
		{
			switch (i)
			{
				case CAM_PARAM_EFFECT:
					image_sensor_func->yuv_sensor_setting(CAM_PARAM_EFFECT,isp_preview_config_data.image_effect);
				break;
				case CAM_PARAM_CONTRAST:
		      	image_sensor_func->yuv_sensor_setting(CAM_PARAM_CONTRAST,isp_preview_config_data.contrast_level);
				break;
				case CAM_PARAM_BRIGHTNESS:
					image_sensor_func->yuv_sensor_setting(CAM_PARAM_BRIGHTNESS,isp_preview_config_data.brightness_level);
				break;
				case CAM_PARAM_HUE:
					image_sensor_func->yuv_sensor_setting(CAM_PARAM_HUE,isp_preview_config_data.hue_value);
				break;
				case CAM_PARAM_WB:
		      	image_sensor_func->yuv_sensor_setting(CAM_PARAM_WB,isp_preview_config_data.wb_mode);
				break;
				case CAM_PARAM_EXPOSURE:
					image_sensor_func->yuv_sensor_setting(CAM_PARAM_EXPOSURE,isp_preview_config_data.ev_value);
				break;
				case CAM_PARAM_BANDING:
		         image_sensor_func->yuv_sensor_setting(CAM_PARAM_BANDING,isp_preview_config_data.banding_freq);
				break;
				case CAM_PARAM_SATURATION:
			      image_sensor_func->yuv_sensor_setting(CAM_PARAM_SATURATION,isp_preview_config_data.saturation_value);
				break;
				case CAM_PARAM_NIGHT_MODE:
					image_sensor_func->yuv_sensor_setting(CAM_PARAM_NIGHT_MODE,isp_preview_config_data.night_mode);
				break;
			}
			image_setting_index &=~(1<<i);
		}
	}
#endif
	return KAL_TRUE;
}

/*************************************************************************
* FUNCTION
*	camera_yuv_operation_setting
*
* DESCRIPTION
*	This function set yuv sensor AE/AF/Flash parameter
*
* PARAMETERS
*	NONE
*
* RETURNS
*	TRUE or FALSE
*
* GLOBALS AFFECTED
*
*************************************************************************/
void camera_yuv_operation_setting(kal_uint8 func_sel, kal_uint16 para)
{
#if (defined(YUV_SENSOR_SUPPORT))
	switch(func_sel)
	{	
		case CAM_DSC_MODE:
			dsc_status.dscmode=para;
			if(dsc_status.dscmode==CAM_NIGHTSCENE)
				camera_image_setting(CAM_PARAM_NIGHT_MODE,1);
			else
				camera_image_setting(CAM_PARAM_NIGHT_MODE,0);
#if (defined(AF_SUPPORT))				
			if(dsc_status.dscmode==CAM_FLOWER)
			{
				dsc_status.af.mode=CAM_AF_MACRO_MODE;
				image_sensor_func->yuv_sensor_setting(CAM_PARAM_AF_MODE,CAM_AF_MACRO_MODE);
			}
			else if(dsc_status.dscmode==CAM_LANDSCAPE)
			{
				dsc_status.af.mode=CAM_AF_INFINITE_MODE;
				image_sensor_func->yuv_sensor_setting(CAM_PARAM_AF_MODE,CAM_AF_INFINITE_MODE);
			}
			else
			{
				dsc_status.af.mode=CAM_AF_AUTO_MODE;
				image_sensor_func->yuv_sensor_setting(CAM_PARAM_AF_MODE,CAM_AF_AUTO_MODE);
			}
#endif
		break;
		case CAM_AE_METERING:
			image_sensor_func->yuv_sensor_setting(CAM_PARAM_AE_METERING,para);
		break;
#if (defined(AF_SUPPORT))				
		case CAM_AF_KEY:
			if(para==CAM_AF_RELEASE)
				af_operation_state=AF_STANDBY_STATE;
			else
			{
				af_operation_state=AF_SEARCH_STATE;
				yuv_af_check_count=0;
			}
			image_sensor_func->yuv_sensor_setting(CAM_PARAM_AF_KEY,para);
		break;
		case CAM_AF_METERING:
			dsc_status.af.metering=para;
			image_sensor_func->yuv_sensor_setting(CAM_PARAM_AF_METERING,para);
		break;
		case CAM_AF_MODE:
			if(isp_preview_config_data.dsc_mode==CAM_FLOWER)//scenario modified
				dsc_status.af.mode=CAM_AF_MACRO_MODE;
			else
				dsc_status.af.mode=para;
			image_sensor_func->yuv_sensor_setting(CAM_PARAM_AF_MODE,para);
		break;
		case CAM_MANUAL_FOCUS_DIR:
			dsc_status.af.mfdir=para;
			image_sensor_func->yuv_sensor_setting(CAM_PARAM_MANUAL_FOCUS_DIR,para);
		break;
#endif
		case CAM_FLASH_MODE:
			image_sensor_func->yuv_sensor_setting(CAM_PARAM_FLASH,para);
		break;
	}			
#endif
}

#endif /* ! MT6219 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -