decoder_device.dox 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. digraph picture_pipeline {
  2. label="Initialization dependencies of elements";
  3. subgraph cluster_environment {
  4. label="Graphics environment";
  5. style=dotted;
  6. {
  7. decoderdevice [label="vlc_decoder_device_t"];
  8. window [label="vout_window_t"];
  9. }
  10. }
  11. subgraph cluster_picture_chain {
  12. label="Picture pipeline";
  13. labelloc="b";
  14. margin="10,40";
  15. rank=same;
  16. {
  17. rank=same;
  18. decoder [label="decoder_t"];
  19. filter1 [label="filter_t"];
  20. filter2 [label="filter_t"];
  21. display [label="vout_display_t"];
  22. edge[style=invis,minlen=5];
  23. decoder -> filter1 -> filter2 -> display;
  24. }
  25. subgraph cluster_context_chain {
  26. node [style=filled,color=white,shape=box];
  27. {rank = same;
  28. videocontext0 [label="vlc_video_context_t"];
  29. videocontext1 [label="vlc_video_context_t"];
  30. videocontext2 [label="vlc_video_context_t"];}
  31. label="video context pipeline";
  32. color="grey";
  33. style="filled";
  34. }
  35. }
  36. decoder -> videocontext0;
  37. filter1 -> videocontext1;
  38. filter2 -> videocontext2;
  39. videocontext0 -> filter1;
  40. videocontext1 -> filter2;
  41. videocontext2 -> display;
  42. window -> decoderdevice;
  43. window -> display [constraint=false];
  44. decoderdevice -> decoder;
  45. decoderdevice -> filter1;
  46. decoderdevice -> filter2;
  47. }
  48. digraph picture_pipeline {
  49. label="Push pipeline";
  50. subgraph cluster_picture_chain {
  51. label="Picture pipeline";
  52. labelloc="b";
  53. margin="10,40";
  54. rank=same;
  55. {
  56. rank=same;
  57. { node [shape=box];
  58. decoder [label="decoder_t"];
  59. filter1 [label="filter_t"];
  60. filter2 [label="filter_t"];
  61. display [label="vout_display_t"]; }
  62. picture0 [label="picture_t"];
  63. picture1 [label="picture_t"];
  64. picture2 [label="picture_t"];
  65. { edge[style=invis];
  66. decoder -> filter1 -> filter2 -> display; }
  67. decoder -> picture0;
  68. filter1 -> picture1;
  69. filter2 -> picture2;
  70. picture0 -> filter1;
  71. picture1 -> filter2;
  72. picture2 -> display;
  73. }
  74. subgraph cluster_context_chain {
  75. node [style=filled,color=white,shape=box];
  76. {rank = same;
  77. videocontext0 [label="vlc_video_context_t"];
  78. videocontext1 [label="vlc_video_context_t"];
  79. videocontext2 [label="vlc_video_context_t"];}
  80. label="video context pipeline";
  81. labelloc="t";
  82. color="grey"
  83. style="filled"
  84. }
  85. }
  86. videocontext0 -> picture0;
  87. videocontext1 -> picture1;
  88. videocontext2 -> picture2;
  89. }
  90. digraph picture_pipeline {
  91. graph[splines=ortho];
  92. label="Push pipeline";
  93. compound=true;
  94. subgraph cluster_decoder {
  95. label="Decoder";
  96. decoder [label="decoder_t"];
  97. videocontext0_0 [label="vlc_video_context_t"];
  98. videocontext0_1 [label="vlc_video_context_t"];
  99. { edge[style="invis"];
  100. decoder -> videocontext0_0 -> videocontext0_1; }
  101. }
  102. subgraph cluster_filter1 {
  103. label="Filter 1";
  104. filter1 [label="filter_t"];
  105. videocontext1_0 [label="vlc_video_context_t"];
  106. videocontext1_1 [label="vlc_video_context_t"];
  107. { edge[style="invis"];
  108. filter1 -> videocontext1_0 -> videocontext1_1; }
  109. }
  110. subgraph cluster_filter2 {
  111. label="Filter 2";
  112. filter2 [label="filter_t"];
  113. videocontext2_0 [label="vlc_video_context_t"];
  114. { edge [style="invis"];
  115. filter2 -> videocontext2_0; }
  116. }
  117. subgraph cluster_decoder_pictures {
  118. label="Pictures from decoder";
  119. node[shape=box];
  120. picture0_0 [label="picture_t"];
  121. picture0_1 [label="picture_t"];
  122. picture0_2 [label="picture_t"];
  123. { edge[constraint=false];
  124. picture0_0 -> videocontext0_0;
  125. picture0_1 -> videocontext0_0;
  126. picture0_2 -> videocontext0_1; }
  127. { edge[style="invis"];
  128. picture0_0 -> picture0_1 -> picture0_2; }
  129. }
  130. subgraph cluster_filter1_pictures {
  131. label="Pictures from filter 1";
  132. node[shape=box];
  133. picture1_0 [label="picture_t"];
  134. picture1_1 [label="picture_t"];
  135. picture1_2 [label="picture_t"];
  136. { edge[constraint=false];
  137. picture1_0 -> videocontext1_0;
  138. picture1_1 -> videocontext1_0;
  139. picture1_2 -> videocontext1_1; }
  140. { edge[style="invis"];
  141. picture1_0 -> picture1_1 ->picture1_2; }
  142. }
  143. subgraph cluster_filter2_pictures {
  144. label="Pictures from filter 2";
  145. node[shape=box];
  146. picture2_0 [label="picture_t"];
  147. { edge[constraint=false];
  148. picture2_0 -> videocontext2_0; }
  149. }
  150. subgraph cluster_vout {
  151. label="Video output";
  152. display [label="vout_display_t"];
  153. }
  154. edge[constraint=false,minlen=8];
  155. decoder -> picture0_0[lhead=cluster_decoder_pictures];
  156. //decoder -> picture0_0;
  157. //decoder -> picture0_1;
  158. //decoder -> picture0_2;
  159. picture0_0 -> filter1[ltail=cluster_decoder_pictures];
  160. //picture0_0 -> filter1;
  161. //picture0_1 -> filter1;
  162. //picture0_2 -> filter1;
  163. filter1 -> picture1_0[lhead=cluster_filter1_pictures];
  164. //filter1 -> picture1_0;
  165. //filter1 -> picture1_1;
  166. //filter1 -> picture1_2;
  167. picture1_0 -> filter2[ltail=cluster_filter2_pictures];
  168. //picture1_0 -> filter2;
  169. //picture1_1 -> filter2;
  170. //picture1_2 -> filter2;
  171. filter2 -> picture2_0[lhead=cluster_filter2_pictures];
  172. picture2_0 -> display[ltail=cluster_filter2_pictures];
  173. }