📄 camera_para.c
字号:
DISABLE_Y_LPF;
DISABLE_C_LPF;
break;
case CAMERA_PARA_AF_LOWLIGHT_MODE:
SET_PREPROCESS_PIXEL_LIMIT(0xFF);
DISABLE_AUTO_DEFECT_ALL;
DISABLE_RGB_EDGE_GAIN;
DISABLE_Y_LPF;
DISABLE_C_LPF;
break;
}
}
/********************************************
reduce_color_matrix
reduce color matrix for reduece noise
input : sat_factor
saturation factor
uint: 0x20
0x20 mean keep saturation the same with ISP table
0x00 mean reduce saturation to bypass
*********************************************/
void reduce_color_matrix(kal_uint32 sat_factor)
{
kal_uint32 cm_table[3],m[9];
kal_uint32 i,k,j;
/*******************************
change to read nvram data
********************************/
cm_table[0]=camera_para.ISP.reg[39];//REG_ISP_COLOR_MATRIX1;
cm_table[1]=camera_para.ISP.reg[40];
cm_table[2]=camera_para.ISP.reg[41];
for(i=0;i<9;i++){
k=i/3;
j=(2-(i%3))*8;
m[i]=(cm_table[k]>>j)&0xff;
}
#if 0
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
#endif
for(i=0;i<9;i++){
if(i%4==0){
m[i]=(m[i]-32)*sat_factor/32+32;
}
else{
if(m[i]>=128){
m[i]=(m[i]-128)*sat_factor/32+128;
}
else{
m[i]=m[i]*sat_factor/32;
}
}
}
SET_COLOR_MATRIX1(m[0],m[1],m[2]);
SET_COLOR_MATRIX2(m[3],m[4],m[5]);
SET_COLOR_MATRIX3(m[6],m[7],m[8]);
}
void set_anti_low_light_para(kal_uint8 aeidx)
{
if(aeidx>=20){
//normal
reduce_color_matrix(0x20);
SET_INTERPOLATION_THRE_SM(0x0F);
apply_camera_autodefect_to_reg(CAMERA_COMP_PREVIEW_NORMAL_SET);
REG_ISP_EDGE_GAIN2=0x001F001F;
}else if(aeidx >=15){
reduce_color_matrix(0x18);
SET_INTERPOLATION_THRE_SM(0x18);
apply_camera_autodefect_to_reg(CAMERA_COMP_PREVIEW_NORMAL_SET);
REG_ISP_EDGE_GAIN2=0x000F000F;
}else if(aeidx>=10){
reduce_color_matrix(0x10);
SET_INTERPOLATION_THRE_SM(0x1f);
apply_camera_autodefect_to_reg(CAMERA_COMP_PREVIEW_LOWLIGHT_SET);
REG_ISP_EDGE_GAIN2=0x00080008;
}else if(aeidx>=8){
reduce_color_matrix(0x08);
SET_INTERPOLATION_THRE_SM(0x1F);
apply_camera_autodefect_to_reg(CAMERA_COMP_PREVIEW_LOWLIGHT_SET);
REG_ISP_EDGE_GAIN2=0x00000000;
}else{
reduce_color_matrix(0x00);
SET_INTERPOLATION_THRE_SM(0x1F);
apply_camera_autodefect_to_reg(CAMERA_COMP_PREVIEW_LOWLIGHT_SET);\
REG_ISP_EDGE_GAIN2=0x00000000;
}
}
#endif
#elif (defined(DRV_ISP_6229_SERIES))
#if !defined(ISP_SUPPORT)
// DO NOT delete this section!!!
// When ISP_SUPPORT is not defined, NVRAM still need the dummy structure
// and default value to initialize NVRAM_EF_CAMERA_PARA_LID.
#include "camera_para.h"
const nvram_camera_para_struct CAMERA_PARA_DEFAULT_VALUE={0};
#else
#include "drv_comm.h"
#include "stdio.h"
#include "isp_if.h"
#include "image_sensor.h"
#include "sccb.h"
#include "ae_awb.h"
#include "af.h"
#include "camera_para.h"
#include "med_api.h"
nvram_camera_para_struct camera_para;
nvram_camera_gamma_struct camera_gamma;
nvram_camera_defect_struct camera_defect;
// _Camera_Parameter_Structure_START_
const nvram_camera_defect_struct CAMERA_DEFECT_DEFAULT_VALUE={0xFFFFFFFF};
/* STRUCT: nvram_camera_para_struct */
const nvram_camera_para_struct CAMERA_PARA_DEFAULT_VALUE=
{
/* STRUCT: ISP */
{
/* ARRAY: ISP.reg[144+8] */
{
0xA3020074, 0x0FFF0FFF, 0x006302E6, 0x00310212, // CAM+000h~00Ch ,0
0x00000001, 0xA8A8A8A8, 0x00000040, 0x0000000F, // CAM+010h~01Ch ,4
0x00000000, 0x00000000, 0x00000000, 0x00000000, // CAM+020h~02Ch ,8
0x88A00100, 0x00C4008B, 0x0080008B, 0x03070BF8, // CAM+030h~03Ch ,12
0xFF000000, 0x00618940, 0x0010000C, 0x1020000C, // CAM+040h~04Ch ,16
0x2030000C, 0x00100C18, 0x10200C18, 0x20300C18, // CAM+050h~05Ch ,20
0x00101824, 0x10201824, 0x20301824, 0x082C0721, // CAM+060h~06Ch ,24
0x00000001, 0x0A0A1910, 0x00000514, 0x021FC805, // CAM+070h~07Ch ,28
0x00000002, 0x000A000A, 0x24FF8F0F, 0x021F8224, // CAM+080h~08Ch ,32
0x003F2F3C, 0x841E1B04, 0x33280605, 0x003B9388,
0x0089358C, 0x00829436, 0x00202020, 0x00000040,
0x00828282, 0x00858585, 0x00408090, 0x20200000,
0x00FF91B8, 0x00018080, 0x29597588, 0xA4BACEE0,
0xE8F0F800, 0x00000000, 0x00000000, 0x00000000, // CAM+0D0h~0DCh ,52
0x00000000, 0x00000000, 0x00000000, 0x00000000, // CAM+0E0h~0ECh ,56
0x00000000, 0x00000000, 0x00000000, 0x00000000, // CAM+0F0h~0FCh ,60
0x00000000, 0x00000000, 0x00000000, 0x00000000, // CAM+100h~10Ch ,64
0x00000000, 0x00000000, 0x00000000, 0x00000000, // CAM+110h~11Ch ,68
0x245C5C24, 0x245C5C24, 0x125801B8, 0x13200160, // CAM+120h~12Ch ,72
0x00325065, 0x7694AEC5, 0xDAE4EDF7, 0x32506576, // CAM+130h~13Ch ,76
0x94AEC5DA, 0xE4EDF700, 0x32506576, 0x94AEC5DA, // CAM+140h~14Ch ,80
0xE4EDF700, 0x00000000, 0x00000000, 0x00000000, // CAM+150h~15Ch ,84
0x32506576, 0x94AEC5DA, 0xE4EDF700, 0x00800080, // CAM+160h~16Ch ,88
0x00800080, 0x0000004B, 0x00000064, 0x00000000, // CAM+170h~17Ch ,92
0x00000000, 0x00000000, 0x00000000, 0x00000000, // CAM+180h~18Ch ,96
0x00000000, 0x00000000, 0x00000000, 0x00000000, // CAM+190h~19Ch ,100
0x00000000, 0x00000000, 0x11111111, 0x11111111, // CAM+1A0h~24Ch ,104
0x11111111, 0x11111111, 0x11111111, 0x11111111, // CAM+1B0h~1BCh ,108
0x11111111, 0x11111110, 0x00000000, 0xF8000000, // CAM+1C0h~1CCh ,112
0xA0A00000, 0x00000000, 0x00000000, 0x00000000, // CAM+1D0h~1DCh ,116
0x60708090, 0xA0B0C0D0, 0xE0F00000, 0x00000000, // CAM+1E0h~1ECh ,104,(27)112,(29)120
0x00000000, 0x00000000, 0x00000000, 0x00000000, // CAM+1F0h~1FCh ,108,(27)116,(29)124
0x00000000, 0x00000000, 0x00000000, 0x00000000, // CAM+200h~20Ch ,112,(27)120,(29)128
0x00000000, 0x124272F5, 0xB48C7800, 0x03204163,
0x869AA9B7, 0xC6D4E3F1, 0x204163CD, 0xCDD4DBE3,
0xEAF1F800, 0x204163D6, 0xD6DCE2E8, 0xEDF3F900, // CAM+230h~23Ch ,124,(27)132,(29)140
0x00000000, 0x00000000, 0x00000000, 0x00000000, // CAM+240h~24Ch ,128,(27)136,(29)144
0x00000000, 0x00000000, 0x00000000, 0x00000000 // CAM+250h~25Ch ,(29)146
}
},
/* STRUCT: PREDGAMMA */
{
/* PREDGAMMA.gamma_select */ 0x00, /* ARRAY: PREDGAMMA.gamma[9][11] */
{
/* ARRAY: PREDGAMMA.gamma[0][11] */
{
0x28, 0x4E, 0x67, 0x78, 0x91, 0xA8, 0xC0, 0xD7,
0xE1, 0xEB, 0xF5
},
/* ARRAY: PREDGAMMA.gamma[1][11] */
{
0x20, 0x3C, 0x55, 0x69, 0x8D, 0xA8, 0xC0, 0xD7,
0xE1, 0xEB, 0xF5
},
/* ARRAY: PREDGAMMA.gamma[2][11] */
{
0x14, 0x28, 0x46, 0x64, 0x91, 0xB4, 0xCE, 0xE0,
0xE8, 0xF0, 0xF8
},
/* ARRAY: PREDGAMMA.gamma[3][11] */
{
0x49, 0x64, 0x78, 0x88, 0xA4, 0xBA, 0xCE, 0xE0,
0xE8, 0xF0, 0xF8
},
/* ARRAY: PREDGAMMA.gamma[4][11] */
{
0x29, 0x59, 0x75, 0x88, 0xA4, 0xBA, 0xCE, 0xE0,
0xE8, 0xF0, 0xF8
},
/* ARRAY: PREDGAMMA.gamma[5][11] */
{
0x14, 0x30, 0x50, 0x69, 0x87, 0xA5, 0xBE, 0xD7,
0xE1, 0xEB, 0xF5
},
/* ARRAY: PREDGAMMA.gamma[6][11] */
{
0x17, 0x30, 0x53, 0x74, 0x99, 0xAB, 0xBE, 0xD7,
0xE1, 0xEB, 0xF5
},
/* ARRAY: PREDGAMMA.gamma[7][11] */
{
0x30, 0x49, 0x5D, 0x6F, 0x8D, 0xA8, 0xC0, 0xD7,
0xE1, 0xEB, 0xF5
},
/* ARRAY: PREDGAMMA.gamma[8][11] */
{
0x10, 0x20, 0x30, 0x40, 0x60, 0x80, 0xA0, 0xC0,
0xD0, 0xE0, 0xF0
}
}
},
/* STRUCT: COMP */
{
/* ARRAY: COMP.shading_cap[11] */
{
0x148465E9, 0xB48C7800, 0x03204163, 0x8696A5B4,
0xC4D3E2F1, 0x204189FF, 0xFFFFFFFF, 0xFFFFFF00,
0x204163FF, 0xFFFFFFFF, 0xFFFFFF00
},
/* ARRAY: COMP.autodefect_pre_low[2] */
{
0xF8000000, 0x14140000
},
/* ARRAY: COMP.autodefect_cap_nor[2] */
{
0xF8000000, 0xA0A00000
},
/* ARRAY: COMP.autodefect_cap_low[2] */
{
0xF8000000, 0x14140000
},
/* ARRAY: COMP.shading_spare_1[11] */
{
0x00000000, 0x00000000, 0x00204060, 0x8090A0B0,
0xC0D0E0F0, 0x20406080, 0x90A0B0C0, 0xD0E0F000,
0x20406080, 0x90A0B0C0, 0xD0E0F000
},
/* ARRAY: COMP.shading_spare_2[11] */
{
0x00000000, 0x00000000, 0x00204060, 0x8090A0B0,
0xC0D0E0F0, 0x20406080, 0x90A0B0C0, 0xD0E0F000,
0x20406080, 0x90A0B0C0, 0xD0E0F000
}
},
/* STRUCT: AE */
{
/* AE.iniShutter */ 0x0118, /* AE.TargetLum */ 0x50, /* AE.StepperEV */ 0x02, /* AE.iniExpoIdx */ 0x28
},
/* STRUCT: AWB */
{
/* ARRAY: AWB.LightSource[5][5] */
{
/* ARRAY: AWB.LightSource[0][5] */
{
0x1D4C, 0x00B9, 0x0080, 0x0080, 0x0080
},
/* ARRAY: AWB.LightSource[1][5] */
{
0x1964, 0x00B8, 0x0080, 0x0085, 0x0080
},
/* ARRAY: AWB.LightSource[2][5] */
{
0x0FA0, 0x009A, 0x0080, 0x00CB, 0x0080
},
/* ARRAY: AWB.LightSource[3][5] */
{
0x0ED8, 0x0087, 0x0080, 0x00C2, 0x0080
},
/* ARRAY: AWB.LightSource[4][5] */
{
0x0AF0, 0x0080, 0x0092, 0x00FD, 0x0092
},
/* ARRAY: AWB.LightSource[5][5] */
{
0x1130, 0x0080, 0x0080, 0x0080, 0x0080
}
},
/* AWB.AWB_rgain_max */ 0x00B5, /* AWB.AWB_ggain_max */ 0x009C, /* AWB.AWB_bgain_max */ 0x00A5
},
/* STRUCT: SENSOR */
{
/* ARRAY: SENSOR.reg[34] */
#if defined(OV7660_RAW)
{
{ 0x00, 0x00 } ,{ 0x01, 0x80 } ,{ 0x02, 0x80 } ,{ 0x04, 0x00 }
,{ 0x0E, 0x04 } ,{ 0x0F, 0x62 } ,{ 0x13, 0x40 } ,{ 0x14, 0x48 }
,{ 0x15, 0x40 } ,{ 0x1B, 0x01 } ,{ 0x1E, 0x01 } ,{ 0x29, 0x3C }
,{ 0x33, 0x00 } ,{ 0x34, 0x07 } ,{ 0x35, 0x84 } ,{ 0x36, 0x00 }
,{ 0x38, 0x13 } ,{ 0x39, 0x43 } ,{ 0x3A, 0x04 } ,{ 0x3C, 0x68 }
,{ 0x3D, 0x19 } ,{ 0x40, 0xC1 } ,{ 0x62, 0x80 } ,{ 0x63, 0x80 }
,{ 0x64, 0x09 } ,{ 0x65, 0x10 } ,{ 0x66, 0x01 } ,{ 0x69, 0x80 }
,{ 0x6B, 0x0A } ,{ 0x8B, 0xCC } ,{ 0x8C, 0xCC } ,{ 0x8D, 0xCF }
,{ 0x8e, 0x00 } ,{ 0x8f, 0x00 } ,{ 0x90, 0x00 } ,{ 0x91, 0x00 }
,{ 0xA1, 0x00 } ,{ 0xFFFFFFFF, 0x00 } ,{ 0xFFFFFFFF, 0x00 } ,{ 0xFFFFFFFF, 0x00 } // 32~35
,{ 0xFFFFFFFF, 0x00 } ,{ 0xFFFFFFFF, 0x00 } ,{ 0xFFFFFFFF, 0x00 } ,{ 0xFFFFFFFF, 0x00 }
,{ 0xFFFFFFFF, 0x00 } ,{ 0xFFFFFFFF, 0x00 } ,{ 0xFFFFFFFF, 0x00 } ,{ 0xFFFFFFFF, 0x00 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -