2012-07-27 42 views
5

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

我知道我可以只使用C和C++的混合,但使用C++绑定似乎更优雅。

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

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

感谢

+1

也许在irc.freenode.net的#gstreamer频道询问可能会得到答案。如果你这样做,如果你用它回答这个问题会很棒。 – joar 2012-08-01 16:29:29

+0

请参阅[我的问题]的答案(http://stackoverflow.com/questions/9609201/gstreamermm-creating-a-new-element-type-in​​-plugin-by-deriving-from-gstele)。你可能对我的补丁感兴趣。 – peper0 2013-02-26 08:45:06

回答

3

我一个前两天问这个gtkmm的邮件列表上,并得到了以下的答案(由何塞·阿尔武尔克尔克):

目前,唯一的插件,有一个(可能不存在的)使用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方法的一个::插件:: SlotInit插槽(回调),以便可以创建一个 生成这些元素的元素工厂。然后该工厂可以使用相同的Gst :: Plugin :: SlotInit插槽中的Gst :: Registry :: add_feature()[4]添加到注册表中,并将该工厂添加到 。

[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编写插件更容易,但这是 只是简化了一些事情。