メディア セッションについて
メディア セッションでは、 IMFMediaSession インターフェイスが 公開されます。 アプリケーションが保護されたコンテンツをサポートするかどうかに応じて、メディア セッションを作成する方法は 2 つあります。
- アプリケーションで保護されたコンテンツがサポートされていない場合は、 MFCreateMediaSession を呼び出してメディア セッションを作成できます。 この関数は、アプリケーション プロセス内にメディア セッションを作成します。
- 保護されたコンテンツをサポートするには、 MFCreatePMPMediaSession を呼び出してメディア セッションを作成します。 この関数は、保護されたメディア パス (PMP) プロセス内にメディア セッションを作成します。 アプリケーションは、プロセス境界を越えてメソッド呼び出しをマーシャリングするプロキシ オブジェクトへのポインターを受け取ります。 PMP メディア セッションを使用して、クリア コンテンツと保護されたコンテンツを再生できることに注意してください。
メディア セッションを使用するすべてのアプリケーションは、次の一般的な手順に従います。
- トポロジを作成します。
- IMFMediaSession::SetTopology を呼び出して、メディア セッションでトポロジをキューに入れます。
- IMFMediaSession::Start、IMFMediaSession::P ause、または IMFMediaSession::Stop を呼び出して、データのフローを制御します。
- アプリケーションが終了する前に、 IMFMediaSession::Close を呼び出してメディア セッションを閉じます。
- IMFMediaSource::Shutdown を呼び出して、アプリケーションによって作成されたすべてのメディア ソースをシャットダウンします。
- IMFMediaSession::Shutdown を呼び出してメディア セッションをシャットダウンします。
メディア セッションを使用する場合、アプリケーションはメディア ソースを直接開始、一時停止、または停止しないでください。 すべての状態変更は、 IMFMediaSession メソッドを呼び出すことによって開始する必要があります。 メディア ソースの状態の変更は、メディア セッションによって処理されます。
その他の多くの詳細は、アプリケーションの特定の機能によって異なります。
保護されたコンテンツ
保護されたコンテンツを再生するには、 MFCreatePMPMediaSession を呼び出して、保護されたメディア パス (PMP) 内にメディア セッションを作成する必要があります。 この関数は、PMP 内にメディア セッションのインスタンスを作成し、プロセス境界を越えてインターフェイスをマーシャリングするプロキシ オブジェクトへのポインターを返します。
ほとんどの点で、PMP 内でメディア セッションを使用することは、アプリケーションに対して透過的です。 ただし、アプリケーションでは、ユーザーがコンテンツを再生できるようにする特定のアクションを呼び出す必要がある場合があります。 たとえば、ユーザーが DRM ライセンスを取得する必要がある場合があります。 Media Foundation では、 IMFContentEnabler インターフェイスを使用して、これらのアクションの一般的なメカニズムを定義します。
詳細については、次のトピックを参照してください。
プレゼンテーションクロック
メディア セッションは、プレゼンテーション クロックのすべての側面を管理します。
プレゼンテーション クロックの作成。
タイム ソースの選択。
クロックについてメディア シンクに通知する
必要に応じてクロックを開始、停止、一時停止します。
クロックをシャットダウンします。
プレゼンテーション クロックへのポインターを取得するには、メディア セッションで IMFMediaSession::GetClock を呼び出します。 メディア セッションが MESessionTopologyStatus イベントを MF_TOPOSTATUS_READY フラグと共に送信するまで、プレゼンテーション クロックは有効な時刻を返しません。 それまでは、 GetClock はMF_E_CLOCK_NO_TIME_SOURCEを返します。
メディア セッションを使用するアプリケーションでは、プレゼンテーション クロックを開始、停止、または一時停止しないでください。クロックレートを変更します。またはクロックをシャットダウンします。
アプリケーションが IMFMediaSession::Start を呼び出すと、メディア セッションは Start メソッドで指定された開始位置と同じ開始時刻でプレゼンテーション クロックを 開始 します。 メディア セッションの詳細については、「メディア セッション」を参照してください。
関連トピック