Android7.1 [Camera] Camera Hal 源代码分析(一)

源码平台:rk3399

 

命令行ls看下源代码的结构

hardware/rockchip/camera/CameraHal:

Android7.1 [Camera] Camera Hal 源代码分析(一)_第1张图片

lib目录

Android7.1 [Camera] Camera Hal 源代码分析(一)_第2张图片

源代码的文件看起来有点多,我们看看Android.mk文件,

Android7.1 [Camera] Camera Hal 源代码分析(一)_第3张图片

这些文件最终编译成camera.rk30board.so库文件。这些文件中主要是CameraHal_Module.cpp和CameraHal.cpp这两个文件组织起整个hal层其他文件。

CameraSocAdapter.cpp\CameraUSBAdapter.cpp\CameraIspAdapter.cpp\CameraIspSOCAdapter.cpp\FakeCameraAdapter.cpp这5个adapter都是继承自CameraAdapter.cpp,主要实现针对具体的camera的操作,比如开始预览,停止预览,闪光控制,设置参数等等,实现的这些操作都会在CameraHal.cpp中调用。

CameraHalUtil.cpp是个工具类,里面有一些比如YUV420 旋转的函数,作为一个工具。

全部文件的大概调用框架:

Android7.1 [Camera] Camera Hal 源代码分析(一)_第4张图片

从上图的框架看,canera server通过与CameraHal_Module建立和Hal层的连接后,CmaeraHal会通过SensorListener返回消息给上层。

如果上层要预览或者拍照,要通过binder机制向Hal层发送命令,Hal层MessageQueue.cpp的消息队列获取到上层的命令后,会通过消息通知器通知CameraHal,CameraHal有一个CommandThread接收命令,收到命令后,最终会下达命令给对应的Adapter去执行对于的动作。

 

你可能感兴趣的:(RK-Android,Camera)