两种工作模式:
Camera flash led分flash和torch两种模式。
Flash: 拍照时闪光灯瞬间亮一下的情况,电流比较大,目前是1000mA,最大电流不能超过led的最大承受能力。
Torch: 只用于录video或者拿led当手电筒的情况,电流不能太大,例如现在用的是200mA。
保护机制:
有flash timeout, video watchdog timer, short led fault detection等。
另外还有电池低电压的时候降流的功能。
Flash的开启需要先从torch过渡,也就是电流慢慢增大,减小冲击。
闪光灯打闪的条件有两个,分别是AE_MODE和flash mode,这两个参数来决定打闪过程,flash mode有四个状态auto、off、on、torch。
- Auto则是满足requireFlash时,在capture请求中会进行打闪。对应的Flash mode为Flash_Mode_single。对应的ae_mode为on_auto_flash。
- On状态时拍照就会打闪,需要capture中请求代码的参数为:flashmode为flash_mode_single,对应的ae mode为always_flash
- Off为关闭闪光灯状态,capture不做打闪,flash mode为OFF,对应的ae mode为mode_on即可。
- TORCH 状态的Flash_Mode 为Mode_TORCH。
打闪流程: - 整个流程分为预闪-af收敛-主闪,预闪结束的标志是ae状态返回pepcapture,此状态返回也就标志这aetrigger结束,然后预闪结束。
- 接着就是af收敛,af状态达到设定的几种状态后即可,此过程不做flash mode参数的下发,然后进行主拍摄流程。
- 主拍摄过程需要再次下发flash_mode,参数下发后进行capture就会进行主闪打闪。
- 拍照完成后需要释放ae、af状态。主要设置他们的状态为cancel状态。
打闪原理
当lux_index 值超过wled_trigger_idx参数值时将使用LED闪光灯。会有2次闪光,第一次是预览(聚光)模式,第二次是拍摄(闪光)模式。
启用自动闪光后,聚光模式(少量LED电流)照射目标以计算完全闪光模式的AE和AF。在部分版本中wled trigger代替wled_trigger_index,有一对trigger start lux index 和led trigger end lux index.增大wled trigger index参数的值,可以在更暗的场景中触发LEd闪光灯,减少该值,可以在更亮的场景中触发LED闪光灯。
确定预闪光与主闪光的驱动电流,这些值均可从闪光灯驱动程序代码中获取。计算驱动电流比率为预闪光灯电流/主闪光灯电流。然后将确定的比率降低约30%作为Flux Hi的初始估算值。目前Android软件仅支持Flux Hi,Flux Med和Flux Low不要调试。保持AEC Preview Flux 始终为1。如果快照曝光过度,增大Flux Hi,如果曝光不足,减小Flux Hi。