digraph {
rankdir=LR;
node [shape=plaintext];
subgraph cluster__vp8_ivf {
label="Vp8Ivf";
graph[style=dotted];
vp8_ivf__seq [label=<
pos | size | type | id |
0 | 4 | | magic1 |
4 | 2 | u2le | version |
6 | 2 | u2le | len_header |
8 | 4 | | codec |
12 | 2 | u2le | width |
14 | 2 | u2le | height |
16 | 4 | u4le | framerate |
20 | 4 | u4le | timescale |
24 | 4 | u4le | num_frames |
28 | 4 | u4le | unused |
32 | ... | Blocks | image_data |
repeat num_frames times |
>];
subgraph cluster__blocks {
label="Vp8Ivf::Blocks";
graph[style=dotted];
blocks__seq [label=<
pos | size | type | id |
0 | ... | Block | entries |
>];
}
subgraph cluster__block {
label="Vp8Ivf::Block";
graph[style=dotted];
block__seq [label=<
pos | size | type | id |
0 | 4 | u4le | len_frame |
4 | 8 | u8le | timestamp |
12 | len_frame | | framedata |
>];
}
}
vp8_ivf__seq:image_data_type -> blocks__seq [style=bold];
vp8_ivf__seq:num_frames_type -> vp8_ivf__seq:image_data__repeat [color="#404040"];
blocks__seq:entries_type -> block__seq [style=bold];
block__seq:len_frame_type -> block__seq:framedata_size [color="#404040"];
}