1 理解整理Camera软件框架及代码调用流程
1.1 Camera API1 和 HAL1(旧版)
参考资料:
理解整理:
旧版Camera的整体代码架构分为以下四个部分:
-
Application层:
- Camera应用,所在目录:
package/apps/Camera
- Camera应用,所在目录:
-
Framework层:
-
Java API:提供给App调用的接口。
- 类名:
android.hardware.Camera
- 所在目录:
frameworks/base/core/java/android/hardware/Camera.java
- 主要功能:链接或断开Camera服务,设置参数,开始/停止预览、拍照等。
- 类名:
-
Camera的JAVA native调用部分(JNI):
- 所在目录:
frameworks/base/core/jni/android_hardware_Camera.cpp
- 主要功能:承接Java代码到C++代码的桥梁。
- 所在目录:
-
Camera框架的client部分:
- 所在目录:
frameworks/av/camera/Camera.cpp
和CameraBase.cpp
- 主要功能:作为Camera框架的Client部分,与Service部分通过Binder机制进行通讯。
- 所在目录:
-
Camera框架的service部分:
- 所在目录:
frameworks/av/services/camera/libcameraservice/CameraService.cpp
- 主要功能:
- CameraService是独立进程,开机启动。
- CameraService服务端的Client(API1)部分通过
CameraHardwareInterface
(Device1)调用到HAL层。所在目录frameworks/av/services/camera/libcameraservice/api1/CameraClient.cpp - CameraHardwareInterface(Device1)所在目录frameworks/av/services/camera/libcameraservice/device1/CameraHardwareInterface.cpp
- 所在目录:
-
-
HAL层:
- 所在目录:
hardware/rockchip/camera/CameraHal
- 主要功能:
- CameraHal是根据CameraHardwareInterface规定的接口,依据V4l2规范实例化底层硬件驱动,使用ioctl方式调用驱动,驱动相关的driver,实现对camera硬件的操作。
- 所在目录: