本讲是android camera专题系列的第34讲,我们介绍android camera2 api专题的ae手动曝光。
更多资源:
资源 | 描述 |
---|---|
在线课程 | |
知识星球 | 星球名称:深入浅出android camera 星球id: 17296815 |
极客笔记圈 |
iso/gain 控制
static metadata
cameracharacteristics | 说明 |
---|---|
sensor_info_sensitivity_range | 1.当前camera sensor gain可调整的范围 2.min<=100, max >=800 3.在hardware level为full的camera设备上,必须包含该metadata |
sensor_max_analog_sensitivity | 1.当前camera sensor支持的最大模拟gain 2.当设置的sensor_sensitivity小于等于该值时,全部用模拟gain,大于该值时会通过数字gain来填 3.在hardware level为full的camera设备上,必须包含该metadata |
control_post_raw_sensitivity_boost_range | 1.当前isp gain可调整的范围 2.如果当前设备不支持raw format buffer的输出,该值为null 3.如果当前设备支持raw format buffer的输出,则必须填该值,如果不支持调整isp gain,该range会填成[100, 100] |
capturerequest
capturerequest | 说明 |
---|---|
sensor_sensitivity | 1.设置给sensor的gain(增益)大小,这里的gain值符合标准iso 12232:2006 2.这里的gain是total gain,可能会被camera hal拆成模拟gain和数字gain设置给sensor 3.设置的值hal不一定刚好能用,也就是可能会有精度误差,camera hal最找一个不大于目标值且与目标值最接近的设置给sensor 4.手动ae模式下生效,自动ae该值会被ae算法的结果覆盖 5.在支持postrawsensitivityboost的设备上,图像最终的gain是sensor_sensitivity乘以postrawsensitivityboost |
control_post_raw_sensitivity_boost | 1.该值表示camera sensor输出raw图给isp后,isp在yuv/jpeg图像上额外应用的gain值,对raw format buffer没有影响 2.设置的值hal不一定刚好能用,也就是可能会有精度误差,camera hal最找一个不大于目标值且与目标值最接近的值进行设置 3.手动ae模式下生效,自动ae该值会被ae算法的结果覆盖 4.图像最终被应用的gain值 yuv/jpeg:sensor_sensitivity * control_post_raw_sensitivity_boost raw:sensor_sensitivity |
captureresult
captureresult | 说明 |
---|---|
sensor_sensitivity | 实际生效的sensor gain,自动ae时这个值会填当前正在使用的 |
control_post_raw_sensitivity_boost | 实际生效的isp gain,自动ae时这个值会填当前正在使用的 |
exposure time曝光时间控制
参数 | 说明 |
---|---|
cameracharacteristics#sensor_info_exposure_time_range | 1.camera sensor曝光时间可调整的范围,单位是ns 2.min <= 100 us 3.在hardware level为full的camera设备上,max >= 100ms |
capturerequest#sensor_exposure_time | 1.曝光时间,也就是每个像素暴露在光线下的时间,单位ns 2.手动ae模式下生效,自动ae该值会被ae算法的结果覆盖 |
captureresult#sensor_exposure_time | 实际生效的曝光时间 |
frame duration控制
参数 | 说明 |
---|---|
cameracharacteristics# sensor_info_max_frame_duration |
1.当前sensor支持的最大frame duration,单位是ns, 也就是能输出的最小帧率 2.最小的frame duration跟size和format有关,需要从这里获取streamconfigurationmap.getoutputminframeduration(int, size) |
capturerequest# sensor_frame_duration |
1.相邻两帧曝光开始的时间间隔,单位是ns 2.手动ae模式下生效,自动ae该值会被ae算法的结果覆盖 |
captureresult# sensor_frame_duration |
实际生效的frame duration |