メディア セッションでのメディア ソースの使用

メディア セッションを使用して再生を制御する場合、メディア ソースで呼び出す必要がある一連のメソッドは制限されます。 このセクションでは、メディア ソースをメディア セッションと組み合わせて使用する方法について説明します。

アプリケーションで実行する基本的な手順を次に示します。

  1. メディア ソースを作成します。 メディア ソースを作成するには、ソース リゾルバーを使用します。 詳細については、「 ソース リゾルバー」を参照してください。 ソース リゾルバーは、ソースの IMFMediaSource インターフェイスへのポインターを返します。 (カスタム メディア ソースを作成した場合は、代わりにカスタム作成方法を指定できます)。

  2. プレゼンテーションを構成します。 ソースのプレゼンテーションを構成するには、 IMFMediaSource::CreatePresentationDescriptor を呼び出します。 このコピーは変更できますが、再生が開始されるまで変更はアクティブになりません。 再生中にプレゼンテーション記述子を変更しないでください。 詳細については、「 プレゼンテーション記述子」を参照してください。

  3. メディア ソースを含むトポロジを作成します。 詳細については、「 トポロジ」を参照してください。

  4. メディア セッションを使用して再生を制御します。 メディア セッションは、メディア ソースのメソッドを呼び出します。 現時点では、アプリケーションはメディア ソースのメソッドを呼び出さないでください。

  5. メディア ソースを解放する前に、 IMFMediaSource::Shutdown を呼び出してソースをシャットダウンします。

    Note

    シーケンサー ソースを使用している場合、シーケンサー ソースはセグメント ソースのシャットダウンを処理します。 詳細については、「 Sequencer Source」を参照してください。

     

メディア セッションを使用する場合、メディア ソースで呼び出す必要があるメソッドは 、CreatePresentationDescriptorGetCharacteristicsShutdown のみです。 特に次の点に違いがあります。

  • StartPause、Stop を呼び出さないでください。これらのメソッドは、メディア セッションでのみ呼び出す必要があります。

  • IMFMediaStream メソッドは呼び出さないでください。

  • メディア ソースまたはストリームからイベントを直接取得しないでください。 パイプラインが正しく機能するためには、メディア セッションでこれらのイベントを受信する必要があります。 メディア セッションは、アプリケーションで必要なイベントを転送します。

メディア セッション