目录
3.camera3_capture_request_t这个数据结构体还有用吗
前言
本文主要记录些Camera Servie的一些问题的理解,对几个问题进行讨论,一些参考Camera Service
一、代码位置
服务的进程:/system/bin/cameraserver,进程创建
二、关系类图
几个关键接口:
setStreamingRequestList
三、问题讨论
1.Buffer是在哪分配的,它是怎么轮转的
1.Buffer的数量
status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t
*sessionParams,
camera3_stream_configuration *config, const std::vector<uint32_t>& bufferSizes)
通过HAL获取返回值
dst->max_buffers = src.v3_2.maxBuffers;
2.Buffer轮转
通过threadloop完成轮转
bool Camera3Device::RequestThread::threadLoop()
请求之间等待的地方应该是buffer轮转过程中是在getbuffer那里等待
prepareHalRequests()
mRepeatingRequests如果不为空,就将mRepeatingRequests里的request插入到mRequestQueue下发队列里
3.Buffer分配
outputStream->getBuffer(&outputBuffers->editItemAt(j), captureRequest->mOutputSurfaces