平台: msm8926
OS: Android 4.4

术语:

ZSL:
Zero Shutter Lag.
ubiFocus:
高通对照片后期的一种处理技术,可以利用多张照片来实现拍照不对焦,拍好之后随便选择对焦点的功能。


ZSL出现背景:

拍照的延时主要分两个方面:
1. 从按下拍照键到照片拍好放到内存里。
2. 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.

因此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:
耗电增加的原因是:
1. Sensor一直以full size输出。
2. AF一直在运行。(未确认)
3. Bus loading因为更大的数据量而更重。


收集的知识点:

  1. NON-ZSL模式,在拍照之前sensor一般输出四分之一尺寸的图片用于预览,按下快门键后sensor会停止输出帧,然后切换到全尺寸模式下,从而进行拍照。而ZSL模式下sensor始终输出全尺寸图片,图片经过VFE处理后被分成两路,一路用于显示,一路用于拍照。在按下快门键时程序会从拍照的帧里面取出一帧,然后编码,所以,ZSL模式下sensor会一直输出帧,拍照比NON-ZSL快。
    2.ZSL和录制video没有关系。
  2. 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的值来组合以及左移得到值的
  3. 是否开ZSL, preview size不会变化,只是因为sensor是full size,所以对应的preview fps也会下降。
  4. 如果原始的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 Fei2014/10/20

[笔记分享] [Camera] msm8926的ZSL功能小结相关推荐

  1. [笔记分享] [Camera] 相机的等效焦距计算

    之前工作学习笔记,分享给大家!

  2. [笔记分享] [Camera] MTK Camera基础知识二

    Platform: MediaTek 色再现流程: 弥散圆: 在焦点前后,光线开始聚集和扩散,点的影像变成模糊的一个扩大的圆,就是弥散圆. 人眼能够最小扁人的圆成为容许弥散圆. 焦深: 焦点前后各有一 ...

  3. [笔记分享] [Camera] 各种相机种类及区别

    之前工作笔记,分享给大家! 成像原理:

  4. [笔记分享] [GPIO] MSM8x39 GPIO 硬件部分小结

    平台: MSM8X39 OS: Android4.4 Kernel: 3.10.28 术语及缩写: TLMM: Top-Level Mode Multiplexer. 此模块提供了一种机制可以让一组G ...

  5. [笔记分享] [Exception] 内核空间异常之流程小结

    平台: MSM8260 OS: Android 2.3.4 Overview 本文主要描述下kernel exception(这里以oops为主线)的flow以及如何对oops进行分析作一个讲解. E ...

  6. [笔记分享] [Camera] MTK Camera AF及tuning

    基本概念: FV: Focus Value, 用来衡量图像AF的清晰度. DOF: Deep Of Field, 景深,表示物距清晰的范围,景深越长表示物距前后清晰的范围越大. 抛物线的顶点即是AF最 ...

  7. 【安信可A9G专题②】A9G在微信公众号上的定位功能笔记分享;

    本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...

  8. 好程序员分享24个canvas基础知识小结

    好程序员分享24个canvas基础知识小结,非常全面详尽,推荐给大家. 现把canvas的知识点总结如下,以便随时查阅. 1.填充矩形 fillRect(x,y,width,height); 2.绘制 ...

  9. android api 相机,具有相机2 API的Android Lollipop上的ZSL功能

    我试图从相机应用程序,相机框架和libcameraservice实施以及相机HAL v3.2规范中了解Android 5.0对ZSL功能的支持. 据我了解,在Android中实现ZSL的方式有两种: ...

  10. Vue + Spring Boot 学习笔记01:实现用户登录功能

    Vue + Spring Boot 学习笔记01:实现用户登录功能 一.创建后端Spring Boot项目Book Management 二.创建前端Vue项目bm-vue 三.修改后端项目Book ...

最新文章

  1. tensorflow tensor 张量 部分采样 切片和索引
  2. Windows Server 2012 从入门到精通系列之如何提高DC持续性?
  3. java中执行js代码
  4. u8 和 char如何转化_如何编写高效率稳定的单片机代码
  5. Django从理论到实战(part12)--应用命名空间和实例命名空间
  6. 项目背景怎么描述_产品经理写简历,如何让「项目经验」更出众?
  7. linux使用flock解决crontab任务冲突
  8. mysql连接编码设置_MySQL基础 - 编码设置
  9. Analysis of variance(ANOVA)
  10. [原]MS SQL表字段自增相关的脚本
  11. 经济学人重磅:数据经济虽好,可是仍需补钙
  12. Setup Factory 卸载时出现Invalid Start mode :archive filename 无法卸载问题
  13. android短信验证码自动填写
  14. 微信支付 H5 版本 PHP
  15. STM32F103的DAC实现播放WAV音乐
  16. 拳皇重生服务器维护,用Kaillera打造拳皇等街机服务器教程
  17. MacBookPro 装win7
  18. 微信语音怎么保存 微信语音导出文件夹教程
  19. STM32学习笔记(16)-数据的保存与毁灭-BKP功能(1)
  20. 华为鸿蒙朱丹丹,8分钟 京东用户喜提全球首台华为鸿蒙系统荣耀智慧屏

热门文章

  1. python数据分析软件包_Python数据分析软件包介绍
  2. swagger注解 详细说明
  3. UE4蓝图版简易背包系统
  4. 造成错误“ORA-12547: TNS:lost contact”的常见原因有哪些?
  5. L73.linux命令每日一练 -- 第十章 Linux网络管理命令 -- dig和host
  6. 计算机的发展共经历了哪几个阶段,1. 计算机的发展经历了哪几个阶段?各阶段的主要特征是什么,计算机的发展经历了哪些阶段?...
  7. Zipf law 定律
  8. dos命令以及制作.bat文件
  9. 毕业季音乐计算机简谱,毕业季简谱(歌词)-贺敬轩演唱-桃李醉春风记谱
  10. Multisim小信号调谐放大器电路仿真