Sfoglia il codice sorgente

vlc: add decoder_device diagram

Alexandre Janniaux 5 anni fa
commit
e00d558431
1 ha cambiato i file con 226 aggiunte e 0 eliminazioni
  1. 226 0
      decoder_device.dox

+ 226 - 0
decoder_device.dox

@@ -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];
+}