@@ -18,6 +18,94 @@ using namespace libcamera;
18
18
*
19
19
* A utility class that groups information about a capture request to be later
20
20
* 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
+ * +-------------+
21
109
*/
22
110
23
111
Camera3RequestDescriptor::Camera3RequestDescriptor (
0 commit comments