6.2. ビンの作成

ビンは、ほかのエレメントを作成するのと同様に、つまりエレメントファクトリを使って作成します。簡易関数 (gst_bin_new () および gst_pipeline_new ()) も利用できます。エレメントをビンに追加したり、ビンからエレメントを削除したりするには、gst_bin_add () または gst_bin_remove () を使用します。エレメントの追加先のビンは、追加されるエレメントのオーナーシップを持つことになる点に注意してください。ビンを破棄すると、ビンとエレメントとの参照は解除されます。ビンからエレメントを削除すると、該当するエレメントの参照は自動的に解除されます。


#include <gst/gst.h>

int
main (int   argc,
      char *argv[])
{
  GstElement *bin, *pipeline, *source, *sink;

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

  /* create */
  pipeline = gst_pipeline_new ("my_pipeline");
  bin = gst_bin_new ("my_bin");
  source = gst_element_factory_make ("fakesrc", "source");
  sink = gst_element_factory_make ("fakesink", "sink");

  /* First add the elements to the bin */
  gst_bin_add_many (GST_BIN (bin), source, sink, NULL);
  /* add the bin to the pipeline */
  gst_bin_add (GST_BIN (pipeline), bin);

  /* link the elements */
  gst_element_link (source, sink);

[..]

}
    

ビンの中の要素を参照するためにさまざまな関数が用意されています。関数 gst_bin_get_list () を使えば、ビンに含まれているすべてのエレメントのリストを取得することもできます。詳細については、GstBin の API リファレンスを参照してください。