|
@@ -0,0 +1,226 @@
|
|
|
|
+digraph picture_pipeline {
|
|
|
|
+ label="Initialization dependencies of elements";
|
|
|
|
+
|
|
|
|
+ subgraph cluster_environment {
|
|
|
|
+ label="Graphics environment";
|
|
|
|
+ style=dotted;
|
|
|
|
+
|
|
|
|
+ {
|
|
|
|
+ decoderdevice [label="vlc_decoder_device_t"];
|
|
|
|
+ window [label="vout_window_t"];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ subgraph cluster_picture_chain {
|
|
|
|
+ label="Picture pipeline";
|
|
|
|
+ labelloc="b";
|
|
|
|
+ margin="10,40";
|
|
|
|
+ rank=same;
|
|
|
|
+
|
|
|
|
+ {
|
|
|
|
+ rank=same;
|
|
|
|
+
|
|
|
|
+ decoder [label="decoder_t"];
|
|
|
|
+ filter1 [label="filter_t"];
|
|
|
|
+ filter2 [label="filter_t"];
|
|
|
|
+ display [label="vout_display_t"];
|
|
|
|
+
|
|
|
|
+ edge[style=invis,minlen=5];
|
|
|
|
+ decoder -> filter1 -> filter2 -> display;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ subgraph cluster_context_chain {
|
|
|
|
+ node [style=filled,color=white,shape=box];
|
|
|
|
+ {rank = same;
|
|
|
|
+ videocontext0 [label="vlc_video_context_t"];
|
|
|
|
+ videocontext1 [label="vlc_video_context_t"];
|
|
|
|
+ videocontext2 [label="vlc_video_context_t"];}
|
|
|
|
+
|
|
|
|
+ label="video context pipeline";
|
|
|
|
+ color="grey";
|
|
|
|
+ style="filled";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ decoder -> videocontext0;
|
|
|
|
+ filter1 -> videocontext1;
|
|
|
|
+ filter2 -> videocontext2;
|
|
|
|
+
|
|
|
|
+ videocontext0 -> filter1;
|
|
|
|
+ videocontext1 -> filter2;
|
|
|
|
+ videocontext2 -> display;
|
|
|
|
+
|
|
|
|
+ window -> decoderdevice;
|
|
|
|
+ window -> display [constraint=false];
|
|
|
|
+
|
|
|
|
+ decoderdevice -> decoder;
|
|
|
|
+ decoderdevice -> filter1;
|
|
|
|
+ decoderdevice -> filter2;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+digraph picture_pipeline {
|
|
|
|
+ label="Push pipeline";
|
|
|
|
+
|
|
|
|
+ subgraph cluster_picture_chain {
|
|
|
|
+ label="Picture pipeline";
|
|
|
|
+ labelloc="b";
|
|
|
|
+ margin="10,40";
|
|
|
|
+ rank=same;
|
|
|
|
+
|
|
|
|
+ {
|
|
|
|
+ rank=same;
|
|
|
|
+
|
|
|
|
+ { node [shape=box];
|
|
|
|
+ decoder [label="decoder_t"];
|
|
|
|
+ filter1 [label="filter_t"];
|
|
|
|
+ filter2 [label="filter_t"];
|
|
|
|
+ display [label="vout_display_t"]; }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ picture0 [label="picture_t"];
|
|
|
|
+ picture1 [label="picture_t"];
|
|
|
|
+ picture2 [label="picture_t"];
|
|
|
|
+
|
|
|
|
+ { edge[style=invis];
|
|
|
|
+ decoder -> filter1 -> filter2 -> display; }
|
|
|
|
+
|
|
|
|
+ decoder -> picture0;
|
|
|
|
+ filter1 -> picture1;
|
|
|
|
+ filter2 -> picture2;
|
|
|
|
+
|
|
|
|
+ picture0 -> filter1;
|
|
|
|
+ picture1 -> filter2;
|
|
|
|
+ picture2 -> display;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ subgraph cluster_context_chain {
|
|
|
|
+ node [style=filled,color=white,shape=box];
|
|
|
|
+ {rank = same;
|
|
|
|
+ videocontext0 [label="vlc_video_context_t"];
|
|
|
|
+ videocontext1 [label="vlc_video_context_t"];
|
|
|
|
+ videocontext2 [label="vlc_video_context_t"];}
|
|
|
|
+
|
|
|
|
+ label="video context pipeline";
|
|
|
|
+ labelloc="t";
|
|
|
|
+ color="grey"
|
|
|
|
+ style="filled"
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ videocontext0 -> picture0;
|
|
|
|
+ videocontext1 -> picture1;
|
|
|
|
+ videocontext2 -> picture2;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+digraph picture_pipeline {
|
|
|
|
+ graph[splines=ortho];
|
|
|
|
+ label="Push pipeline";
|
|
|
|
+ compound=true;
|
|
|
|
+
|
|
|
|
+ subgraph cluster_decoder {
|
|
|
|
+ label="Decoder";
|
|
|
|
+ decoder [label="decoder_t"];
|
|
|
|
+ videocontext0_0 [label="vlc_video_context_t"];
|
|
|
|
+ videocontext0_1 [label="vlc_video_context_t"];
|
|
|
|
+
|
|
|
|
+ { edge[style="invis"];
|
|
|
|
+ decoder -> videocontext0_0 -> videocontext0_1; }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ subgraph cluster_filter1 {
|
|
|
|
+ label="Filter 1";
|
|
|
|
+ filter1 [label="filter_t"];
|
|
|
|
+ videocontext1_0 [label="vlc_video_context_t"];
|
|
|
|
+ videocontext1_1 [label="vlc_video_context_t"];
|
|
|
|
+
|
|
|
|
+ { edge[style="invis"];
|
|
|
|
+ filter1 -> videocontext1_0 -> videocontext1_1; }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ subgraph cluster_filter2 {
|
|
|
|
+ label="Filter 2";
|
|
|
|
+ filter2 [label="filter_t"];
|
|
|
|
+ videocontext2_0 [label="vlc_video_context_t"];
|
|
|
|
+
|
|
|
|
+ { edge [style="invis"];
|
|
|
|
+ filter2 -> videocontext2_0; }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ subgraph cluster_decoder_pictures {
|
|
|
|
+ label="Pictures from decoder";
|
|
|
|
+ node[shape=box];
|
|
|
|
+ picture0_0 [label="picture_t"];
|
|
|
|
+ picture0_1 [label="picture_t"];
|
|
|
|
+ picture0_2 [label="picture_t"];
|
|
|
|
+
|
|
|
|
+ { edge[constraint=false];
|
|
|
|
+ picture0_0 -> videocontext0_0;
|
|
|
|
+ picture0_1 -> videocontext0_0;
|
|
|
|
+ picture0_2 -> videocontext0_1; }
|
|
|
|
+
|
|
|
|
+ { edge[style="invis"];
|
|
|
|
+ picture0_0 -> picture0_1 -> picture0_2; }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ subgraph cluster_filter1_pictures {
|
|
|
|
+ label="Pictures from filter 1";
|
|
|
|
+ node[shape=box];
|
|
|
|
+ picture1_0 [label="picture_t"];
|
|
|
|
+ picture1_1 [label="picture_t"];
|
|
|
|
+ picture1_2 [label="picture_t"];
|
|
|
|
+
|
|
|
|
+ { edge[constraint=false];
|
|
|
|
+ picture1_0 -> videocontext1_0;
|
|
|
|
+ picture1_1 -> videocontext1_0;
|
|
|
|
+ picture1_2 -> videocontext1_1; }
|
|
|
|
+
|
|
|
|
+ { edge[style="invis"];
|
|
|
|
+ picture1_0 -> picture1_1 ->picture1_2; }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ subgraph cluster_filter2_pictures {
|
|
|
|
+ label="Pictures from filter 2";
|
|
|
|
+ node[shape=box];
|
|
|
|
+ picture2_0 [label="picture_t"];
|
|
|
|
+
|
|
|
|
+ { edge[constraint=false];
|
|
|
|
+ picture2_0 -> videocontext2_0; }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ subgraph cluster_vout {
|
|
|
|
+ label="Video output";
|
|
|
|
+ display [label="vout_display_t"];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ edge[constraint=false,minlen=8];
|
|
|
|
+ decoder -> picture0_0[lhead=cluster_decoder_pictures];
|
|
|
|
+ //decoder -> picture0_0;
|
|
|
|
+ //decoder -> picture0_1;
|
|
|
|
+ //decoder -> picture0_2;
|
|
|
|
+
|
|
|
|
+ picture0_0 -> filter1[ltail=cluster_decoder_pictures];
|
|
|
|
+ //picture0_0 -> filter1;
|
|
|
|
+ //picture0_1 -> filter1;
|
|
|
|
+ //picture0_2 -> filter1;
|
|
|
|
+
|
|
|
|
+ filter1 -> picture1_0[lhead=cluster_filter1_pictures];
|
|
|
|
+ //filter1 -> picture1_0;
|
|
|
|
+ //filter1 -> picture1_1;
|
|
|
|
+ //filter1 -> picture1_2;
|
|
|
|
+
|
|
|
|
+ picture1_0 -> filter2[ltail=cluster_filter2_pictures];
|
|
|
|
+ //picture1_0 -> filter2;
|
|
|
|
+ //picture1_1 -> filter2;
|
|
|
|
+ //picture1_2 -> filter2;
|
|
|
|
+
|
|
|
|
+ filter2 -> picture2_0[lhead=cluster_filter2_pictures];
|
|
|
|
+
|
|
|
|
+ picture2_0 -> display[ltail=cluster_filter2_pictures];
|
|
|
|
+}
|