GStreamermm的GStreamer插件(C ++)

时间:2012-07-27 15:31:40

标签: c++ plugins binding gstreamer

我正在尝试使用GStreamermm绑定在C ++中编写gstreamer插件。现在,有一个很好的插件编写指南(http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/),并且在网上有各种示例和模板,但对于gstreamermm,它几乎没有文件数量无论如何。

我知道我可以使用C和C ++的混合物,但使用C ++绑定看起来更优雅。

将gstreamer pwg中的例子简单地'翻译'到gstreamermm是一种死路一条; gstreamer需要使用相当多的宏来定义类型,我无法立即看到gstreamermm的翻译。另外,我对gstreamer的经验很少,而且绝对没有gobj的经验(到目前为止)。

有人能让我走上正轨吗?即使是最微小的例子或解释也会这样。

由于

1 个答案:

答案 0 :(得分:3)

几天前我在gtkmm邮件列表上问了这个问题,得到了以下答案(来自JoséAlburquerque):

  

目前,唯一具有(可能不存在)使用gstreamermm开发的可能性的插件是那些   私有应用程序。如果可能的话,这些插件就是   使用Gst :: Plugin :: register_static()[1]方法注册而不是   你上面描述的过程。

     

[1] http://developer.gnome.org/gstreamermm/unstable/classGst_1_1Plugin.html#ac0728bb285ae1bed9298c0f9ea522ad9

     

理论上,人们会延伸其中一个gstreamermm基类[2]和   在中调用Gst :: ElementFactory :: register_element()[3]方法   Gst :: Plugin :: SlotInit槽(回调)使一个元素工厂   生成这些元素可以创建。那个工厂可以   使用Gst :: Registry :: add_feature()[4]添加到注册表中   相同的Gst :: Plugin :: SlotInit插槽。

     

[2] http://developer.gnome.org/gstreamermm/unstable/group__GstBaseClasses.html

     

[3] Gst :: ElementFactory :: register_element()方法是一种方法   尚未实现,但会包装gst_element_register()   功能。这将是即将发布的版本的一部分。

     

[4] http://developer.gnome.org/gstreamermm/unstable/classGst_1_1Registry.html#ae1f9a1ddd60ef5a7e1f8cddf14ec404f

     

我没有对此进行测试,也不确切知道它是如何工作的   (或者如果它真的会这样)但是如果我不得不这样做的话。然而,   我认为现在用C编写插件比较容易,但那就是   只是让事情变得简单。