覆盖 gstbasesrc.h/.c 和 gstpushsrc.h/.c

Override gstbasesrc.h/.c and gstpushsrc.h/.c

我写了一个源插件,我想用它做多流,比如说,我想在我的插件中创建 3 个 srcpads。但是,GstBaseSrcClass 定义子类中只能有一个 srcpad,这不是我所期望的。因此我决定覆盖 GstBaseSrc 和 GstPushSrc。供您参考,是否有可能实现?我将不得不接受你的建议!谢谢!!

您是否检查过 souphttpsrc 的实施示例?它有一个 src pad 但当解码时你会从中得到两个流,我想知道是否至少有一个源元素有多个 pad..我想我从来没有使用过这样的东西..

即使在 rtspsrc 的情况下,它在文档中说你可以有多个 src 垫(使用模板 stream_%u)它实际上是一个包含多个 udpsrc 左右的 Bin..

所以你可以把你的插件做成一个 bin,就像在 rtspsrc 的情况下一样,然后做另一个 class(内部)——比如 MySingleSrc——这将产生一个 src 流..你将有多个实例MySingleSrc..

在内部,您可以拥有一个数据对象,您将从中复制 (memcpy) 内容到 MySingleSrc 的多个实例。

struct _GstRTSPSrcClass {
  GstBinClass parent_class;
};

更新 - 图表是什么:

该图显示了管道方案的开始 - 每个框都是一个元素 - 红色的是 UDP src 我只是想告诉你没有带有多个 src pad 的 signe src 而是 rspsrc 是一个 bin其中包含多个符号填充的 src 元素。我建议你也这样做 - 你可以在 cgit.

中查看 rtspsrc 的代码

这是关于点图以及如何生成它们的 - 它在调试某些东西时非常有用:https://developer.ridgerun.com/wiki/index.php/How_to_generate_a_Gstreamer_pipeline_diagram_(graph)

但也请从 GStreamer 的 IRC 获取建议。我可能是错的。

HTH