2013-04-05 4 views
3

많은 중첩 된 저장소가있는 GStreamer 응용 프로그램에 대한 그래프를 생성하려고합니다. 각 bin에는 몇 가지 요소가 있지만 parent bin 용 bin은 패드 (싱크 및 소스)가있는 다른 공통 요소와 유사합니다. 시각화하고 싶지만 Graphviz에서는 하위 그래프로 중첩 된 노드를 생성 할 수 없습니다. 불행히도 하위 그래프에는 레코드 모양과 같은 노드 옵션이 없습니다. 내 그래프에서 각 노드는 레코드 모양을 갖지만 하위 그래프는 레코드를 가질 수 없습니다. 예 :레코드 모양의 노드처럼 보이는 그래프 서브 그래프

digraph G 
{ 
    graph [rankdir = TD] 
    node [shape = record] 

    subgraph cluster_player 
    { 
     label = "player"   

     subgraph cluster_bin1 
     { 
      label = "bin1" 

      bin1_sink1 [label = "sink1"] 
      bin1_sink2 [label = "sink2"] 
      obj1 [ 
       label = "{ { <sink1> sink1 | <sink2> sink2 } | obj1 | { <src1> src1 | <src2> src2 } }" 
      ]   
      bin1_src1 [label = "src1"] 
      bin1_src2 [label = "src2"] 

      bin1_sink1:s -> obj1:sink1:n [] 
      bin1_sink2:s -> obj1:sink2:n [] 
      obj1:src1:s -> bin1_src1:n [] 
      obj1:src2:s -> bin1_src2:n [] 
     } 

     bin1_src1:s -> bin2_sink1:n [] 
     bin1_src2:s -> bin2_sink2:n [] 

     subgraph cluster_bin2 
     { 
      label = "bin2" 

      bin2_sink1 [label = "sink1"] 
      bin2_sink2 [label = "sink2"]    
      bin2_obj1 [ 
       label = "{ { <sink1> sink1 | <sink2> sink2 } | obj1 | { <src1> src1 } }" 
      ]  
      bin2_obj2 [ 
       label = "{ { <sink1> sink1 } | obj2 | { <src1> src1 } }" 
      ]  
      bin2_src1 [label = "src1"] 

      bin2_sink1:s -> bin2_obj1:sink1:n [] 
      bin2_sink2:s -> bin2_obj1:sink2:n [] 
      bin2_obj1:src1:s -> bin2_obj2:sink1:n [] 
      bin2_obj2:src1:s -> bin2_src1:n [] 
     } 
    } 
} 

enter image description here

이제 쓰레기통에서 소스와 싱크가 정상 요소처럼,하지만 난 그들을 "으로 obj1"레코드처럼보고 싶어 볼 수 있듯이. 그것을하는 방법? 불가능할 수도있는 기능이있는 다른 언어가있을 수 있습니까?

+0

gstreamer의 graphviz 지원이 불충분합니까? GST_DEBUG_DUMP_DOT_DIR envvar 및 관련 매크로를 확인하십시오. – ensonic

+0

더 좋게 만들고 싶기 때문에 그다지 좋지는 않습니다.) –

+0

graphviz 메일 링리스트를 묻는 것은 어떨까요? 현재 양식을 작성하는 데 꽤 많은 시간을 할애했습니다. 노드와 클러스터에 포트가 있으면 실제로 좋을 것입니다. – ensonic

답변

0

그래프 서브 그래프는 컨테이너입니다. 그들은 당신이 찾고있는 레코드 표기법이나 모양 속성을 지원하지 않습니다. shape은 노드로 제한되며 하위 그래프는 노드로 제한되지 않습니다.