如何获取GStreamer管道的拓扑结构(图表)

huangapple go评论110阅读模式
英文:

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 的子类,而 GstBinGstElement 的子类。它返回 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))

huangapple
  • 本文由 发表于 2023年5月29日 20:34:33
  • 转载请务必保留本文链接:https://go.coder-hub.com/76357422.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定