我正在尝试使用GStreamermm绑定在C ++中编写gstreamer插件。现在,有一个很好的插件编写指南(http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/),并且在网上有各种示例和模板,但对于gstreamermm,它几乎没有文件数量无论如何。
我知道我可以使用C和C ++的混合物,但使用C ++绑定看起来更优雅。
将gstreamer pwg中的例子简单地'翻译'到gstreamermm是一种死路一条; gstreamer需要使用相当多的宏来定义类型,我无法立即看到gstreamermm的翻译。另外,我对gstreamer的经验很少,而且绝对没有gobj的经验(到目前为止)。
有人能让我走上正轨吗?即使是最微小的例子或解释也会这样。
由于
答案 0 :(得分:3)
几天前我在gtkmm邮件列表上问了这个问题,得到了以下答案(来自JoséAlburquerque):
目前,唯一具有(可能不存在)使用gstreamermm开发的可能性的插件是那些 私有应用程序。如果可能的话,这些插件就是 使用Gst :: Plugin :: register_static()[1]方法注册而不是 你上面描述的过程。
理论上,人们会延伸其中一个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() 功能。这将是即将发布的版本的一部分。
我没有对此进行测试,也不确切知道它是如何工作的 (或者如果它真的会这样)但是如果我不得不这样做的话。然而, 我认为现在用C编写插件比较容易,但那就是 只是让事情变得简单。