18.3. アプリケーションへの静的なエレメントの埋め込み

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/"
)