Camera Framework学习笔记(1)

                                                             主要架构

首先,对Camera架构有个大概的认识。

《Camera Framework学习笔记(1)》

Android的Camera架构基本由Camera APP, Application Framework(Camera.java), Camera JNI, MediaFramework(CameraService) , Camera HAL, Camera driver等部分构成。

其中CameraService以上部分都基本和硬件没有关系,Camera HAL以下则和硬件关系比较密切。

《Camera Framework学习笔记(1)》


整体来看,CameraService的架构属于Client/Server架构。Camera APP属于Client端, Camera Service属于Server端。 Camera App和Camera Service通过IPC调用(Binder传输数据), SurfaceFinger和CameraService也是通过IPC调用来实现的。CameraService是运行在MediaServer进程的。SurfaceFlinger也是一个单独进程。

《Camera Framework学习笔记(1)》

《Camera Framework学习笔记(1)》


                                           2 Camera.java要点

Camera.java提供了操作Camera的几大功能:

1.open 和 release功能。

2.操纵Camera的参数的功能。

3.Preview功能:

a.将Preview的显示到屏幕上或者是SurfaceTexture上。

b.获取Camera preview Frame的callstack

4.Capture

1.onShutter, JPEG, RAW, ” PostView”

5. Lock 和Unlock功能

6. Focus,Zoom及FaceDetection功能

几个辅助小类:

Camera Parameter

camera parameter的设置,包含white balance, color effect, exposure, scene mode, anti-banding, focus mode, preview size, picture size。

Camera.CameraInfo

每个摄像头的前置后置信息,Camera 照片的orientation

Camera.Size

Camera 照片的高和宽

Camera.Face

face-id, 左眼,有眼,嘴的坐标及超出的区域

Camera.Area

高和宽,Auto Focus, Auto Exposure, Auto White Balance的区域(3A)

                                         Camera JNI的要点

1.创建一个持久的Context用于传递Callback从native到Java。

2.持有Java Camera, Face及Area的引用。

3.如果APP请求传递Preview Frame的Copy, 完成 native到Java的 Buffer copy。

4. 从Java Memory Heap分配JPEG照片的内存。

                                    CameraService的要点

1.管理 Camera硬件资源

2.运行在MediaServer进程中

3.是一个SharedLibrary libCameraService.so

主要功能:

a android.permissions.Camera的检查

b 确保只有一个Client 链接到一个Camera硬件对象

c 确保进程连接到一个Camera硬件对象

d 返回Callback给APP层

e 通过Binder访问

f 可用的摄像头个数

g Camera摄像头信息细节

              本文基本属于对exposing the android camera stack一文的部分翻译,由于本文是后续文章的基础。因此载于此。在这里感谢原文作者的PPT,总结架构确实挺好。

英文原版见:https://thenewcircle.com/s/post/1268/Exposing_the_Android_Camera_Stack.pdf


                                  




    原文作者:移动开发
    原文地址: https://my.oschina.net/shaorongjie/blog/203451
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞