Platform: ROCKCHIP
OS: Android 6.0
Kernel: 3.10.92
camera_take_picture -> CameraHal_Module.cpp //CameraService收到Service命令后会调用HAL层的拍照接口.
gCameraHals[rk_dev->cameraid]->takePicture -> //cameraid由于区分前后摄像头.CameraHal::takePicture -> CameraHal.cpp
commandThreadCommandQ.put //cmd: CMD_CONTINUOS_PICTURE,单拍和连拍都走这个,只是数量不一样.
CameraHal::commandThread -> thread收到命令后被触发
mDisplayAdapter->pauseDisplay //如果没在录像且是单拍就暂停显示. 另外看代码rk3288部支持recording的时候拍照.
//如果当前preview size和要设置preview size一样就不再重新preview,否则要执行stoppreview -> startpreivew的动作.
mEventNotifier->stopReceiveFrame
mCameraAdapter->stopPreview
mCameraAdapter->startPreview
mDisplayAdapter->startDisplay //当连续拍照的时候,显示也恢复正常,否则会看到画面卡着不动以为死机了.
//preview size一样时作闪光灯控制,rk也没实现,空函数.
mCameraAdapter->flashcontrol
//接下来是单张/多张通用流程
fillPicturInfo //获取jpeg参数,如旋转,gps坐标, jpeg质量, thumbnail, focus length. format固定为V4L2_PIX_FMT_NV12.
mEventNotifier->takePicture ->
&nbs