3.3. ビンとパイプライン

ビン (bin) は、エレメントのコレクションのコンテナ (入れ物) です。パイプラインは、ビンの特別なサブタイプで、そこに含まれる子エレメントのすべての実行が可能なものをいいます。ビンはエレメント自体のサブクラスなので、プログラマはほとんどエレメントと同様にビンをコントロールすることができ、したがってアプリケーションから見える複雑な側面を大幅に減らすことができます。たとえば、1 つのビンに含まれるすべてのエレメントの状態を変更することも、そのビン自体の状態を変更することで実現することができます。ビンは、その中に含まれる子からのバスメッセージ (エラーメッセージ、タグメッセージ、EOS メッセージなど) を転送することもできます。

パイプラインはトップレベルのビンです。パイプラインを一時停止 (PAUSED) 状態または再生中 (PLAYING) 状態にすると、データフローがスタートし、メディア処理が行われます。いったんスタートしたパイプラインは、ストップされるか、またはデータストリームの最後に達するまで、独立したスレッドで実行されます。

図 3-1. シンプルな ogg プレーヤー用の GStreamer パイプライン