现象
- 温度过高时户外出现过曝,夏天出现的频率更高
- 图像高温下出现偏绿的情况
- 设备崩溃,崩溃在thermal
- 界面上调节自动快门的下限图像上不生效
排查方式
- 增加thermal level的打印,可以在QCamera2HWI.cpp中的updateThermalLevel中增加thermal_level的打印
- 打开sensor,stats模块的打印,
logcat|grep fps
,查看是否有帧率有异常,比如说负数 - 此时如果打开骁龙相机,会出现异常而打不开
原因
温控策略中的bug
QCamera2HWI.cpp中的updateThermalLevel是对不同温度等级实现帧率控制,温度比较高,实行降帧策略。
其中的calcThermalLevel
是根据温度等级计算目标的帧率。当在QCAMERA_THERMAL_SHUTDOWN
模式下,却没有对目标帧率进行赋值,adjustPreviewFpsRange
函数就将没有赋初值的帧率设置下去了,导致异常。
这个异常的设置不会影响到sensor的采集帧率,也不会影响到hal层每帧回调的输出帧率,但是会影响到stats模块,导致最大曝光行等参数错误,随后写入sensor的曝光时间出错,最终导致图像或者设备异常。
解决方案
- 去除温度对帧率的控制代码
- 注释掉updateThermalLevel函数中的内容
- 注释掉setPreviewFpsRange函数中
QCAMERA_THERMAL_ADJUST_FPS
模式下对帧率的控制
- 联系驱动提高ISP温度上限