イベントは、バッファとともにパイプラインの上流方向と下流方向の両方に送られるコントロール部品です。下流方向のイベントは、関係するエレメントにストリームの状態を通知します。イベントには、シークやフラッシュ、ストリームの最後の通知など、さまざまなものがあります。上流方向のイベントは、アプリケーションとエレメントのやり取りとエレメント同士のやり取りの両方において、シークなど、ストリームの状態の変更を要求するのに使われます。アプリケーションにとって重要なのは、上流方向のイベントだけです。下流方向のイベントについても説明するのは、データのコンセプトに関する理解を深めてもらうためだけです。
ほとんどのアプリケーションでは、時間単位でシークを行うので、この操作を記述する例を次に示します。
static void
seek_to_time (GstElement *element,
guint64 time_ns)
{
GstEvent *event;
event = gst_event_new_seek (1.0, GST_FORMAT_TIME,
GST_SEEK_FLAG_NONE,
GST_SEEK_METHOD_SET, time_ns,
GST_SEEK_TYPE_NONE, G_GUINT64_CONSTANT (0));
gst_element_send_event (element, event);
}
これを手っ取り早く実現する手段として、gst_element_seek () 関数があります。この例はイベントの使い方を簡単に示すためのもので、ここではこれ以上の説明は省きます。