Sequencer ソースについて

シーケンサー ソースを使用すると、アプリケーションは、ソース間のシームレスな切り替えを使用して、 メディア ソース のコレクションを順番に再生できます。 シーケンサー ソースは、次のシナリオで使用できます。

  • あるメディア ソースから次のメディア ソースにシームレスに切り替わるプレイリストを作成します。
  • 複数のソースからのストリームを同時に再生する。たとえば、あるファイルのオーディオを別のファイルのビデオで再生します。
  • 連続するプレイリストエントリ内の異なるメディアソース内のストリームを切り替えます。たとえば、再生リストには同じビデオ ソースを共有するエントリを含めることができますが、各エントリには異なるオーディオ ソースが含まれています。

プレイリストの要素ごとに、アプリケーションによって個別のトポロジが作成されます。 これらのトポロジのメディア ソースは、シーケンサー ソースと区別するために ネイティブ ソースと呼ばれます。 再生中、トポロジのシーケンス全体を プレゼンテーションと呼び、シーケンス内の各トポロジをセグメントと呼 びます

再生は、再生、一時停止、停止などのトランスポート コントロールを提供する メディア セッションによって制御されます。 メディア セッションでは、プレゼンテーション時間も管理され、イベントがアプリケーションに送信されます。 (シーケンサー ソースからのイベントは、メディア セッションを介してアプリケーションに転送されます)。

プレイリストを作成するために、アプリケーションは 1 つ以上の再生トポロジを作成し、必要な順序でシーケンサー ソースにキューに入れます。 内部的には、ソース ノードがネイティブ ソースではなくシーケンサー ソースを指すように、シーケンサー ソースによってトポロジが変更されます。 アプリケーションは、元のトポロジではなく、これらの変更されたトポロジをメディア セッションに送信します。 これにより、シーケンサー ソースはネイティブ ソースを集約し、メディア セッションと通信できます。

セグメント間のシームレスな切り替えを実現するために、シーケンサー ソースは各セグメントを事前登録します。 1 つのセグメントが再生されている間に、次のセグメントを再生する前に、シーケンサー ソースは、プレゼンテーション記述子を含む MENewPresentation イベントを発生させます。 アプリケーションは、このプレゼンテーション記述子を使用してプレゼンテーション内の次のセグメントのトポロジを取得し、メディア セッションでトポロジをキューに入れます。

次の図は、シーケンサー ソースを介したプレイリスト エントリのデータ フローを示しています。 アプリケーションは、ソース リゾルバーを使用してネイティブ ソースを作成し、各セグメントのトポロジを構築し、シーケンサー ソース上のトポロジをキューに入れます。

imfmediasession、imfsequencersource、および imfmediasource につながるプレイリスト セグメントからのデータ フローを示す図

プレイリストを作成する方法

トポロジ

Sequencer ソースの使用

Sequencer ソース