- camera process_capture_request 流程
- 在使用默认设置中的一组设置和至少一个输出流(已由Framework较早注册),framework构造并向HAL发送第一个捕获请求。framework调用
camera_device方法ops调用camera3_device_ops的process_capture_request开始下发request请求,通过camera3_device_t-> ops-> process_capture_request()发送到HAL。 在准备好发送下一个request前,HAL必须返回此调用。
在camera3_capture_request_t的camera3_stream_buffer_t数组中提供的buffer_handle_t可能是新的,而且在任意给的request中,HAL层都没见这个buffer_handle_t。
- 结构体
- 代码分析
-
在文件CameraDeviceSession.cpp
中CameraDeviceSession::processCaptureRequest方法中processOneCaptureRequest(requests[i]);循环request,然后再CameraDeviceSession::processOneCaptureRequest中调用
mDevice->ops->process_capture_request(mDevice, &halRequest);发送到hal层 -
文件CameraDevice3SessionImpl.cpp中onProcessCaptureRequest方法里面,先
pAppStreamManager->removeBufferCache(cachesToRemove);,然后再调用
pAppStreamManager->submitRequest(requests, appRequests); -
文件AppStreamMgr.cpp中。,实现了removeBufferCache中实现mFrameHandler->uncacheBuffer(cache.streamId,
cache.bufferId);,在submitRequest方法中实现
mRequestHandler->submitRequest(captureRequests, rRequests); -
文件AppStreamMgr.RequestHandler.cpp中 err =
createRequests(captureRequests, rRequests); 和 err =
registerRequests(rRequests);
request种类