Skip to content

Commit e68e0f1

Browse files
author
Umang Jain
committed
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 <[email protected]> Reviewed-by: Laurent Pinchart <[email protected]> Reviewed-by: Kieran Bingham <[email protected]>
1 parent bf01546 commit e68e0f1

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

src/android/camera_request.cpp

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,94 @@ using namespace libcamera;
1818
*
1919
* A utility class that groups information about a capture request to be later
2020
* reused at request complete time to notify the framework.
21+
*
22+
*******************************************************************************
23+
* Lifetime of a Camera3RequestDescriptor tracking a capture request placed by
24+
* Android Framework
25+
*******************************************************************************
26+
*
27+
*
28+
* Android Framework
29+
* │
30+
* │ ┌──────────────────────────────────┐
31+
* │ │camera3_capture_request_t │
32+
* │ │ │
33+
* │ │Requested output streams │
34+
* │ │ stream1 stream2 stream3 ... │
35+
* │ └──────────────────────────────────┘
36+
* ▼
37+
* ┌─────────────────────────────────────────────────────────────┐
38+
* │ libcamera HAL │
39+
* ├─────────────────────────────────────────────────────────────┤
40+
* │ CameraDevice │
41+
* │ │
42+
* │ processCaptureRequest(camera3_capture_request_t request) │
43+
* │ │
44+
* │ - Create Camera3RequestDescriptor tracking this request │
45+
* │ - Streams requiring post-processing are stored in the │
46+
* │ pendingStreamsToProcess map │
47+
* │ - Add this Camera3RequestDescriptor to descriptors' queue │
48+
* │ CameraDevice::descriptors_ │
49+
* │ │ ┌─────────────────────────┐
50+
* │ - Queue the capture request to libcamera core ────────────┤►│libcamera core │
51+
* │ │ ├─────────────────────────┤
52+
* │ │ │- Capture from Camera │
53+
* │ │ │ │
54+
* │ │ │- Emit │
55+
* │ │ │ Camera::requestComplete│
56+
* │ requestCompleted(Request *request) ◄───────────────────────┼─┼──── │
57+
* │ │ │ │
58+
* │ - Check request completion status │ └─────────────────────────┘
59+
* │ │
60+
* │ - if (pendingStreamsToProcess > 0) │
61+
* │ Queue all entries from pendingStreamsToProcess │
62+
* │ else │ │
63+
* │ completeDescriptor() │ └──────────────────────┐
64+
* │ │ │
65+
* │ ┌──────────────────────────┴───┬──────────────────┐ │
66+
* │ │ │ │ │
67+
* │ ┌──────────▼────────────┐ ┌───────────▼─────────┐ ▼ │
68+
* │ │CameraStream1 │ │CameraStream2 │ .... │
69+
* │ ├┬───┬───┬──────────────┤ ├┬───┬───┬────────────┤ │
70+
* │ ││ │ │ │ ││ │ │ │ │
71+
* │ │▼───▼───▼──────────────┤ │▼───▼───▼────────────┤ │
72+
* │ │PostProcessorWorker │ │PostProcessorWorker │ │
73+
* │ │ │ │ │ │
74+
* │ │ +------------------+ │ │ +------------------+│ │
75+
* │ │ | PostProcessor | │ │ | PostProcessor |│ │
76+
* │ │ | process() | │ │ | process() |│ │
77+
* │ │ | | │ │ | |│ │
78+
* │ │ | Emit | │ │ | Emit |│ │
79+
* │ │ | processComplete | │ │ | processComplete |│ │
80+
* │ │ | | │ │ | |│ │
81+
* │ │ +--------------│---+ │ │ +--------------│---+│ │
82+
* │ │ │ │ │ │ │ │
83+
* │ │ │ │ │ │ │ │
84+
* │ └────────────────┼──────┘ └────────────────┼────┘ │
85+
* │ │ │ │
86+
* │ │ │ │
87+
* │ │ │ │
88+
* │ ▼ ▼ │
89+
* │ +---------------------------------------+ +--------------+ │
90+
* │ | CameraDevice | | | │
91+
* │ | | | | │
92+
* │ | streamProcessingComplete() | | | │
93+
* │ | | | | │
94+
* │ | - Check and set buffer status | | .... | │
95+
* │ | - Remove post+processing entry | | | │
96+
* │ | from pendingStreamsToProcess | | | │
97+
* │ | | | | │
98+
* │ | - if (pendingStreamsToProcess.empty())| | | │
99+
* │ | completeDescriptor | | | │
100+
* │ | | | | │
101+
* │ +---------------------------------------+ +--------------+ │
102+
* │ │
103+
* └────────────────────────────────────────────────────────────────────────────────────┘
104+
*
105+
* +-------------+
106+
* | | - PostProcessorWorker's thread
107+
* | |
108+
* +-------------+
21109
*/
22110

23111
Camera3RequestDescriptor::Camera3RequestDescriptor(

0 commit comments

Comments
 (0)