Camera Framework学习笔记(1)
2014-02-26 23:52
656 查看
主要架构
首先,对Camera架构有个大概的认识。
Android的Camera架构基本由Camera APP, Application Framework(Camera.java), Camera JNI, MediaFramework(CameraService) , Camera HAL, Camera driver等部分构成。
其中CameraService以上部分都基本和硬件没有关系,Camera HAL以下则和硬件关系比较密切。
整体来看,CameraService的架构属于Client/Server架构。Camera APP属于Client端, Camera Service属于Server端。 Camera App和Camera Service通过IPC调用(Binder传输数据), SurfaceFinger和CameraService也是通过IPC调用来实现的。CameraService是运行在MediaServer进程的。SurfaceFlinger也是一个单独进程。
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
首先,对Camera架构有个大概的认识。
Android的Camera架构基本由Camera APP, Application Framework(Camera.java), Camera JNI, MediaFramework(CameraService) , Camera HAL, Camera driver等部分构成。
其中CameraService以上部分都基本和硬件没有关系,Camera HAL以下则和硬件关系比较密切。
整体来看,CameraService的架构属于Client/Server架构。Camera APP属于Client端, Camera Service属于Server端。 Camera App和Camera Service通过IPC调用(Binder传输数据), SurfaceFinger和CameraService也是通过IPC调用来实现的。CameraService是运行在MediaServer进程的。SurfaceFlinger也是一个单独进程。
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
相关文章推荐
- 由vbs sort引发.NET Framework之间的关系说明
- C#难点逐个击破(6):C#数据类型与.net framework数据类型
- Yii PHP Framework实用入门教程(详细介绍)
- 微软NET Framework 3.5 Beta 1 发布 提供下载
- 使用Entity Framework(4.3.1版本)遇到的问题整理
- 解决了Ajax、MySQL 和 Zend Framework 的乱码问题
- WINDOWS + WAMP + Zend Framework 配置步骤分享
- camera录制视频的缩略图获取原理心得分享
- zend framework文件上传功能实例代码
- 工厂模式在Zend Framework中应用介绍
- android系统在静音模式下关闭camera拍照声音的方法
- .NET Framework SQL Server 数据提供程序连接池
- Zend framework处理一个http请求的流程分析
- zend framework多模块多布局配置
- Android变形(Transform)之Camera使用介绍
- .net框架(framework)版本不匹配的解决方法
- android开发教程之framework增加字符串资源和图片等resource资源
- .Net Compact Framework开发小技巧 推荐
- JFinal独创Db + Record模式示例
- ASP.NET的HTTP请求处理方法?