在插件中创建新元素类型的标准方法是GstElement类型的gobject-style“derivation”,包含所有这些gobject魔法,如this。
我正在用C ++编写一个项目,它使用GStreamer和一些专门用于我目的的元素。我已经按照上面提到的方式编写了几个插件,但是我对代码不满意,因为它太多只是为了满足gobject的要求。
我考虑使用gstreamermm。是否可以使用C ++创建一种新类型的元素 - 从Gst :: Element派生?我的意思是:
class MyElement: public Gst::Element
{
...
}
这将是更漂亮的解决方案(假设我已经在插件中使用gstreamermm和C ++)。 当然我们需要一个真正的gobject类型,它具有唯一的类型id等等。
答案 0 :(得分:1)
由于我没有找到任何合适的东西,我修补了gstreamermm所以它允许这样的元素注册。见https://github.com/peper0/gstreamermm-plugins到现在为止它没有经过良好的测试,但似乎在几个基本情况下都有效。错误报告和功能请求将不胜感激。
注意:我的补丁未经gstreamer或gstreamermm开发人员以任何方式授权,因此可能会破坏这些项目中的一些设计假设。