android: camera_request: Lifetime of a Camera3RequestDescriptor

This commit provides a sketch regarding Camera3RequestDescriptor
which aids tracking each capture reuqest placed by the android
framework to libcamera HAL.

Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Umang Jain 2022-01-04 12:22:01 +05:30
parent bf0154697b
commit e68e0f1ed2

View file

@ -18,6 +18,94 @@ using namespace libcamera;
*
* A utility class that groups information about a capture request to be later
* reused at request complete time to notify the framework.
*
*******************************************************************************
* Lifetime of a Camera3RequestDescriptor tracking a capture request placed by
* Android Framework
*******************************************************************************
*
*
* Android Framework
*
*
* camera3_capture_request_t
*
* Requested output streams
* stream1 stream2 stream3 ...
*
*
*
* libcamera HAL
*
* CameraDevice
*
* processCaptureRequest(camera3_capture_request_t request)
*
* - Create Camera3RequestDescriptor tracking this request
* - Streams requiring post-processing are stored in the
* pendingStreamsToProcess map
* - Add this Camera3RequestDescriptor to descriptors' queue
* CameraDevice::descriptors_
*
* - Queue the capture request to libcamera core libcamera core
*
* - Capture from Camera
*
* - Emit
* Camera::requestComplete
* requestCompleted(Request *request)
*
* - Check request completion status
*
* - if (pendingStreamsToProcess > 0)
* Queue all entries from pendingStreamsToProcess
* else
* completeDescriptor()
*
*
*
*
* CameraStream1 CameraStream2 ....
*
*
*
* PostProcessorWorker PostProcessorWorker
*
* +------------------+ +------------------+
* | PostProcessor | | PostProcessor |
* | process() | | process() |
* | | | |
* | Emit | | Emit |
* | processComplete | | processComplete |
* | | | |
* +-----------------+ +-----------------+
*
*
*
*
*
*
*
* +---------------------------------------+ +--------------+
* | CameraDevice | | |
* | | | |
* | streamProcessingComplete() | | |
* | | | |
* | - Check and set buffer status | | .... |
* | - Remove post+processing entry | | |
* | from pendingStreamsToProcess | | |
* | | | |
* | - if (pendingStreamsToProcess.empty())| | |
* | completeDescriptor | | |
* | | | |
* +---------------------------------------+ +--------------+
*
*
*
* +-------------+
* | | - PostProcessorWorker's thread
* | |
* +-------------+
*/
Camera3RequestDescriptor::Camera3RequestDescriptor(