zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    ArrayList源码分析_JDK1.8.0_191
    LinkedList源码分析_JDK1.8.0_191
    HashMap源码分析_JDK1.8.0_191
    生产者消费者模型Java实现
    INT整型最小值取负还是本身的问题
    字节跳动面试题
    go sqlx操作数据库问题
    go gin框架调用cmd运行python脚本问题
    Android视频播放不能使用自研播放器
    mac python版本错误问题以及pip版本错误(anacanda)
  • 原文地址:https://www.cnblogs.com/bluestorm/p/11051253.html
Copyright © 2011-2022 走看看