📄 camsensor_ov9650.c
字号:
*value = 135
*/
camsensor_params->outdoor_index = 43;
/* ------------ Auto White Balance Config ----------------- */
camsensor_params->awb_enable = TRUE;
/* AWB algorithm selection */
camsensor_params->awb_algorithm = CAM3A_AWB_SIMPLE_GREY_WORLD_ALGO;
//camsensor_params->awb_algorithm = CAM3A_AWB_ADVANCED_GREY_WORLD_ALGO;
/* These are for Advanced Grey World AWB algo. These will be moved
to Chromatix one day */
/* D65 Outdoor sunlight */
camsensor_params->red_gain_table[CAM3A_AGW_AWB_OUTDOOR_SUNLIGHT] = 0.81;
/* Cloudy Outdoor */
camsensor_params->red_gain_table[CAM3A_AGW_AWB_OUTDOOR_CLOUDY] = 0.74;
/* (A) Tungsten (incandescent), indoors */
camsensor_params->red_gain_table[CAM3A_AGW_AWB_INDOOR_INCANDESCENT] = 1.17;
/* TL84, warm fluorescent, indoors */
camsensor_params->red_gain_table[CAM3A_AGW_AWB_INDOOR_WARM_FLO] = 1.02;
/* CWF/CW Cool White fluorescent, indoors */
camsensor_params->red_gain_table[CAM3A_AGW_AWB_INDOOR_COLD_FLO] = 0.91;
/* Horizon, */
camsensor_params->red_gain_table[CAM3A_AGW_AWB_HORIZON] = 1.33;
/* D65 Outdoor sunlight */
camsensor_params->blue_gain_table[CAM3A_AGW_AWB_OUTDOOR_SUNLIGHT] = 0.82;
/* Cloudy Outdoor */
camsensor_params->blue_gain_table[CAM3A_AGW_AWB_OUTDOOR_CLOUDY] = 0.96;
/* (A) Tungsten (incandescent), indoors */
camsensor_params->blue_gain_table[CAM3A_AGW_AWB_INDOOR_INCANDESCENT] = 0.56;
/* TL84, warm fluorescent, indoors */
camsensor_params->blue_gain_table[CAM3A_AGW_AWB_INDOOR_WARM_FLO] = 0.63;
/* CWF/CW Cool White fluorescent, indoors */
camsensor_params->blue_gain_table[CAM3A_AGW_AWB_INDOOR_COLD_FLO] = 0.59;
/* Horizon, */
camsensor_params->blue_gain_table[CAM3A_AGW_AWB_HORIZON] = 0.51;
/* For Cloudy Manual White Balance. Look for this to be moved to
Chromatix soon */
camsensor_params->cloudy_white_balance.r_gain = 1/0.74; // inverse of AGW gains above
camsensor_params->cloudy_white_balance.g_gain = 1.0;
camsensor_params->cloudy_white_balance.b_gain = 1/0.96; // inverse of AGW gains above
/* Advanced Grey World indoors light biases for tuning AGW algorithm
decisions */
camsensor_params->agw_indoor_light_bias_wf_a = 0.8;
camsensor_params->agw_indoor_light_bias_wf_cf = 0.9;
/* Min and Max gains allowed for each color component */
camsensor_params->awb_min_r_gain = 0.25;
camsensor_params->awb_min_g_gain = 0.25;
camsensor_params->awb_min_b_gain = 0.25;
camsensor_params->awb_max_r_gain = 7.0;
camsensor_params->awb_max_g_gain = 7.0;
camsensor_params->awb_max_b_gain = 7.0;
#ifdef FEATURE_CAMERA_5x5_ASF
/* ------------ Adaptive Spatial Filter Config ---------------- */
/* 3x3 ASF filter
camsensor_params->asf_data.asf_enable = TRUE;
camsensor_params->asf_data.setting[0].signal_level = 40;
camsensor_params->asf_data.setting[0].noise_level = 20;
camsensor_params->asf_data.setting[0].gain_threshold = 0;
camsensor_params->asf_data.setting[0].sharpening_degree = 1.2;
camsensor_params->asf_data.setting[1].signal_level = 70;
camsensor_params->asf_data.setting[1].noise_level = 35;
camsensor_params->asf_data.setting[1].gain_threshold = 4;
camsensor_params->asf_data.setting[1].sharpening_degree = 1;
*/
camsensor_params->asf_data.asf_enable = TRUE;
camsensor_params->asf_data.filter_mode = DUAL_FILTER;
camsensor_params->asf_data.exposure_index1 = (uint16)(0.50 * camsensor_params->chromatix_parms->num_exposure_values);
camsensor_params->asf_data.exposure_index2 = (uint16)(0.75 * camsensor_params->chromatix_parms->num_exposure_values);
camsensor_params->asf_data.max_exposure_index = (uint16)(camsensor_params->chromatix_parms->num_exposure_values - 1);
camsensor_params->asf_data.smoothing_filter[0] = 1;
camsensor_params->asf_data.smoothing_filter[1] = 1;
camsensor_params->asf_data.smoothing_filter[2] = 1;
camsensor_params->asf_data.smoothing_filter[3] = 1;
camsensor_params->asf_data.smoothing_filter[4] = 1;
camsensor_params->asf_data.smoothing_filter[5] = 1;
camsensor_params->asf_data.smoothing_filter[6] = 1;
camsensor_params->asf_data.smoothing_filter[7] = 1;
camsensor_params->asf_data.smoothing_filter[8] = 1;
camsensor_params->asf_data.laplacian_filter[0] = -1;
camsensor_params->asf_data.laplacian_filter[1] = -1;
camsensor_params->asf_data.laplacian_filter[2] = -1;
camsensor_params->asf_data.laplacian_filter[3] = -1;
camsensor_params->asf_data.laplacian_filter[4] = 8;
camsensor_params->asf_data.laplacian_filter[5] = -1;
camsensor_params->asf_data.laplacian_filter[6] = -1;
camsensor_params->asf_data.laplacian_filter[7] = -1;
camsensor_params->asf_data.laplacian_filter[8] = -1;
/* setup filter1 */
camsensor_params->asf_data.normalize_factor1 = 1.0/6.0;
camsensor_params->asf_data.filter1.a11 = -1;
camsensor_params->asf_data.filter1.a12 = -1;
camsensor_params->asf_data.filter1.a13 = -1;
camsensor_params->asf_data.filter1.a14 = -1;
camsensor_params->asf_data.filter1.a15 = -1;
camsensor_params->asf_data.filter1.a21 = -2;
camsensor_params->asf_data.filter1.a22 = -2;
camsensor_params->asf_data.filter1.a23 = -2;
camsensor_params->asf_data.filter1.a24 = -2;
camsensor_params->asf_data.filter1.a25 = -2;
camsensor_params->asf_data.filter1.a31 = 6;
camsensor_params->asf_data.filter1.a32 = 6;
camsensor_params->asf_data.filter1.a33 = 6;
camsensor_params->asf_data.filter1.a34 = 6;
camsensor_params->asf_data.filter1.a35 = 6;
camsensor_params->asf_data.filter1.a41 = -2;
camsensor_params->asf_data.filter1.a42 = -2;
camsensor_params->asf_data.filter1.a43 = -2;
camsensor_params->asf_data.filter1.a44 = -2;
camsensor_params->asf_data.filter1.a45 = -2;
camsensor_params->asf_data.filter1.a51 = -1;
camsensor_params->asf_data.filter1.a52 = -1;
camsensor_params->asf_data.filter1.a53 = -1;
camsensor_params->asf_data.filter1.a54 = -1;
camsensor_params->asf_data.filter1.a55 = -1;
/* setup filter2 */
camsensor_params->asf_data.normalize_factor2 = 1.0/6.0;
camsensor_params->asf_data.filter2.a11 = -1;
camsensor_params->asf_data.filter2.a12 = -2;
camsensor_params->asf_data.filter2.a13 = 6;
camsensor_params->asf_data.filter2.a14 = -2;
camsensor_params->asf_data.filter2.a15 = -1;
camsensor_params->asf_data.filter2.a21 = -1;
camsensor_params->asf_data.filter2.a22 = -2;
camsensor_params->asf_data.filter2.a23 = 6;
camsensor_params->asf_data.filter2.a24 = -2;
camsensor_params->asf_data.filter2.a25 = -1;
camsensor_params->asf_data.filter2.a31 = -1;
camsensor_params->asf_data.filter2.a32 = -2;
camsensor_params->asf_data.filter2.a33 = 6;
camsensor_params->asf_data.filter2.a34 = -2;
camsensor_params->asf_data.filter2.a35 = -1;
camsensor_params->asf_data.filter2.a41 = -1;
camsensor_params->asf_data.filter2.a42 = -2;
camsensor_params->asf_data.filter2.a43 = 6;
camsensor_params->asf_data.filter2.a44 = -2;
camsensor_params->asf_data.filter2.a45 = -1;
camsensor_params->asf_data.filter2.a51 = -1;
camsensor_params->asf_data.filter2.a52 = -2;
camsensor_params->asf_data.filter2.a53 = 6;
camsensor_params->asf_data.filter2.a54 = -2;
camsensor_params->asf_data.filter2.a55 = -1;
/* ------ setup asf parameters for BRIGHT LIGHT condition -------------*/
camsensor_params->asf_data.setting[BRIGHT_LIGHT].smoothing_percent = 50;
camsensor_params->asf_data.setting[BRIGHT_LIGHT].lower_threshold = 20;
camsensor_params->asf_data.setting[BRIGHT_LIGHT].upper_threshold = 40;
camsensor_params->asf_data.setting[BRIGHT_LIGHT].sharpen_degree_f1 = 1.0;
camsensor_params->asf_data.setting[BRIGHT_LIGHT].sharpen_degree_f2 = 1.0;
/* ------ setup asf parameters for NORMAL LIGHT condition -------------*/
camsensor_params->asf_data.setting[NORMAL_LIGHT].smoothing_percent = 50;
camsensor_params->asf_data.setting[NORMAL_LIGHT].lower_threshold = 20;
camsensor_params->asf_data.setting[NORMAL_LIGHT].upper_threshold = 40;
camsensor_params->asf_data.setting[NORMAL_LIGHT].sharpen_degree_f1 = 0.8;
camsensor_params->asf_data.setting[NORMAL_LIGHT].sharpen_degree_f2 = 0.8;
/* ------ setup asf parameters for LOW LIGHT condition ----------------*/
camsensor_params->asf_data.setting[LOW_LIGHT].smoothing_percent = 60;
camsensor_params->asf_data.setting[LOW_LIGHT].lower_threshold = 30;
camsensor_params->asf_data.setting[LOW_LIGHT].upper_threshold = 50;
camsensor_params->asf_data.setting[LOW_LIGHT].sharpen_degree_f1 = 0.6;
camsensor_params->asf_data.setting[LOW_LIGHT].sharpen_degree_f2 = 0.6;
#endif /* FEATURE_CAMERA_5x5_ASF */
/* ------------ Auto Focus Config ------------------------- */
/* AF -Auto Focus Parameters */
camsensor_params->af_enable = FALSE;
/* ------------ Default Misc Parmas Config ---------------- */
/* Does the sensor need/use a flash */
#if defined FEATURE_WHITE_LED_FLASH || defined FEATURE_STROBE_FLASH
camsensor_params->support_auto_flash = TRUE;
#else
camsensor_params->support_auto_flash = FALSE;
#endif
/* For sensor device driver that supports night shot mode, it should set
* this variable to true. It should then reduce FPS accordingly when
* camera_nightshot_mode_on is set */
camsensor_params->support_nightshot_mode = FALSE;
/* ------------------ Pixel Clock Config ------------------ */
// The default clock is 24,576,000Hz, while the sensor clock is 24MHz.
(void)camsensor_config_camclk_po(DEFAULT_PIXEL_CLOCK);
/* ----------------- Anti Banding Config ------------------ */
camsensor_params->antibanding_enable = TRUE;
camsensor_params->pixel_clock = DEFAULT_PIXEL_CLOCK;
camsensor_params->pixel_clock_per_line = SENSOR_SXGA_ROW_TIME;
camsensor_params->aec_min_gain_step = 0.0625; // 0.15;
#ifdef FEATURE_CAMERA_LVCM
/* ------------ Vignette Correction Config ---------------- */
camsensor_params->vc_data.vc_enable = FALSE;
camsensor_params->vc_data.intervals = 32;
camsensor_params->vc_data.ev_control = 1;
camsensor_params->vc_data.xc = 736;
camsensor_params->vc_data.yc = 493;
camsensor_params->vc_data.dx = 1280;
camsensor_params->vc_data.dy = 1024;
camsensor_params->vc_data.r_table[0]=0.00000000000000000000;
camsensor_params->vc_data.r_table[1]=8.00000000000000000000;
camsensor_params->vc_data.r_table[2]=15.00000000000000000000;
camsensor_params->vc_data.r_table[3]=29.00000000000000000000;
camsensor_params->vc_data.r_table[4]=36.00000000000000000000;
camsensor_params->vc_data.r_table[5]=43.00000000000000000000;
camsensor_params->vc_data.r_table[6]=50.00000000000000000000;
camsensor_params->vc_data.r_table[7]=64.00000000000000000000;
camsensor_params->vc_data.r_table[8]=78.00000000000000000000;
camsensor_params->vc_data.r_table[9]=85.00000000000000000000;
camsensor_params->vc_data.r_table[10]=99.00000000000000000000;
camsensor_params->vc_data.r_table[11]=127.00000000000000000000;
camsensor_params->vc_data.r_table[12]=134.00000000000000000000;
camsensor_params->vc_data.r_table[13]=141.00000000000000000000;
camsensor_params->vc_data.r_table[14]=148.00000000000000000000;
camsensor_params->vc_data.r_table[15]=162.00000000000000000000;
camsensor_params->vc_data.r_table[16]=211.00000000000000000000;
camsensor_params->vc_data.r_table[17]=218.00000000000000000000;
camsensor_params->vc_data.r_table[18]=232.00000000000000000000;
camsensor_params->vc_data.r_table[19]=316.00000000000000000000;
camsensor_params->vc_data.r_table[20]=351.00000000000000000000;
camsensor_params->vc_data.r_table[21]=421.00000000000000000000;
camsensor_params->vc_data.r_table[22]=491.00000000000000000000;
camsensor_params->vc_data.r_table[23]=526.00000000000000000000;
camsensor_params->vc_data.r_table[24]=540.00000000000000000000;
camsensor_params->vc_data.r_table[25]=603.00000000000000000000;
camsensor_params->vc_data.r_table[26]=694.00000000000000000000;
camsensor_params->vc_data.r_table[27]=729.00000000000000000000;
camsensor_params->vc_data.r_table[28]=736.00000000000000000000;
camsensor_params->vc_data.r_table[29]=820.00000000000000000000;
camsensor_params->vc_data.r_table[30]=862.00000000000000000000;
camsensor_params->vc_data.r_table[31]=883.00000000000000000000;
camsensor_params->vc_data.r_table[32]=897.00000000000000000000;
camsensor_params->vc_data.y_cf_table[0]=1.00000000000000000000;
camsensor_params->vc_data.y_cf_table[1]=1.00000000000000000000;
camsensor_params->vc_data.y_cf_table[2]=1.00802514094575280000;
camsensor_params->vc_data.y_cf_table[3]=1.00802514094575280000;
camsensor_params->vc_data.y_cf_table[4]=1.00802514094575280000;
camsensor_params->vc_data.y_cf_table[5]=1.00802514094575280000;
camsensor_params->vc_data.y_cf_table[6]=1.01134910918000780000;
camsensor_params->vc_data.y_cf_table[7]=1.01590034303775000000;
camsensor_params->vc_data.y_cf_table[8]=1.02420566683707450000;
camsensor_params->vc_data.y_cf_table[9]=1.02628746773009170000;
camsensor_params->vc_data.y_cf_table[10]=1.03561759971774370000;
camsensor_params->vc_data.y_cf_table[11]=1.05569560858385290000;
camsensor_params->vc_data.y_cf_table[12]=1.06302449293090210000;
camsensor_params->vc_data.y_cf_table[13]=1.06849899258846600000;
camsensor_params->vc_data.y_cf_table[14]=1.07541182653272530000;
camsensor_params->vc_data.y_cf_table[15]=1.08859134654561610000;
camsensor_params->vc_data.y_cf_table[16]=1.15053886276877140000;
camsensor_params->vc_data.y_cf_table[17]=1.16243653062122500000;
camsensor_params->vc_data.y_cf_table[18]=1.18208136503838860000;
camsensor_params->vc_data.y_cf_table[19]=1.33592309003532230000;
camsensor_params->vc_data.y_cf_table[20]=1.41652237891108430000;
camsensor_params->vc_data.y_cf_table[21]=1.59639460265018780000;
camsensor_params->vc_data.y_cf_table[22]=1.81428615334479230000;
camsensor_params->vc_data.y_cf_table[23]=1.93390498431351610000;
camsensor_params->vc_data.y_cf_table[24]=1.97218516195415240000;
camsensor_params->vc_data.y_cf_table[25]=2.20534653484773990000;
camsensor_params->vc_data.y_cf_table[26]=2.59879664127667050000;
camsensor_params->vc_data.y_cf_table[27]=2.76081248101195880000;
camsensor_params->vc_data.y_cf_table[28]=2.79234870562590890000;
camsensor_params->vc_data.y_cf_table[29]=3.19182587947898130000;
camsensor_params->vc_data.y_cf_table[30]=3.35720714221919940000;
camsensor_params->vc_data.y_cf_table[31]=3.55167664246143880000;
camsensor_params->vc_data.y_cf_table[32]=3.55167664246143880000;
#endif /* FEATURE_CAMERA_LVCM */
/* ------------ VFE Config -------------------------------- */
camsensor_params->vfeAecAwbConfig.M1 = 16;
camsensor_params->vfeAecAwbConfig.M2 = -16;
camsensor_params->vfeAecAwbConfig.M3 = 16;
camsensor_params->vfeAecAwbConfig.M4 = -16;
camsensor_params->vfeAecAwbConfig.C1 = 256;
camsensor_params->vfeAecAwbConfig.C2 = 0;
camsensor_params->vfeAecAwbConfig.C3 = -256;
camsensor_params->vfeAecAwbConfig.C4 = 512;
camsensor_params->vfeAecAwbConfig.maximumYValue = 255;
camsensor_params->vfeAecAwbConfig.minimumYValue = 0;
/* To pump-up Color correct and compensate for a
too-small luma target. This will work around the
problem that produces saturation in the Color Correction matrix */
camsensor_params->color_correction_bias = 1;
camsensor_params->luma_target = (int)(0.5+(54 / camsensor_params->color_correction_bias)) - (camsensor_params->black_level/4);
/* tolerance defines the acceptable exposure range: i.e. when
exposure can rest and doesn't need to be updated. */
camsensor_params->luma_tolerance = (int)(0.5+(4 / camsensor_params->color_correction_bias));
return TRUE;
} /* camsensor_ov9650_start */
/*===========================================================================
FUNCTION CAMSENSOR_OV9650_SNAPSHOT_CONFIG
DESCRIPTION
Configure the camera sensor and the VFE_CAMIF for
snapshot mode
DEPENDENCIES
None
RETURN VALUE
TRUE if successful
FALSE otherwise
SIDE EFFECTS
None
===========================================================================*/
boolean camsensor_ov9650_snapshot_config
(
camsensor_static_params_type *camsensor_params /* Other config params */
)
{
/* Sensor output data format */
camsensor_params->format = CAMIF_BAYER_B_G;
/* Select discard first frame. */
camsensor_params->discardFirstFrame = TRUE;
/* 3x3 luma filter is always disabled, use ASF in encoding. */
camsensor_params->f3x3LumaFilter.enable = FALSE;
/* CAMIF frame */
camsensor_params->camif_frame_config.pixelsPerLine = camsensor_params->full_size_width;
camsensor_params->camif_frame_config.linesPerFrame = camsensor_params->full_size_height;
/* CAMIF window */
camsensor_params->camif_window_width_config.firstPixel = 0;
camsensor_params->camif_window_width_config.lastPixel = camsensor_params->camif_frame_config.pixelsPerLine - 1;
camsensor_params->camif_window_height_config.firstLine = 0;
camsensor_params->camif_window_height_config.lastLine = camsensor_params->camif_frame_config.linesPerFrame - 1;
#ifdef FEATURE_STROBE_FLASH
camsensor_params->camif_epoch_intr.epoch_line = 1192;
#else
/* Disable the Epoch Interrupt by setting more
* number of lines than in a frame */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -