我试图从相机应用程序,相机框架和libcameraservice实施以及相机HAL v3.2规范中了解Android 5.0对ZSL功能的支持.
据我了解,在Android中实现ZSL的方式有两种:
>框架实施的ZSL
>在Kitkat中,仅支持框架实现的ZSL,这非常简单. (将双向流用于ZSL)
>在Lollipop中,他们非常清楚地记录了实施ZSL的框架,
http://androidxref.com/5.0.0_r2/xref/hardware/libhardware/include/hardware/camera3.h#1076
>应用程序实现的ZSL
>在Lollipop中,他们引入了应用程序实现的ZSL概念.根据可用的文档,ZSL已被公开为应用程序的功能
http://androidxref.com/5.0.0_r2/xref/system/media/camera/docs/docs.html
>在android.request.availableCapabilities下,它表示:
对于ZSL,“支持RAW_OPAQUE作为输出/输入格式”
在Lollipop中,通过Camera1 API应用程序,框架实现的ZSL与Kitkat的工作方式相同.
但是,我在Camera2 API应用程序代码的任何地方都找不到如何启用应用程序/框架实现的ZSL.
http://androidxref.com/5.0.0_r2/xref/packages/apps/Camera2/
因此,问题是:
>是否可以使用Camera2 API应用程序在Android L中启用框架实现的ZSL?
>是否可以通过Camera2 API应用程序在没有RAW_OPAQUE支持的情况下在Android L中启用应用程序实现的ZSL?
>如果可能是1或2,则Camera HAL需要什么才能在Android L中启用ZSL?
任何帮助表示赞赏.
解决方法:
>不,框架层ZSL仅适用于旧的相机API.
>否,除非按原样使用输出缓冲区,而无需将其发送回相机设备进行最终处理就足够了.
更长的答案是必须从最初的camera2实现中删除ZSL重新处理API,因此,目前尚无应用程序以任何格式(RAW_OPAQUE或其他格式)将缓冲区发送回相机设备的方法.
camera3.h中的某些文档相对于实际的框架实现也具有误导性-框架仅支持IMPLEMENTATION_DEFINED BIDIRECTIONAL ZSL,并且未在任何地方使用RAW_OPAQUE.
编辑:从Android 6.0 Marshmallow开始,camera2 API中支持它的设备(例如Nexus 6P / 5X)提供了reprocessing.