Skip to content

Commit d7cbc38

Browse files
authored
chore(vdo-sys): Chart connections between types (#225)
I'm doing this primarily to get an overview of the constituents of the library and how they are connected for the purpose of reviewing incoming PRs with safe abstractions.
1 parent c99e0e1 commit d7cbc38

File tree

1 file changed

+321
-0
lines changed

1 file changed

+321
-0
lines changed

crates/vdo-sys/README.md

Lines changed: 321 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,321 @@
1+
This section contains a flowchart of how `libvdo` types are connected to each other.
2+
The purpose is to make it easier to understand how the library works,
3+
in particular when contributing to the safe abstraction that sits on top of it.
4+
5+
The flowchart includes all functions that either:
6+
- return a custom type
7+
- takes arguments of two or more distinct, custom types
8+
9+
Additionally these changes have been made to make the chart easier to read:
10+
- The `Map` type is separated into an input type and an output type.
11+
- `Vdo` and `vdo_` prefixes are removed from type and function names respectively.
12+
13+
```mermaid
14+
flowchart LR
15+
%% vdo-buffer.h
16+
%% ...
17+
buffer_new --> Buffer
18+
%% ...
19+
Map --> buffer_new_full
20+
buffer_new_full --> Buffer
21+
%% ...
22+
%% Buffer --> buffer_get_id
23+
%% ...
24+
%% Buffer --> buffer_get_fd
25+
%% ...
26+
%% Buffer --> buffer_get_offset
27+
%% ...
28+
%% Buffer --> buffer_get_capacity
29+
%% ...
30+
%% Buffer --> buffer_is_complete
31+
%% ...
32+
%% Buffer --> buffer_get_opaque
33+
%% ...
34+
%% Buffer --> buffer_get_data
35+
%% ...
36+
Buffer --> buffer_get_frame
37+
buffer_get_frame --> Frame
38+
%% ...
39+
%% vdo-channel.h
40+
%% ...
41+
channel_get --> Channel
42+
%% ...
43+
Map --> channel_get_ex
44+
channel_get_ex --> Channel
45+
%% ...
46+
channel_get_all --> GListStream
47+
%% ...
48+
channel_get_filtered --> GListStream
49+
Map --> channel_get_filtered
50+
%% ...
51+
Channel --> channel_get_info
52+
channel_get_info --> Map'
53+
%% ...
54+
Channel --> channel_get_settings
55+
channel_get_settings --> Map'
56+
%% ...
57+
Channel --> channel_set_settings
58+
Map --> channel_set_settings
59+
%% ...
60+
Channel --> channel_get_stream_profile
61+
Format --> channel_get_stream_profile
62+
channel_get_stream_profile --> Map'
63+
%% ...
64+
Channel --> channel_get_resolutions
65+
Map --> channel_get_resolutions
66+
channel_get_resolutions --> ResolutionSet
67+
%% ...
68+
%% Channel --> channel_get_id
69+
%% ...
70+
%% Channel --> channel_set_framerate
71+
%% ...
72+
%% vdo-error.h
73+
%% ...
74+
%% GError --> error_is_expected
75+
%% ...
76+
%% vdo-frame.h
77+
%% ...
78+
Frame --> frame_get_frame_type
79+
frame_get_frame_type --> FrameType
80+
%% ...
81+
%% Frame --> frame_is_key
82+
%% ...
83+
%% Frame --> frame_shown
84+
%% ...
85+
%% Frame --> frame_get_sequence_nbr
86+
%% ...
87+
%% Frame --> frame_get_timestamp
88+
%% ...
89+
%% Frame --> frame_get_custom_timestamp
90+
%% ...
91+
%% Frame --> frame_get_size
92+
%% ...
93+
%% Frame --> frame_get_header_size
94+
%% ...
95+
%% Frame --> frame_get_fd
96+
%% ...
97+
Frame --> frame_get_extra_info
98+
frame_get_extra_info --> Map'
99+
%% ...
100+
%% Frame --> frame_get_opaque
101+
%% ...
102+
%% Frame --> frame_get_is_last_buffer
103+
%% ...
104+
%% Frame --> frame_set_size
105+
%% ...
106+
Frame --> frame_set_frame_type
107+
FrameType --> frame_set_frame_type
108+
%% ...
109+
Frame --> frame_set_sequence_nbr
110+
%% ...
111+
%% void vdo_frame_set_timestamp (VdoFrame *self, guint64 timestamp)
112+
%% void vdo_frame_set_custom_timestamp (VdoFrame *self, gint64 timestamp)
113+
%% void vdo_frame_set_is_last_buffer (VdoFrame *self, gboolean is_last_buffer)
114+
%% ...
115+
Frame --> frame_set_extra_info
116+
Map --> frame_set_extra_info
117+
%% ...
118+
%% void vdo_frame_set_header_size (VdoFrame *self, gssize size)
119+
%% gpointer vdo_frame_memmap (VdoFrame *self)
120+
%% void vdo_frame_unmap (VdoFrame *self)
121+
%% ...
122+
Frame --> frame_take_chunk
123+
frame_take_chunk --> Chunk
124+
%% ...
125+
Frame --> frame_take_chunk_ex
126+
ChunkOption --> frame_take_chunk_ex
127+
frame_take_chunk_ex --> Chunk
128+
%% ...
129+
%% vdo-map.h
130+
%% ...
131+
vdo_map_new --> Map
132+
%% ...
133+
%% gboolean vdo_map_empty (const VdoMap *self)
134+
%% gsize vdo_map_size (const VdoMap *self)
135+
%% void vdo_map_swap (VdoMap *lhs, VdoMap *rhs)
136+
%% gboolean vdo_map_contains (const VdoMap *self, const gchar *name)
137+
%% gboolean vdo_map_contains_va (const VdoMap *self,...)
138+
%% gboolean vdo_map_contains_strv (const VdoMap *self, const gchar *const *names)
139+
%% ...
140+
%% Map --> map_entry_equals
141+
%% Map --> map_entry_equals
142+
%% ...
143+
%% Map --> map_entry_updates
144+
%% Map --> map_entry_updates
145+
%% ...
146+
%% Map --> map_equals
147+
%% Map --> map_equals
148+
%% ...
149+
%% Map --> map_equals_va
150+
%% Map --> map_equals_va
151+
%% ...
152+
%% Map --> map_equals_stry
153+
%% Map --> map_equals_stry
154+
%% ...
155+
%% void vdo_map_remove (VdoMap *self, const gchar *name)
156+
%% void vdo_map_remove_va (VdoMap *self,...)
157+
%% void vdo_map_remove_strv (VdoMap *self, const gchar *const *names)
158+
%% void vdo_map_clear (VdoMap *self)
159+
%% ...
160+
%% Map --> map_filter_prefix
161+
%% map_filter_prefix --> Map'
162+
%% ...
163+
%% Map --> map_filter_va
164+
%% map_filter_va --> Map'
165+
%% ...
166+
%% Map --> map_filter_strv
167+
%% map_filter_strv --> Map'
168+
%% ...
169+
%% Map --> map_merge
170+
%% Map --> map_merge
171+
%% ...
172+
%% void vdo_map_copy_value (VdoMap *self, const gchar *src, const gchar *dst)
173+
%% void vdo_map_dump (const VdoMap *self)
174+
%% gboolean vdo_map_get_boolean (const VdoMap *self, const gchar *name, gboolean def)
175+
%% gint32 vdo_map_get_int32 (const VdoMap *self, const gchar *name, gint32 def)
176+
%% guint32 vdo_map_get_uint32 (const VdoMap *self, const gchar *name, guint32 def)
177+
%% gint64 vdo_map_get_int64 (const VdoMap *self, const gchar *name, gint64 def)
178+
%% guint64 vdo_map_get_uint64 (const VdoMap *self, const gchar *name, guint64 def)
179+
%% gdouble vdo_map_get_double (const VdoMap *self, const gchar *name, gdouble def)
180+
%% const gchar * vdo_map_get_string (const VdoMap *self, const gchar *name, gsize *size, const gchar *def)
181+
%% gchar * vdo_map_dup_string (const VdoMap *self, const gchar *name, const gchar *def)
182+
%% ...
183+
Map --> map_get_pair32i
184+
map_get_pair32i --> Pair32i
185+
%% ...
186+
Map --> map_get_pair32u
187+
map_get_pair32u --> Pair32u
188+
%% ...
189+
Map --> map_get_quad32i
190+
map_get_quad32i --> Quad32i
191+
%% ...
192+
Map --> map_get_quad32u
193+
map_get_quad32u --> Quad32u
194+
%% ...
195+
%% void vdo_map_set_boolean (VdoMap *self, const gchar *name, gboolean value)
196+
%% void vdo_map_set_int32 (VdoMap *self, const gchar *name, gint32 value)
197+
%% void vdo_map_set_uint32 (VdoMap *self, const gchar *name, guint32 value)
198+
%% void vdo_map_set_int64 (VdoMap *self, const gchar *name, gint64 value)
199+
%% void vdo_map_set_uint64 (VdoMap *self, const gchar *name, guint64 value)
200+
%% void vdo_map_set_double (VdoMap *self, const gchar *name, gdouble value)
201+
%% void vdo_map_set_string (VdoMap *self, const gchar *name, const gchar *value)
202+
%% ...
203+
Map --> map_set_pair32i
204+
Pair32i --> map_set_pair32i
205+
%% ...
206+
Map --> map_set_pair32u
207+
Pair32u --> map_set_pair32u
208+
%% ...
209+
Map --> map_set_quad32i
210+
Quad32i --> map_set_quad32i
211+
%% ...
212+
Map --> map_set_quad32u
213+
Quad32u --> map_set_quad32u
214+
%% ...
215+
%% vdo-stream.h
216+
%% ...
217+
Map --> vdo_stream_rgb_new
218+
Resolution --> vdo_stream_rgb_new
219+
vdo_stream_rgb_new --> Stream
220+
%% ...
221+
Map --> vdo_stream_nv12_new
222+
Resolution --> vdo_stream_nv12_new
223+
vdo_stream_nv12_new --> Stream
224+
%% ...
225+
Map --> vdo_stream_y800_new
226+
Resolution --> vdo_stream_y800_new
227+
vdo_stream_y800_new --> Stream
228+
%% ...
229+
Map --> stream_new
230+
BufferFinalizer --> stream_new
231+
stream_new --> Stream
232+
%% ...
233+
stream_get --> Stream
234+
%% ...
235+
stream_get_all --> GListStream
236+
%% ...
237+
%% guint vdo_stream_get_id (VdoStream *self)
238+
%% gint vdo_stream_get_fd (VdoStream *self, GError **error)
239+
%% gint vdo_stream_get_event_fd (VdoStream *self, GError **error)
240+
%% ...
241+
Stream --> stream_get_info
242+
stream_get_info --> Map'
243+
%% ...
244+
Stream --> stream_get_settings
245+
stream_get_settings --> Map'
246+
%% ...
247+
Stream --> stream_set_settings
248+
Map --> stream_set_settings
249+
%% ...
250+
%% gboolean vdo_stream_set_framerate (VdoStream *self, gdouble framerate, GError **error)
251+
%% ...
252+
Stream --> stream_attach
253+
Map --> stream_attach
254+
%% ...
255+
%% gboolean vdo_stream_start (VdoStream *self, GError **error)
256+
%% ...
257+
Stream --> stream_play
258+
Map --> stream_play
259+
%% ...
260+
%% void vdo_stream_stop (VdoStream *self)
261+
%% gboolean vdo_stream_force_key_frame (VdoStream *self, GError **error)
262+
%% ...
263+
Stream --> stream_buffer_alloc
264+
stream_buffer_alloc --> Buffer
265+
%% ...
266+
Stream --> stream_buffer_unref
267+
Buffer --> stream_buffer_unref
268+
%% ...
269+
Stream --> stream_buffer_enqueue
270+
Buffer --> stream_buffer_enqueue
271+
%% ...
272+
Stream --> stream_get_buffer
273+
stream_get_buffer --> Buffer
274+
%% ...
275+
Map --> stream_to_fd
276+
stream_to_fd --> Stream
277+
%% ...
278+
Map --> stream_snapshot
279+
stream_snapshot --> Buffer
280+
%% ...
281+
Stream --> stream_get_event
282+
stream_get_event --> Map'
283+
%% ...
284+
%% Other
285+
%% ...
286+
GListStream[/GList Stream/] --> Stream
287+
%% Labels (structs)
288+
Buffer[/Buffer/]
289+
Channel[/Channel/]
290+
Chunk[/Chunk/]
291+
Frame[/Frame/]
292+
Map[/Map/]
293+
Map'[/Map/]
294+
MemChunk[/MemChunk/]
295+
Pair32i[/Pair32i/]
296+
Pair32u[/Pair32u/]
297+
Quad32i[/Quad32i/]
298+
Quad32u[/Quad32u/]
299+
Rect[/Rect/]
300+
Resolution[/Resolution/]
301+
ResolutionSet[/ResolutionSet/]
302+
Stream[/Stream/]
303+
%% Labels (enums)
304+
WdrMode{{WdrMode}}
305+
Format{{Format}}
306+
H264Profile{{H264Profile}}
307+
H265Profile{{H265Profile}}
308+
AV1Profile{{AV1Profile}}
309+
RateControlMode{{RateControlMode}}
310+
RateControlPriority{{RateControlPriority}}
311+
FrameType{{FrameType}}
312+
ZipStreamProfile{{ZipStreamProfile}}
313+
ZipStreamGdr{{ZipStreamGdr}}
314+
ChunkType{{ChunkType}}
315+
ChunkOption{{ChunkOption}}
316+
StreamTimestamp{{StreamTimestamp}}
317+
Intent{{Intent}}
318+
StreamEvent{{StreamEvent}}
319+
BufferAccess{{BufferAccess}}
320+
BufferStrategy{{BufferStrategy}}
321+
```

0 commit comments

Comments
 (0)