C++ GStreamermm:通过从Gst::element派生创建新的元素类型(在插件中)

C++ GStreamermm:通过从Gst::element派生创建新的元素类型(在插件中),c++,gstreamer,gtkmm,gobject,C++,Gstreamer,Gtkmm,Gobject,在插件中创建新元素类型的标准方法是从GstElement类型派生出gobject样式的“派生”,具有所有这些gobject魔力,如 我在C++中写了一个使用GStuffER的元素,它专门用于我的目的。我已经用上面提到的方式编写了几个插件,但是我对代码不满意,因为太多的插件只是为了满足gobject的要求 我考虑使用GSTRAMEMM。是否可以使用从Gst::Element派生的C++风格创建新类型的元素?我的意思是: class MyElement: public Gst::Element {

在插件中创建新元素类型的标准方法是从GstElement类型派生出gobject样式的“派生”,具有所有这些gobject魔力,如

<>我在C++中写了一个使用GStuffER的元素,它专门用于我的目的。我已经用上面提到的方式编写了几个插件,但是我对代码不满意,因为太多的插件只是为了满足gobject的要求

我考虑使用GSTRAMEMM。是否可以使用从Gst::Element派生的C++风格创建新类型的元素?我的意思是:

class MyElement: public Gst::Element
{
  ...
}

这将是一个更漂亮的解决方案(假设我已经在插件中使用了GSTRAMEMM和C++)。


当然,我们需要一个真正的gobject类型,它具有唯一的类型id等等。

由于我没有找到任何合适的类型,我对gstreamermm进行了修补,以便它允许这样的元素注册。看吧,到目前为止,它还没有经过很好的测试,但似乎在几个基本情况下都能正常工作。错误报告和功能请求将不胜感激


注意:我的补丁没有得到gstreamer或gstreamermm开发者的任何授权,因此它可能会打破这些项目中的一些设计假设。

我使用了几个mm包装,但没有使用gstreamer。我会认为包装器是无用的,如果你不能使用它的对象作为一个基类,所以我会说试试它使用一个小的测试程序。我很感兴趣,我会测试它(当我找到一些时间)。您是否有任何插件作为如何使用gstreamermm编写插件的示例?在gstreamermm中拥有这样的功能会很好。你联系过gstreamermm开发人员了吗?这里有一些例子:(我不能编辑我以前的评论)目前只有一个简单的,但我正在为元素使用GstPushSrc和其他基类。我将联系gstreamermm开发人员,但是他们还没有联系。作为考虑使用gstreamermm的人,我很好奇这是否会被合并到gstreamermm中,或者被类似的功能所取代?@BruceAdams:it早就被合并到gstreamermm中了: