android Camera 之 ZSL
ZSL的概念
ZSL (zero shutter lag) 中文名称为零延时拍照,是为了减少拍照延时,让拍照&回显瞬间完成的一种技术。
Single Shot
当开始预览后,sensor 和 VFE 会产生 preview 和 snapshot帧, 而最新的snapshot 帧数据会被存储在buffer 中。当拍照被触发,系统计算实际的拍照时间,找出在buffer中的相应帧,然后返回帧到用户,这就是所谓的“ZERO”。
系统计算出shutter lag的时间,然后把某个帧认作是拍照实时的那帧数据。
ZSL的实现机制
因为ZSL实现需要实现一下几点:
1. 一个surfaceView用于预览
2. 一个队列缓存snapshot的数据
3. 拍照动作获取队列某桢数据作为拍照数据输出
4. 输出的照片需要YUV->JPEG数据的转码
首先说一下ZSL功能在android4.4和android5.0上实现的区别。
Android4.4的实现对于2)步和3)步都是在HAL层实现,HAL层在维护缓存队列,当接收倒take_picture 命令时直接取得某桢缓存数据,进行转码,然后以正常拍照的流程利用@link android.hardware.Camera.PictureCallback通知应用层拍照的数据。
Android5.0的实现对于2)步和3)步都是在应用层实现,应用层在启动预览时给HAL层传递2个surface给HAL层,HAL层利用其中一个surface用于预览数据填充,一个surface用于填充snapshot的数据填充。应用层不断读取surface中snapshot的数据去维护一个缓存队列,当用户执行take_picture,读取缓存队列的数据作为拍照数据。
Android5.0中的应用层已经有实现ZSL类:
src/com/android/camera/one/v2/OneCameraZslImpl.java
ref:
android 5.0 Camera 之 ZSL说明
https://blog.csdn.net/qq160816/article/details/50728349
ZSL(zero shutter lag) 简介
http://blog.chinaunix.net/uid-7213935-id-5753468.html
最新文章
- 解决:Cannot get http://gerrit.googlesource.com/git-repo/clone.bundle
- 读取微博feed伪代码
- MySQL的Sleep进程
- jexus
- 解决IE apk变成zip:Android 手机应用程序文件下载服务器Nginx+Tomcat配置解决方法
- SQL Server数据库中还原孤立用户的方法集合
- Flex 日期选择器控件
- git项目实战常用workflow和命令
- 我常用的VBS方法(QTP)
- iOS:图像和点击事件
- Google 域名的秘密
- POJ 2305 Basic remains(进制转换)
- 按钮特效-Enter键自动提交表单
- unity getcomponentsinchildren 翻船
- Codeforce C. Bus
- Scrollbar
- MySQL 独立表空间恢复案例
- PyQt5--Signal&;Slot
- Activity的onPause()、onStop()和onDestroy()里要做的事情
- Angular 4 路由时传递数据