5.3. GObject としてのエレメントの使用

GstElement が持つことのできるプロパティは、標準の GObject プロパティを使って実装されています。したがって、プロパティの値の問い合わせ、設定、取得を行うために用意されている通常の GObject のメソッドと GParamSpecs がサポートされています。

どの GstElement も、親の GstObject から少なくとも 1 つのプロパティ、すなわち "name" プロパティを継承します。これは、プログラマが gst_element_factory_make () または gst_element_factory_create () に渡した名前です。このプロパティは、関数 gst_object_set_name と関数 gst_object_get_name を使って値を設定または取得できるほか、次に示すように GObject プロパティのメカニズムを使うこともできます。


#include <gst/gst.h>

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

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

  /* create element */
  element = gst_element_factory_make ("fakesrc", "source");

  /* get name */
  g_object_get (G_OBJECT (element), "name", &name, NULL);
  g_print ("The name of the element is '%s'.\n", name);
  g_free (name);

  gst_object_unref (GST_OBJECT (element));

  return 0;
}
    

ほとんどのプラグインでは、設定についての詳しい情報を提供したり、エレメントの設定を行ったりするための追加のプロパティを用意しています。gst-inspect は特定のエレメントのプロパティを問い合わせるのに便利なツールで、プロパティイントロスペクションを使って、プロパティの機能やパラメータの型、パラメータがサポートする値の範囲についての簡単な説明を得ることもできます。gst-inspect の詳細については、付録を参照してください。

GObject のプロパティについてさらに詳しく知るには、『GObject リファレンスマニュアル』および『Glib オブジェクトシステム』の「Introduction」を読んでください。

GstElement は、さまざまな GObject シグナルも提供しており、これらのシグナルを柔軟なコールバックメカニズムとして利用することができます。特定のエレメントによってサポートされているシグナルを調べるには、すぐ上で取り上げた gst-inspect を使用できます。シグナルとプロパティはともに、エレメントとアプリケーションが対話するための最も基本的な方法です。