『Plugin Writer's Guide』では、GStreamer フレームワーク用のエレメントの記述方法について詳しく説明しています。ここでは、こうしたエレメントをアプリケーションに静的に埋め込む方法についてだけ説明します。この方法は、GStreamer ではほかに使い道のない、アプリケーション固有のエレメントを使う場合に役立ちます。
動的にロードされるプラグインには、GST_PLUGIN_DEFINE () を使って定義される構造体が含まれています。この構造体は、GStreamer コアによってプラグインがロードされたときにロードされます。この構造体には、初期化関数 (通常、plugin_init という名前です) が含まれており、構造体がロードされた直後に呼び出されます。その目的は、プラグインが提供するエレメントを GStreamer フレームワークに登録することです。エレメントをアプリケーションに直接埋め込む場合に行なう必要があるのはただ一つ、GST_PLUGIN_DEFINE () を GST_PLUGIN_DEFINE_STATIC () で置き換えることだけです。これでアプリケーションがロードされたときにエレメントも登録され、該当するエレメントはその他のエレメント同様に利用可能になり、これらのエレメントを動的にロード可能なライブラリにする必要もなくなります。次に示す例では、gst_element_factory_make ("my-element-name", "some-name") を呼び出せば、エレメントのインスタンスを作成することができます。
/*
* Here, you would write the actual plugin code.
*/
[..]
static gboolean
register_elements (GstPlugin *plugin)
{
return gst_element_register (plugin, "my-element-name",
GST_RANK_NONE, MY_PLUGIN_TYPE);
}
GST_PLUGIN_DEFINE_STATIC (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"my-private-plugins",
"Private elements of my application",
register_elements,
VERSION,
"LGPL",
"my-application",
"http://www.my-application.net/"
)