2016-07-06 107 views
0

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

回答

0

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

即使在rtspsrc的情况下,你可以有多个src pad(模板stream_%u),它真的是一个由多个udpsrc左右组成的Bin。

所以你可以让你的插件完全像在rtspsrc中一样,创建另一个类(内部) - 说MySingleSrc - 这将产生一个src流..你将有多个MySingleSrc实例..

Internaly你可以有一个数据对象,你将从中复制(memcpy)内容分配给MySingleSrc的多个实例。

struct _GstRTSPSrcClass { 
    GstBinClass parent_class; 
}; 

Rtspsrc bin

更新 - 什么是图:

图显示了管线方案的beginnning - 每个盒子是一个元素 - 红色的是UDP SRC的我只是想展示你认为没有多个src焊盘的signe src,而是rspsrc是一个包含多个signle-padded src元素的bin。我建议你也这样做 - 你可以在cgit中检查rtspsrc的代码。

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

但请采纳建议也从GStreamer中的IRC ..我可能是错的。

HTH

+0

非常感谢!你能帮助解释你附加的数字吗?谢谢 – caolaoban1234

+0

@ caolaoban1234我在更新中解释:) – nayana