3
我想爲許多嵌套箱的GStreamer應用程序生成圖。每個容器都有一些元素,但父容器的容器看起來像任何其他具有容器(接收器和源)的公共元素。我想要可視化它,但在Graphviz中我不能生成嵌套節點,所以我必須通過子圖來完成。不幸的是,子圖沒有像記錄形狀這樣的節點選項。在我的圖中,每個節點都有記錄形狀,但是子圖不能。例如: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 []
}
}
}
,你可以看到現在的源和匯的垃圾箱都像正常的元素,但我希望他們看起來像記錄「OBJ1」。怎麼做?如果不可能,也許還有其他語言會具有該功能?
gstreamer中的graphviz支持不夠好嗎?查看GST_DEBUG_DUMP_DOT_DIR envvar和相關的宏。 – ensonic 2013-04-06 14:47:41
這對我來說不夠好,因爲我想讓它變得更好;) – 2013-04-07 13:06:53
那麼請問在graphviz郵件列表上呢?我花了相當多的時間來提出目前的形式。有節點和集羣上的端口確實很好。 – ensonic 2013-04-08 13:29:13