文档开发者中心
我的

Android P Camera架构之交互

1. Camera交互相关类

1.1 核心类

  • CameraManager

  • CameraDevice

  • Camera3Device

  • CameraService

  • CameraProviderManager

    这些类构成了Camera交互的核心功能。核心类的详细功能可以参考前一篇中的类图。

    其中,CameraDevice是相机设备的抽象,基于HAL的版本,存在不同版本(源码中有1.0/3.2/3.3和3.4版本)的接口和实现,主要功能有获取相机属性、打开相机、检测相机状态等功能。

    Camera3Device是对HAL版本大于3(即包含了3.2/3.3/3.4版本)的相机设备的抽象。

    1.2 Callbacks

  • AvailabilityCallback,提供了相机是否可用状态的回调

  • StateCallback,提供了相机配置、连接、打开、关闭等状态的回调

  • CameraDeviceCallbacks,提供了相机拍摄、结果返回等状态的回调

  • CameraServiceListener,提供了相机状态、触摸状态等状态的回调

    这些回调或**,在与相机初始化或建立连接时传递到下层,供下层在对应状态发生变化时进行回调。是上下层级之间互相调用的关键。

    1.3 Capture

  • CameraCaptureSession,是CameraDevice相机拍摄会话的管理类,可以处理预览、拍摄或处理图像的请求

  • CaptureRequest,客户端创建的拍摄请求,包含设置和输出

  • CaptureResult,拍摄结果,在拍摄后由CaptureCallback进行后处理

  • CaptureCallback,负责处理拍摄状态变化的回调

    这些类是相机拍摄的操作管理类,会根据用户的操作、相机设备的配置进行拍摄、后处理等。

    1.4 Streams

  • Camera3InputStream,处理相机设备的输入流

  • Camera3OutputStream,处理相机设备的输出流

  • Camera3StreamBufferListener,相机设备流的Buffer变化的**,包含输入流和输出流

    这些类主要是将相机设备和用户的操作使用流的方式进行传输,从而显示和控制相机的画面和操作。

    2. Camera核心交互

  • Camera的两个核心功能就是预览和拍照。上图示意了通过CameraDevice进行的预览和拍照的核心交互。

    可以看到,在CameraDevice中维护了一个Request Queue,来统一管理CaptureRequest,保证发起的Request能够先进先出。

    同时在硬件层,相机设备会按照顺序处理CaptureRequest,然后发送到输出设备(Configured output surfaces)进行预览,当结束拍摄时,会回调onCaptureCompletet()方法来生成CaptureResult。

    3. Camera整体交互

上图是将核心交互流程展开后的预览和拍照示意图。其中详细展示了Camera在应用层、框架层和硬件(驱动)层之间的交互,省略了服务层和硬件抽象层(HAL),下面会单独介绍。

4. Camera HAL层交互

上图是服务层的Camera3Device相机设备与HAL层之间进行交互的示意。可以看到在Camera3Device中维护着输入输出请求队列、输入输出流。

HAL层逐个处理从Camera3Device传入的请求,过程包括配置、图像捕获、读取和处理,并将输出流和处理结果返回给Camera3Device。

其中在HAL层还存在一个相机管道,管道包含一些组件的实现,负责对相机拍摄的图像进行处理,例如3A算法、处理控件等。见下图。


By-HW ZCX

点赞
8
收藏
9
回复
9
分享
举报
浏览3608 编辑于2020-07-31 07:10未知归属地
全部评论
最多点赞
最新发布
最早发布

这么好的帖子,不支持一下怎么可以?


9楼回复于2019-08-19 07:41 未知归属地

像楼主学习,我也要多多发帖


8楼回复于2019-08-18 08:39 未知归属地

感谢楼主分享,支持一下


7楼回复于2019-08-16 04:11 未知归属地

整天看帖子,好歹评论一下哦!


6楼回复于2019-08-16 04:06 未知归属地

评论在前10,就是胜利


5楼回复于2019-08-15 06:11 未知归属地

这回复,太及时了,必须给路遇颁个最佳劳模奖


4楼回复于2019-08-14 10:50 未知归属地

这个解答我点赞,实用。


3楼回复于2019-08-12 11:26 未知归属地

养成好习惯,看帖必回复!


2楼回复于2019-08-12 11:20 未知归属地

收藏一下,这个图片不显示!

1楼回复于2019-08-11 09:53 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

目录 收起
1. Camera交互相关类
1.1 核心类
1.2 Callbacks
1.3 Capture
1.4 Streams
2. Camera核心交互
3. Camera整体交互
4. Camera HAL层交互
了解社区公约,与您携手共创和谐专业的开发者社区。