5.2. GstElement の作成

エレメントを作成する最も簡単な方法は、gst_element_factory_make () を使うことです。この関数は、ファクトリ名と新しく作成されるエレメントの名前を引数に取ります。エレメントの名前は、たとえばビンの中でエレメントを参照する場合など、あとで使用することができます。また、エレメントの名前はデバッグ出力でも使われます。エレメント名の引数として NULL を渡すと、一意のデフォルト名を取得できます。

エレメントが必要なくなったときは、gst_object_unref () を使って、エレメントへの参照を解除する必要があります。この関数を呼び出すと、エレメントの参照カウントが 1 つ減らされます。エレメントが作成されたときの参照カウントは 1 です。参照カウントが 0 になると、エレメントは完全に破棄されます。

次に示すのは、fakesrc という名前のエレメントファクトリから source という名前のエレメントを作成する例です [1] 。この例では、エレメントの作成に成功したかどうかをチェックします。チェック後は、エレメントへの参照を解除します。


#include <gst/gst.h>

int
main (int   argc,
      char *argv[])
{
  GstElement *element;

  /* init GStreamer */
  gst_init (&argc, &argv);

  /* create element */
  element = gst_element_factory_make ("fakesrc", "source");
  if (!element) {
    g_print ("Failed to create element of type 'fakesrc'\n");
    return -1;
  }

  gst_object_unref (GST_OBJECT (element));

  return 0;
}
    

gst_element_factory_make は、実際には 2 つの関数の組み合わせの省略形です。ファクトリからは GstElement オブジェクトが作成されます。エレメントを作成するには、一意のファクトリ名を使って GstElementFactory オブジェクトにアクセスする必要があります。この処理を行うのが、gst_element_factory_find () です。

次に示すコードではファクトリを取得し、取得したファクトリを使って、適当なデータソースである fakesrc エレメントを作成します。関数 gst_element_factory_create () は、エレメントファクトリを使って、指定された名前のエレメントを作成します。


#include <gst/gst.h>

int
main (int   argc,
      char *argv[])
{
  GstElementFactory *factory;
  GstElement * element;

  /* init GStreamer */
  gst_init (&argc, &argv);

  /* create element, method #2 */
  factory = gst_element_factory_find ("fakesrc");
  if (!factory) {
    g_print ("Failed to find factory of type 'fakesrc'\n");
    return -1;
  }
  element = gst_element_factory_create (factory, "source");
  if (!element) {
    g_print ("Failed to create element, even though its factory exists!\n");
    return -1;
  }

  gst_object_unref (GST_OBJECT (element));

  return 0;
}
    

注意

[1]

この例のコードは、GStreamer の tar ファイルの中の examples/manual にあるドキュメントから自動的に抽出、作成されたものです。