📄 image_sensor.c
字号:
{
// Not Support
return KAL_FALSE;
}
/*************************************************************************
* FUNCTION
* set_GC0306_param_hue
*
* DESCRIPTION
* GC0306 hue setting.
*
* PARAMETERS
* none
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_GC0306_param_hue(kal_uint32 para)
{
// Not Support
return KAL_FALSE;
}
/*************************************************************************
* FUNCTION
* set_GC0306_param_gamma
*
* DESCRIPTION
* GC0306 gamma setting.
*
* PARAMETERS
* none
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_GC0306_param_gamma(kal_uint32 para)
{
return KAL_FALSE;
}
/*************************************************************************
* FUNCTION
* set_GC0306_param_wb
*
* DESCRIPTION
* GC0306 wb setting.
*
* PARAMETERS
* none
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_GC0306_param_wb(kal_uint32 para)
{
// kal_uint16 rgain=0x80, ggain=0x80, bgain=0x80;
kal_uint8 temp_reg;
Delayms(200); //daemon 2008-3-27
temp_reg=read_cmos_sensor(0x41);
switch (para)
{
case CAM_WB_AUTO:
write_cmos_sensor(0x41,temp_reg|0x04); // Enable AWB
//write_cmos_sensor(0x61,0x40);
//write_cmos_sensor(0x63,0x40);
//write_cmos_sensor(0x65,0x40);
//write_cmos_sensor(0x67,0x40);
break;
case CAM_WB_CLOUD:
write_cmos_sensor(0x41,temp_reg&~0x04); // Enable AWB
//write_cmos_sensor(0x61,0x45);
//write_cmos_sensor(0x63,0x41);
//write_cmos_sensor(0x65,0x40);
//write_cmos_sensor(0x67,0x45);
write_cmos_sensor(0xca,0x68); //WB_manual_gain
write_cmos_sensor(0xcb,0x40);
write_cmos_sensor(0xcc,0x50);
break;
case CAM_WB_DAYLIGHT:
write_cmos_sensor(0x41,temp_reg&~0x04); // Enable AWB
//write_cmos_sensor(0x61,0x43);
//write_cmos_sensor(0x63,0x40);
//write_cmos_sensor(0x65,0x42);
//write_cmos_sensor(0x67,0x43);
write_cmos_sensor(0xca,0x60);
write_cmos_sensor(0xcb,0x40);
write_cmos_sensor(0xcc,0x50);
break;
case CAM_WB_INCANDESCENCE:
write_cmos_sensor(0x41,temp_reg&~0x04); // Enable AWB
//write_cmos_sensor(0x61,0x54);
//write_cmos_sensor(0x63,0x40);
//write_cmos_sensor(0x65,0x68);
//write_cmos_sensor(0x67,0x54);
write_cmos_sensor(0xca,0x60);
write_cmos_sensor(0xcb,0x40);
write_cmos_sensor(0xcc,0x80);
break;
case CAM_WB_FLUORESCENT:
write_cmos_sensor(0x41,temp_reg&~0x04); // Enable AWB
//write_cmos_sensor(0x61,0x43);
//write_cmos_sensor(0x63,0x40);
//write_cmos_sensor(0x65,0x42);
//write_cmos_sensor(0x67,0x43);
write_cmos_sensor(0xca,0x50);
write_cmos_sensor(0xcb,0x40);
write_cmos_sensor(0xcc,0x70);
break;
case CAM_WB_TUNGSTEN:
write_cmos_sensor(0x41,temp_reg&~0x04); // Enable AWB
//write_cmos_sensor(0x61,0x49);
//write_cmos_sensor(0x63,0x40);
//write_cmos_sensor(0x65,0x6c);
//write_cmos_sensor(0x67,0x49);
write_cmos_sensor(0xca,0x60);
write_cmos_sensor(0xcb,0x52);
write_cmos_sensor(0xcc,0x90);
break;
case CAM_WB_MANUAL:
// TODO
break;
default:
return KAL_FALSE;
}
return KAL_TRUE;
}
/*************************************************************************
* FUNCTION
* set_GC0306_param_exposure
*
* DESCRIPTION
* GC0306 exposure setting.
*
* PARAMETERS
* none
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_GC0306_param_exposure(kal_uint32 para)
{
switch (para)
{
case CAM_EV_NEG_4_3:
write_cmos_sensor(0xd1, 0x40);
break;
case CAM_EV_NEG_3_3:
write_cmos_sensor(0xd1, 0x48);
break;
case CAM_EV_NEG_2_3:
write_cmos_sensor(0xd1, 0x50);
break;
case CAM_EV_NEG_1_3:
write_cmos_sensor(0xd1, 0x58);
break;
case CAM_EV_ZERO:
write_cmos_sensor(0xd1, 0x60);
break;
case CAM_EV_POS_1_3:
write_cmos_sensor(0xd1, 0x6d);
break;
case CAM_EV_POS_2_3:
write_cmos_sensor(0xd1, 0x78);
break;
case CAM_EV_POS_3_3:
write_cmos_sensor(0xd1, 0x80);
break;
case CAM_EV_POS_4_3:
write_cmos_sensor(0xd1, 0x88);
break;
default:
return KAL_FALSE;
}
return KAL_TRUE;
}
/*************************************************************************
* FUNCTION
* set_GC0306_param_effect
*
* DESCRIPTION
* GC0306 effect setting.
*
* PARAMETERS
* none
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_GC0306_param_effect(kal_uint32 para)
{
kal_uint32 ret = KAL_TRUE;
switch (para)
{
case CAM_EFFECT_ENC_NORMAL:
write_cmos_sensor(0x40,0x7c);
write_cmos_sensor(0x41,0x3d);
write_cmos_sensor(0x42,0x30);
write_cmos_sensor(0x8c,0x12);
write_cmos_sensor(0xa1,0x40);
write_cmos_sensor(0xa0,0x50);
write_cmos_sensor( 0x44 , 0xe2 ); //0x9f
write_cmos_sensor( 0xcd , 0x40 );
write_cmos_sensor( 0xce , 0x40 );
write_cmos_sensor( 0xcf , 0x40 );
//set_GC0306_param_wb(isp_preview_config_data.wb_mode);
//write_cmos_sensor(0xd1,0xa0);
// write_cmos_sensor(0x67,0x80);
//write_cmos_sensor(0x68,0x80);
//write_cmos_sensor(0x56,0x40);
break;
case CAM_EFFECT_ENC_GRAYSCALE:
write_cmos_sensor(0x40,0x7c);
write_cmos_sensor(0x41,0x3d);
write_cmos_sensor(0x42,0x30);
write_cmos_sensor(0x8c,0x12);
write_cmos_sensor(0xa1,0x40);
write_cmos_sensor(0xa0,0x00);
write_cmos_sensor( 0x44 , 0xe2 ); //0x9f
write_cmos_sensor( 0xcd , 0x40 );
write_cmos_sensor( 0xce , 0x40 );
write_cmos_sensor( 0xcf , 0x40 );
//set_GC0306_param_wb(isp_preview_config_data.wb_mode);
//write_cmos_sensor(0xd1,0xa0);
//write_cmos_sensor(0x67,0x80);
//write_cmos_sensor(0x68,0x80);
//write_cmos_sensor(0x56,0x40);
break;
case CAM_EFFECT_ENC_SEPIA:
write_cmos_sensor(0x40,0x7c);
write_cmos_sensor(0x41,0x3d);
write_cmos_sensor(0x42,0x30);
write_cmos_sensor(0x8c,0x12);
write_cmos_sensor(0xa1,0x40);
write_cmos_sensor(0xa0,0x30);
write_cmos_sensor(0x44,0xe2);
write_cmos_sensor( 0xcd , 0x50 );
write_cmos_sensor( 0xce , 0x40 );
write_cmos_sensor( 0xcf , 0x30 );
//set_GC0306_param_wb(isp_preview_config_data.wb_mode);
//write_cmos_sensor(0x3A,0x1C);
//write_cmos_sensor(0x67,0x80);
//write_cmos_sensor(0x68,0xC0);
//write_cmos_sensor(0x56,0x40);
break;
case CAM_EFFECT_ENC_COLORINV:
write_cmos_sensor(0x40,0x7c);
write_cmos_sensor(0x41,0x3d);
write_cmos_sensor(0x42,0x30);
write_cmos_sensor(0x8c,0x12);
write_cmos_sensor(0xa1,0x40);
write_cmos_sensor(0xa0,0x00);
write_cmos_sensor(0x44,0xe3);
write_cmos_sensor( 0xcd , 0x40 );
write_cmos_sensor( 0xce , 0x40 );
write_cmos_sensor( 0xcf , 0x40 );
//set_GC0306_param_wb(isp_preview_config_data.wb_mode);
//write_cmos_sensor(0xd1,0x60);
// write_cmos_sensor(0x67,0x80);
// write_cmos_sensor(0x68,0x80);
// write_cmos_sensor(0x56,0x40);
break;
case CAM_EFFECT_ENC_SEPIAGREEN:
write_cmos_sensor(0x40,0x7c);
write_cmos_sensor(0x41,0x3d);
write_cmos_sensor(0x42,0x30);
write_cmos_sensor(0x8c,0x12);
write_cmos_sensor(0xa1,0x40);
write_cmos_sensor(0xa0,0x30);
write_cmos_sensor(0x44,0xe2);
write_cmos_sensor( 0xcd , 0x30 );
write_cmos_sensor( 0xce , 0x60 );
write_cmos_sensor( 0xcf , 0x30 );
//set_GC0306_param_wb(isp_preview_config_data.wb_mode);
break;
case CAM_EFFECT_ENC_SEPIABLUE:
write_cmos_sensor(0x40,0x7c);
write_cmos_sensor(0x41,0x3d);
write_cmos_sensor(0x42,0x30);
write_cmos_sensor(0x8c,0x22);
write_cmos_sensor(0xa1,0x40);
write_cmos_sensor(0xa0,0x30);
write_cmos_sensor(0x44,0xe2);
write_cmos_sensor( 0xcd , 0x30 );
write_cmos_sensor( 0xce , 0x30 );
write_cmos_sensor( 0xcf , 0x60 );
//set_GC0306_param_wb(isp_preview_config_data.wb_mode);
break;
/*case CAM_EFFECT_ENC_GRAYINV:
write_cmos_sensor(0x3A,0x1C);
write_cmos_sensor(0x67,0x80);
write_cmos_sensor(0x68,0x80);
write_cmos_sensor(0x56,0x40);
break; */
case CAM_EFFECT_ENC_COPPERCARVING:
write_cmos_sensor(0x40,0x3c);
write_cmos_sensor(0x41,0x37);
write_cmos_sensor(0x42,0x34);
write_cmos_sensor(0x8c,0x25);
write_cmos_sensor(0xa1,0xff);
write_cmos_sensor(0xa0,0x00);
write_cmos_sensor(0x44,0xe2);
write_cmos_sensor( 0xcd , 0x40 );
write_cmos_sensor( 0xce , 0x40 );
write_cmos_sensor( 0xcf , 0x40 );
//set_GC0306_param_wb(isp_preview_config_data.wb_mode);
break;
case CAM_EFFECT_ENC_BLUECARVING:
write_cmos_sensor(0x40,0x3c);
write_cmos_sensor(0x41,0x37);
write_cmos_sensor(0x42,0x34);
write_cmos_sensor(0x8c,0x25);
write_cmos_sensor(0xa1,0xff);
write_cmos_sensor(0xa0,0x40);
write_cmos_sensor(0x44,0xe2);
write_cmos_sensor( 0xcd , 0x40 );
write_cmos_sensor( 0xce , 0x40 );
write_cmos_sensor( 0xcf , 0xa0 );
//set_GC0306_param_wb(isp_preview_config_data.wb_mode);
break;
/* case CAM_EFFECT_ENC_CONTRAST:
write_cmos_sensor(0x3A,0x0C);
write_cmos_sensor(0x67,0x80);
write_cmos_sensor(0x68,0x80);
write_cmos_sensor(0x56,0x80);
break;
case CAM_EFFECT_ENC_EMBOSSMENT:
case CAM_EFFECT_ENC_SKETCH:
case CAM_EFFECT_ENC_BLACKBOARD:
case CAM_EFFECT_ENC_WHITEBOARD:
case CAM_EFFECT_ENC_JEAN:
case CAM_EFFECT_ENC_OIL: */
default:
ret = KAL_FALSE;
}
return ret;
}
/*************************************************************************
* FUNCTION
* set_GC0306_param_banding
*
* DESCRIPTION
* GC0306 banding setting.
*
* PARAMETERS
* none
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_GC0306_param_banding(kal_uint32 para)
{
kal_uint8 banding;
return KAL_TRUE;
}
/*************************************************************************
* FUNCTION
* set_GC0306_param_saturation
*
* DESCRIPTION
* GC0306 SATURATION setting.
*
* PARAMETERS
* none
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_GC0306_param_saturation(kal_uint32 para)
{
// Not Support
return KAL_FALSE;
}
/*************************************************************************
* FUNCTION
* set_GC0306_param_nightmode
*
* DESCRIPTION
* GC0306 night mode setting.
*
* PARAMETERS
* none
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_GC0306_param_nightmode(kal_uint32 para)
{
GC0306_night_mode((kal_bool)para);
return KAL_TRUE;
}
/*************************************************************************
* FUNCTION
* set_GC0306_param_ev
*
* DESCRIPTION
* GC0306 ev setting.
*
* PARAMETERS
* none
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_GC0306_param_ev(kal_uint32 para)
{
return set_GC0306_param_exposure(para);
return KAL_TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -