- 相机简述
-
监听和枚举相机设备
get_number_of_cameras、get_camera_characteristic
-
打开设备并连接监听器
connect、open
-
配置目标使用情形的输出(static、capture、video)
configure_stream
-
为目标使用情形创建请求
捕获/重复请求和连拍process_capture_request
-
接受结果metadata和图片数据
proces_capture_result
-
切换使用情形时,重新配置目标是用情形输出
framework调用结构体camera_device方法ops调用结构体camera3_devcie_ops的configure_streams方法配流,camera3_device_t-ops->configure_streams(),并把input stream & output stream的列表作为参数送到Hal层。
-
结构体
hardware/libhardware/include/hardware/camera3.h
camera3_device_ops_t 映射函数指针操作: hardware/libhardware/modules/camera/3_0/Camera.cpp
-
代码流程
-
CameraDeviceSession.cpp文件中CameraDeviceSession::configureStreams调用mDevice->ops->configure_streams(mDevice,
&stream_list);调用到Camera3Device.cpp文件 -
Camera3Device.cpp文件中创建buffer,mInterface->configureStreams(sessionBuffer,
&config, bufferSizes);开始配流。HalInterface::configureStreams具体实现中调用
mHidlSession_3_4->configureStreams_3_4调用到CameraDevice3SessionImpl.cpp -
在CameraDevice3SessionImpl.cpp文件中,onConfigureStreamsLocked锁定需要配置的流
-
文件CameraDevice3SessionImpl.cpp,获取getSafeAppStreamManager这个对象,通过这个
pAppStreamManager->beginConfigureStreams开始配流,然后配置pPipelineModel->configure(pParams);
//配置pipeline -
AppStreamMgr.cpp文件mConfigHandler->beginConfigureStreams方法调用到AppStreamMgr.ConfigHandler.cpp中
-
文件AppStreamMgr.ConfigHandler.cpp中检测stream、设置OperationMode、生成MetaStreamInfo,并把前者加到Stream中