Android Camera子系统之源码View
本文基于Android 4.2.2+Linux3.6.9+SAMA5D3 SoC从源码的角度审视Android Camera子系统。
应用层
Androd原生Camera应用
/system/app/LegacyCamera.apk
http://androidxref.com/4.2.2_r1/xref/packages/apps/LegacyCamera/
Camera应用调用Android应用框架提供的Camera API
import android.hardware.Camera;
import android.hardware.Camera.Area;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.Face;
import android.hardware.Camera.FaceDetectionListener;
import android.hardware.Camera.Parameters;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.Size;
应用框架层
/system/framework/framework.jar
http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/hardware/Camera.java
JNI
/system/lib/libandroid_runtime.so
http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/jni/android_hardware_Camera.cpp
Camera Service
Binder Proxy
Camera Service
Binder Proxy是Camera Client和Camera Service之间通信的统一通道。Camera Client和Camera
Service都会调用Camera Service Binder Proxy。
/system/lib/libcamera_client.so
头文件文件夹
http://androidxref.com/4.2.2_r1/xref/frameworks/av/include/camera/
源文件文件夹
http://androidxref.com/4.2.2_r1/xref/frameworks/av/camera/
Camera Service
Camera Service与Camera HAL交互,通过Binder Service的方式为Camera
Client提供服务。
/system/lib/libcameraservice.so
http://androidxref.com/4.2.2_r1/xref/frameworks/av/services/camera/libcameraservice/
HAL
Camera硬件抽象层定义并实现供Camera Service调用的标准接口,保证Camera硬件的功能可以正常发挥。
/system/lib/hw/camera.sama5d3-ek.so
头文件
http://androidxref.com/4.2.2_r1/xref/hardware/libhardware/include/hardware/camera.h
源文件文件夹
https://github.com/Android4SAM/platform_hardware_atmel/tree/master/sama5d3/camera
Kernel
Driver
Camera驱动程序与Camera硬件和HAL交互。Camera硬件和驱动程序必须支持YV12和NV21图像格式以支持预览和录像。
The V4L2driver for Atmel Linux
https://github.com/Android4SAM/linux-at91/blob/android4sam_v4.0/drivers/media/video/atmel-isi.c
SoC Cameradriver for Omni Vision 2640 sensor
https://github.com/Android4SAM/linux-at91/blob/android4sam_v4.0/drivers/media/video/ov2640.c
最新文章
- Android驱动开发前的准备(四)
- html5 绘制图片 drawImage
- 《30天自制操作系统》笔记(03)——使用Vmware
- [Office][C#] NPOI、OpenXML SDK、OpenOffice.org SDK 写入资料到 EXCEL 档案[转]
- Stern-Brocot树 及 法里级数分析
- 12-27cell常用的属性
- noip2007提高组题解
- [React Native] Build a Separator UI component
- Qt 智能指针学习(7种QT的特有指针)
- STL之iterator(迭代器)
- 2016-11-10linux
- skia入门
- github上forck一个分支之后,如何和主分支同步
- sqlserver怎么将查询出来的数据存到新的数据库表中
- 17、Map接口及其常用子类(Hashtable、HashMap、WeakHashMap)
- UWP 手绘视频创作工具技术分享系列 - 手绘视频导出
- python包安装和使用机制
- Python校验用户名是否合法示例
- Learning-MySQL【4】:表的操作管理和 MySQL 的约束控制
- 自己实现数据结构系列一---ArrayList
热门文章
- Codeforces 825F - String Compression
- oracle free space
- [HDU4336]Card Collector(min-max容斥,最值反演)
- 八. 输入输出(IO)操作8.文件的压缩处理
- 四. Java继承和多态7. Java static关键字
- 每天一个liunx命令2之rz和sz命令
- red-lang
- centos下mysql集群初尝试
- Android使用FFMpeg实现推送视频直播流到服务器
- UVa 1218 - Perfect Service