camera学习---HAL代码流程
16lz
2021-01-25
主要参考了MTK文档和Camera Open 调用流程blog
下面两张是MTK文档中的关于camera HAL的架构图表。
Application:
packages/apps/Camera2/src/com/android/camera/***
Framework:
/frameworks/base/core/java/android/hardware/Camera.java
Android Runtime:
frameworks/base/core/jni/android_hardware_Camera.cpp
C/C++ Libraries:
Client: frameworks/av/camera/CameraBase.cpp frameworks/av/camera/Camera.cpp frameworks/av/camera/ICamera.cpp frameworks/av/camera/aidl/android/hardware/ICamera.aidl frameworks/av/camera/aidl/android/hardware/ICameraClient.aidlServer: frameworks/av/camera/cameraserver/main_cameraserver.cpp frameworks/av/services/camera/libcameraservice/CameraService.cpp frameworks/av/services/camera/libcameraservice/api1/CameraClient.cpp frameworks/av/camera/aidl/android/hardware/ICameraService.aidl
HAL:
HAL 1: frameworks/av/services/camera/libcameraservice/device1/CameraHardwareInterface.hHAL 3:(主要学习了 HAL 1 的机制,HAL 3 以后再补充) frameworks/av/services/camera/libcameraservice/device3/***
从Application往下层层调用到驱动层,获得的数据又会反向传递给上层。
注意本地库这一层中,涉及到一个 C/S 结构,即通过客户端与服务端的交互来传递指令与数据,客户端与服务端是不同的进程,它们之间需要依靠 IPC Binder 机制进行通讯。
接下来从 Camera.java 中的 Open() 方法开始,把打开摄像头的一个流程(从 Framework 到 HAL)捋一下。
从源码开始进行分析,按照 Framework -> Android Runtime -> C/C++ Libraries -> HAL 的顺序去分析整个调用流程。
更多相关文章
- Nginx系列教程(二)| 一文带你读懂Nginx的正向与反向代理
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- android L 的开机动画流程
- Android(安卓)Camera 调用流程
- fanfou(饭否) android客户端 代码学习2
- Android使用jsp+sevlet+mysql实现简单的前后台登录系统
- Android(安卓)WebView useragent
- facebook继续关注android移动阵营,悄然发布‘Facebook页面信使’
- Android(安卓)Camera调用流程