【Camera专题】OV8856预览或者拍照时 瞬间闪屏

平台:msm8909w

问题一

我们调试效果的同事,在调试效果时,需要固定gain,line,fl_line值,
这样强行固定,会出现问题。
在打开相机和拍照的时候,瞬间闪屏,闪的颜色红色或者绿色等等其他颜色!

static int32_t ov8856_z8856ah_new_fill_exposure_array(uint16_t gain, uint32_t line,
  uint32_t fl_lines, int32_t luma_avg, uint32_t fgain,
  struct msm_camera_i2c_reg_setting* reg_setting)
{
  int32_t rc = 0; 
  uint16_t reg_count = 0; 
  uint16_t i = 0; 
 +char value1[10];
+ char ln_count[10];
 +char gain_new[10];// based on 64
+ property_get("debug.enable.lock", value1, "0");
+ property_get("debug.ae.ln", ln_count, "0");
+ property_get("debug.ae.gain", gain_new, "0");
 
+ int ae_lock = atoi(value1)>0?1:0;
 
+ if(ae_lock){
+  fl_lines = atoi(ln_count);
+  line = fl_lines;
+  gain = atoi(gain_new);
+ }
   ···
  }

解决办法
通过观察fl_line和line的关系,我们发现,
fl_line和line始终差8,于是

+ if(ae_lock){
+  fl_lines = atoi(ln_count);
+  line = fl_lines-8;
+  gain = atoi(gain_new);
+ }

这样子能达到效果调试的要求,也不会带来闪屏问题。
这个差8是怎么来的呢?

static struct msm_sensor_exp_gain_info_t exp_gain_info = {
  .coarse_int_time_addr = 0x3500,
  .global_gain_addr = 0x3508,
  .vert_offset = 8,
};

这里的vert_offset=8,就是fl_line和line的差值!
ps:
fl_line是frame_length_lines,代表帧长,用于调整帧率
line是line_cont:曝光行数,可以理解为曝光时间,用于调整亮度
gain相对于sensor来说是模拟增益,用于调整亮度

在这里插入图片描述

问题二

正常使用过程中,OV8856 预览或者拍照时 瞬间闪屏。
问题根源:

  {
    .x_output = 3264,
    .y_output = 2448,
    .line_length_pclk = 1932,
    .frame_length_lines = 2482,
    .vt_pixel_clk = 144000000,
    .op_pixel_clk = 288000000,
    .binning_factor = 1, 
    .max_fps = 30.0,
    .min_fps = 7.5, 
    .mode = SENSOR_DEFAULT_MODE,
  },

op_pixel_clk = 288000000>平台的最大限制266MHz

解决方案:

Stay hungry,Stay foolish!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值