6

GStreamermm バインディングを使用して、C++ で gstreamer プラグインを作成しようとしています。現在、優れたプラグイン ライター ガイド (http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/) があり、Web 上にはさまざまな例とテンプレートがありますが、gstreamermm の場合はほとんどありません。ドキュメントの量はいくらでもあります。

C と C++ を組み合わせて使用​​することもできますが、C++ バインディングを使用する方がはるかに洗練されているように思えます。

gstreamer pwg にある例を gstreamermm に単純に「翻訳」するのは行き止まりです。gstreamer では、型を定義するためにかなりの数のマクロを使用する必要がありますが、これをすぐに gstreamermm に変換することはできません。さらに、私は gstreamer の経験がほとんどなく、gobj の経験はまったくありません (これまでのところ)。

誰かが私を正しい軌道に乗せることができますか? ごくわずかな例や説明でも構いません。

ありがとう

4

1 に答える 1

3

数日前に gtkmm メーリング リストで質問したところ、次のような回答がありました (José Alburquerque から)。

現在、gstreamermm を使用して開発される (おそらく存在しない) 可能性がある唯一のプラグインは、アプリケーション専用のものです。可能であれば、これらのプラグインは、上記のプロセスではなく、Gst::Plugin::register_static()[1] メソッドを使用して登録されます。

[1] http://developer.gnome.org/gstreamermm/unstable/classGst_1_1Plugin.html#ac0728bb285ae1bed9298c0f9ea522ad9

理論的には、gstreamermm 基本クラスの 1 つを拡張し [2]、Gst::Plugin::SlotInit スロット (コールバック) で Gst::ElementFactory::register_element()[3] メソッドを呼び出して、要素ファクトリがこれらの要素を生成できます。そのファクトリは、同じ Gst::Plugin::SlotInit スロットで Gst::Registry::add_feature()[4] を使用してレジストリに追加できます。

[2] http://developer.gnome.org/gstreamermm/unstable/group__GstBaseClasses.html

[3] Gst::ElementFactory::register_element() メソッドは、まだ実装されていませんが、gst_element_register() 関数をラップするメソッドです。これは、今後のリリースの一部になります。

[4] http://developer.gnome.org/gstreamermm/unstable/classGst_1_1Registry.html#ae1f9a1ddd60ef5a7e1f8cddf14ec404f

私はこれをテストしておらず、それがどのように機能するか (または実際に機能するか) も正確にはわかりませんが、必要に応じて試してみます。ただ、プラグインは今のところ C で書いた方が簡単だと思いますが、それは単純に簡単にするだけです。

于 2012-08-02T19:25:08.710 に答える