次の方法で共有


プレゼンテーションの状態を制御する方法

メディア セッションは、プレゼンテーションの状態の変更 (再生、一時停止、再生リストスタイルの再生シナリオでの停止) などのトランスポート制御を提供します。 このトピックでは、再生状態を変更するためにアプリケーションが呼び出すメディア セッション メソッドについて説明します。

次の表は、有効なプレゼンテーション状態の遷移を示しています。

状態の変化 説明
再生 -> 一時停止 プレゼンテーションクロックがフリーズします。
再生 -> 停止 プレゼンテーションクロックがリセットされます。
一時停止 -> 再生 プレゼンテーション クロックは、再生から一時停止の切り替え中にフリーズしてから再開されます。
一時停止 -> 停止 プレゼンテーションクロックがリセットされます。
停止 -> 再生 プレゼンテーションクロックは、プレゼンテーションの先頭から開始されます。
停止 -> 一時停止 許可されていません。

 

プレゼンテーションの状態を変更するには

  • 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 イベントをアプリケーションに送信します。

メディア セッション