プレゼンテーションの状態を制御する方法
メディア セッションは、プレゼンテーションの状態の変更 (再生、一時停止、再生リストスタイルの再生シナリオでの停止) などのトランスポート制御を提供します。 このトピックでは、再生状態を変更するためにアプリケーションが呼び出すメディア セッション メソッドについて説明します。
次の表は、有効なプレゼンテーション状態の遷移を示しています。
状態の変化 | 説明 |
---|---|
再生 -> 一時停止 | プレゼンテーションクロックがフリーズします。 |
再生 -> 停止 | プレゼンテーションクロックがリセットされます。 |
一時停止 -> 再生 | プレゼンテーション クロックは、再生から一時停止の切り替え中にフリーズしてから再開されます。 |
一時停止 -> 停止 | プレゼンテーションクロックがリセットされます。 |
停止 -> 再生 | プレゼンテーションクロックは、プレゼンテーションの先頭から開始されます。 |
停止 -> 一時停止 | 許可されていません。 |
プレゼンテーションの状態を変更するには
IMFMediaSession::P ause メソッドを呼び出して、再生を一時停止します。
hr = pMediaSession->Pause();
このメソッドを呼び出す前に、アプリケーションは IMFMediaSession::GetSessionCapabilities メソッドを呼び出して、メディア ソースが Pause 状態をサポートしているかどうかを検出する必要があります。 その場合、このメソッドは pdwCaps パラメーターでMFSESSIONCAP_PAUSEを返します。
一時停止すると、現在のプレゼンテーションのメディア セッション、プレゼンテーション クロック、ストリーム シンクが一時的に停止します。 呼び出しが正常に完了すると、アプリケーションは MESessionPaused イベントを受け取ります。
IMFMediaSession::Stop メソッドを呼び出して再生を停止します。
hr = pMediaSession->Stop();
このメソッドは、メディア ソース、対応するクロック、およびストリーム シンクを停止することで、メディア セッションを停止します。 メディア セッションが シーケンサー ソースを制御している場合、基になるネイティブ ソースはシーケンサー ソースによって停止されます。 メディア セッションが停止すると、アプリケーションは MESessionStopped イベントを受け取ります。
IMFMediaSession::Start メソッドを呼び出して再生を開始するか、新しい位置にシークします。
hr = pMediaSession->Start(NULL, &var);
このメソッドは、一時停止と停止の状態からメディア セッションを開始します。 メディア セッションは、パイプラインでデータ フローを設定する役割を担います。 このメソッドは、プレゼンテーション クロックを開始するようにメディア セッションに指示します。 この呼び出しの後、メディア セッションは MESessionStarted イベントをアプリケーションに送信します。
関連トピック