2012-03-07 48 views
2

在插件中創建新元素類型的標準方法是GstElement類型的gobject樣式「派生」,包含所有這個gobject魔術,如thisGStreamermm:通過派生自Gst :: Element創建一個新元素類型(在插件中)

我正在寫一個C++項目,它使用GStreamer和一些專門用於我目的的元素。我以上述方式編寫了幾個插件,但是我對代碼並不滿意,因爲它太多隻是滿足gobject的要求。

我認爲使用gstreamermm。是否有可能創建一個新類型的元素與C + +風格派生從Gst ::元素?我的意思是這樣的:

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

這將是更漂亮的解決方案(假設我已經在插件使用gstreamermm和C++)。 當然,我們需要一個真正的gobject類型,它具有唯一的類型id等等。

+0

我已經使用了幾個毫米的包裝,但不是gstreamer。如果你不能使用它的對象作爲基類,我會認爲這個包裝器是無用的,所以我會說使用一個小的測試程序來嘗試它。 – ergosys 2012-03-08 00:18:36

回答

1

由於我沒有找到合適的東西,我修補了gstreamermm,以便它允許這樣的元素註冊。見https://github.com/peper0/gstreamermm-plugins到目前爲止還沒有很好的測試,但似乎在幾個基本情況下工作。錯誤報告和功能請求將不勝感激。

注意:我的補丁未經gstreamer或gstreamermm開發人員授權,因此可能會破壞這些項目中的一些設計假設。

+0

我對此非常感興趣,我會測試它(當我找到一些時間)。 你有任何插件作爲如何使用gstreamermm編寫插件的例子嗎?在gstreamermm中有這樣的功能是很好的。你有沒有聯繫gstreamermm開發者? – vhdirk 2013-02-27 09:48:34

+0

看到這裏的一些例子:[這裏](https://github.com/peper0/gstreamermm-plugins/blob/gstpluginsmm/tests/test-plugin-register.cc) – peper0 2013-03-01 22:22:35

+0

(我不能編輯我以前的評論)目前只有簡單的一個,但我正在使用GstPushSrc和其他元素的基類。我將聯繫gstreamermm開發人員,但尚未完成。 – peper0 2013-03-01 22:29:15

相關問題