带有GStreamermm(C+;+;)的GStreamer插件 我试图用C++的GSTRAMAMMM绑定来编写一个C++中的GSPULER插件。现在,有一个很好的插件编写指南(http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/),在web上有各种各样的示例和模板,但是对于gstreamermm,几乎没有任何文档 我知道我可以诉诸于C和C++的混合,但是使用C++绑定看起来更优雅。

带有GStreamermm(C+;+;)的GStreamer插件 我试图用C++的GSTRAMAMMM绑定来编写一个C++中的GSPULER插件。现在,有一个很好的插件编写指南(http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/),在web上有各种各样的示例和模板,但是对于gstreamermm,几乎没有任何文档 我知道我可以诉诸于C和C++的混合,但是使用C++绑定看起来更优雅。,c++,plugins,binding,gstreamer,C++,Plugins,Binding,Gstreamer,简单地将gstreamer pwg中的示例“翻译”为gstreamermm是一条死胡同;gstreamer需要使用相当多的宏来定义类型,我看不到gstreamermm可以立即转换为这些类型。此外,我对gstreamer只有很少的经验,对gobj绝对没有经验(到目前为止) 有人能让我走上正轨吗?即使是最微小的例子或解释也可以 谢谢几天前我在gtkmm邮件列表上问了这个问题,得到了以下答案(来自JoséAlburquerque): 目前,使用gstreamermm开发的插件(可能不存在)只有 专用于

简单地将gstreamer pwg中的示例“翻译”为gstreamermm是一条死胡同;gstreamer需要使用相当多的宏来定义类型,我看不到gstreamermm可以立即转换为这些类型。此外,我对gstreamer只有很少的经验,对gobj绝对没有经验(到目前为止)

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


谢谢

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

目前,使用gstreamermm开发的插件(可能不存在)只有 专用于应用程序。如果可能的话,这些插件将 使用Gst::Plugin::register_static()[1]方法注册,而不是 您上面描述的过程

[1]

理论上,可以扩展其中一个gstreamermm基类[2]和 调用中的Gst::ElementFactory::register_element()[3]方法 Gst::Plugin::SlotInit插槽(回调),以便元素工厂 生成可以创建的这些元素。那家工厂就可以被关闭了 使用中的Gst::registry::add_feature()[4]添加到注册表 相同的Gst::Plugin::Slotini插槽

[2]

[3] Gst::ElementFactory::register_element()方法是一个 这尚未实现,但将封装gst_元素_register() 功能。这将是即将发布的版本的一部分

[4]

我还没有测试过它,也不知道它到底是如何工作的 (或者如果它真的会)但如果我必须的话,我会这么做。然而, 我认为目前用C编写插件比较容易,但这是错误的 只是为了让事情变得容易些


也许在irc.freenode.net上的#gstreamer频道中提问可能会给你一个答案。如果你这样做了,如果你能用它来回答这个问题,那就太棒了。请参阅答案。您可能对我的补丁感兴趣。我在尝试将Gst::AudioSink子类时遇到了一个相关问题-