Camera ZSL

camera的ZSL是什么
ZSL:
Zero Shutter Lag. 零快门延迟
ubiFocus:
高通对照片后期的一种处理技术,可以利用多张照片来实现拍照不对焦,拍好之后随便选择对焦点的功能。
原文链接:https://blog.csdn.net/kris_fei/article/details/77057473
术语:
ZSL:
Zero Shutter Lag.
ubiFocus:
高通对照片后期的一种处理技术,可以利用多张照片来实现拍照不对焦,拍好之后随便选择对焦点的功能。

ZSL出现背景:
拍照的延时主要分两个方面:

从按下拍照键到照片拍好放到内存里。
APK的后期处理。
对于BSP这边,能优化的主要是第一条,因此ZSL的出现正如其名Zero Shutter Lag一样,是为了减少拍照时间的。

拍照流程:
来对比下Normal snapshot和ZSL的工作框图。
 Normal flow:

 

此模式下,只有preview通道在工作,当做snapshot的时候,preveiw停止,snapshot通道被创建,然后拍照,再编码为JPEG。 接着preview通道又被重新打开工作。

ZSL flow:

 

此模式下,preview和snapshot通道一起工作,当拍照的时候,直接从snapshot通道获取数据并编码为JPEG,省去了创建snapshot通道的过程。

Code调用流程:
Non-ZSL preview/snapshot:

 

Preview的时候只创建Meta, Preview stream.
Snapshot时先stop preview channel, 然后创建capture channel(包含Meta, Postveiw, Snapshot stream),再start.
ZSL preview/snapshot:

 

Preview时,除了Meta和Preview stream之外还创建了Snapshot stream。
Snapshot时,直接从snapshot stream里获取图片,而不用创建capture channel了

Single Shot/Burst mode:
在ZSL模式下,snapshot通道前后几帧数据会被保存到buffer里,在拍照的时候我们可以取一帧数据作普通拍照用,也可以取多帧数来作后期处理,例如ubiFocus.
1
因此snapshot又分为两种mode: Single Shot 和 Burst mode.
Single Shot:

 

当你按下拍照键之后,系统会根据延迟时间来计算出应该使用之前的哪一帧。
Burst mode:

 

当你按下拍照键之后,系统会根据取出多帧数据。(是否可以间隔取还不确定)

Mode获取和设置:

 

 

 

 

限制:
Lens rolloff configuration: (未确认)
在Non-ZSL模式时,rolloff在preview的时候被配置一次,在snapshot的时候会根据AWB重新配置。
在ZSL模式下,由于preview和snapshot不会切换,所以没办法重新配置rolloff。为了解决此问题,rolloff会在ZSL stream start的时候在每个SOF_ACK后动态更新。
Zoom: (未确认)
常规preview下,zoom通过VFE来缩放sensor的output来达到想要的FOV和preview dimensions。Snapshot时,VFE输出full FOV。由JPEG来完成裁剪和缩放图片 。
ZSL模式下,VFE连续输出preview和full size的snapshot output而无法做缩放,此时由MDP完成。Snapshot时,还是由JPEG来完成裁剪和缩放。
Lower FPS:
由于开启了ZSL, preview FPS也因为受带宽的限制无法达到很高。
Power:
耗电增加的原因是:

Sensor一直以full size输出。
AF一直在运行。(未确认)
Bus loading因为更大的数据量而更重。
收集的知识点:
NON-ZSL模式,在拍照之前sensor一般输出四分之一尺寸的图片用于预览,按下快门键后sensor会停止输出帧,然后切换到全尺寸模式下,从而进行拍照。而ZSL模式下sensor始终输出全尺寸图片,图片经过VFE处理后被分成两路,一路用于显示,一路用于拍照。在按下快门键时程序会从拍照的帧里面取出一帧,然后编码,所以,ZSL模式下sensor会一直输出帧,拍照比NON-ZSL快。
2.ZSL和录制video没有关系。
preview/capture/zsl mode下的size setting都走modules_sensor_set_new_resolution()函数,设置哪种模式的size说明如下:
mask 2 means preview mode.
mask c means capture mode
mask a means zsl mode.
通过enum cam_stream_type_t的值来组合以及左移得到值的

是否开ZSL, preview size不会变化,只是因为sensor是full size,所以对应的preview fps也会下降。
如果原始的picture size 是10M, full size是13M,那么开启ZSL之后,无论picture size设置多少,sensor output size都会被设置成13M。
Reference:
80-N5970-1_B_Camera_ZSL.pdf
80-NF499-2_C_Cam_FE_Code_Walkthrough_Linux_SW.pdf
Kris Fei
上面原文链接:https://blog.csdn.net/kris_fei/article/details/77057473
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值