英文:
How to get gstreamer pipeline's topology (diagram)
问题
我正在尝试获取管道拓扑,但当我创建它时,我使用gst_pipeline_new,它返回一个GstElement,而GST_DEBUG_BIN_TO_DOT_FILE则需要一个GstBinGST_DEBUG_BIN_TO_DOT_FILE。
英文:
I am trying to get pipeline topology but when I create it I use gst_pipeline_new
which returns a GstElement, on the other hand GST_DEBUG_BIN_TO_DOT_FILE expects a GstBin
GST_DEBUG_BIN_TO_DOT_FILE
答案1
得分: 1
gst_pipeline_new()
返回一个 GstPipeline*
,它是 GstBin
的子类,而 GstBin
是 GstElement
的子类。它返回 GstElement*
的原因只是因为大多数人通常在之后调用 GstElement
方法,而由于 C 不支持多态性,因此您必须进行类型转换。
这就带我们来回答您的问题:GstPipeline
只是 GstBin
的一个子类,所以您可以使用通常的 C 强制转换(例如 (GstBin *) pipeline
)或使用 GObject 转换宏(它们会进行运行时类型检查,例如 GST_BIN (pipeline)
)。
英文:
gst_pipeline_new()
returns a GstPipeline*
, a subclass of GstBin
which is a subclass of GstElement
. The reason it returns a GstElement*
is just because most people usually call GstElement
methods on it afterwards, and since C doesn't support polymorphism, you have to cast.
This brings us to the answer for your question: GstPipeline
is just a subclass of GstBin
, so you can just cast the type using usual C casts (e.g. (GstBin *) pipeline
) or using the GObject casting macros (which do a runtime type check (e.g. GST_BIN (pipeline)
)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论