在插件中创建新元素类型的标准方法是使用GObjectElement类型的gobject样式“派生”以及所有这些gobject魔术,例如this

我正在用C++写一个项目,该项目使用GStreamer并带有一些专门用于我的目的的元素。我已经按照上面提到的方式编写了几个插件,但是我对代码不满意,因为太多的代码只是为了满足gobject的要求。

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

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

这将是一个更漂亮的解决方案(假设我已经在插件中使用gstreamermm和C++)。
当然,我们需要一个真正的gobject类型,它具有唯一的类型ID,以此类推。

最佳答案

由于找不到合适的东西,我修补了gstreamermm,以便它允许这种元素注册。请参见https://github.com/peper0/gstreamermm-plugins。到目前为止,它尚未经过很好的测试,但似乎可以在几种基本情况下使用。错误报告和功能请求将不胜感激。

注意:我的补丁未获得gstreamer或gstreamermm开发人员的任何授权,因此它可能会破坏这些项目中做出的一些设计假设。

07-27 18:33