本文基于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

最新文章

  1. Android驱动开发前的准备(四)
  2. html5 绘制图片 drawImage
  3. 《30天自制操作系统》笔记(03)——使用Vmware
  4. [Office][C#] NPOI、OpenXML SDK、OpenOffice.org SDK 写入资料到 EXCEL 档案[转]
  5. Stern-Brocot树 及 法里级数分析
  6. 12-27cell常用的属性
  7. noip2007提高组题解
  8. [React Native] Build a Separator UI component
  9. Qt 智能指针学习(7种QT的特有指针)
  10. STL之iterator(迭代器)
  11. 2016-11-10linux
  12. skia入门
  13. github上forck一个分支之后,如何和主分支同步
  14. sqlserver怎么将查询出来的数据存到新的数据库表中
  15. 17、Map接口及其常用子类(Hashtable、HashMap、WeakHashMap)
  16. UWP 手绘视频创作工具技术分享系列 - 手绘视频导出
  17. python包安装和使用机制
  18. Python校验用户名是否合法示例
  19. Learning-MySQL【4】:表的操作管理和 MySQL 的约束控制
  20. 自己实现数据结构系列一---ArrayList

热门文章

  1. Codeforces 825F - String Compression
  2. oracle free space
  3. [HDU4336]Card Collector(min-max容斥,最值反演)
  4. 八. 输入输出(IO)操作8.文件的压缩处理
  5. 四. Java继承和多态7. Java static关键字
  6. 每天一个liunx命令2之rz和sz命令
  7. red-lang
  8. centos下mysql集群初尝试
  9. Android使用FFMpeg实现推送视频直播流到服务器
  10. UVa 1218 - Perfect Service