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

📄 camsensor_ov9650.c

📁 OV9650 settings on Qualcomm
💻 C
📖 第 1 页 / 共 5 页
字号:
	 *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 + -