Share via


Steuern von Präsentationszuständen

Die Mediensitzung bietet Transportsteuerung, z. B. das Ändern des Präsentationsstatus (Wiedergabe, Pause und Beenden in einem Wiedergabewiedergabeszenario). In diesem Thema werden Mediensitzungsmethoden beschrieben, die eine Anwendung aufrufen sollte, um den Wiedergabezustand zu ändern.

In der folgenden Tabelle sind die gültigen Präsentationszustandsübergänge aufgeführt.

Zustandsübergang BESCHREIBUNG
Wiedergeben –> Anhalten Die Präsentationsuhr friert ein.
Wiedergeben –> Beenden Die Präsentationsuhr wird zurückgesetzt.
Anhalten –> Wiedergeben Die Präsentationsuhr wird ab dem Zeitpunkt fortgesetzt, zu dem sie während des Übergangs von Wiedergabe zu Pause eingefroren ist.
Anhalten –> Beenden Die Präsentationsuhr wird zurückgesetzt.
Beenden –> Wiedergeben Die Präsentationsuhr beginnt am Anfang der Präsentation.
Beenden –> Anhalten Nicht zulässig.

 

So ändern Sie den Präsentationsstatus

  • Rufen Sie die IMFMediaSession::P ause-Methode auf, um die Wiedergabe anzuhalten.

    hr = pMediaSession->Pause();
    

    Vor dem Aufrufen dieser Methode muss die Anwendung die IMFMediaSession::GetSessionCapabilities-Methode aufrufen, um zu ermitteln, ob die Medienquelle den Pausenzustand unterstützt. Wenn dies der Fall ist, gibt diese Methode MFSESSIONCAP_PAUSE im pdwCaps-Parameter zurück.

    Anhalten beendet vorübergehend die Mediensitzung, die Präsentationsuhr und die Streamsenke für die aktuelle Präsentation. Nachdem der Aufruf erfolgreich abgeschlossen wurde, empfängt die Anwendung ein MESessionPaused-Ereignis .

  • Rufen Sie die IMFMediaSession::Stop-Methode auf, um die Wiedergabe zu beenden.

    hr = pMediaSession->Stop();
    

    Diese Methode beendet die Mediensitzung, indem die Medienquelle, die entsprechenden Uhren und die Streamsenken beendet werden. Wenn die Mediensitzung die Sequencerquelle steuert, werden die zugrunde liegenden nativen Quellen von der Sequencerquelle angehalten. Nachdem die Mediensitzung beendet wurde, empfängt die Anwendung ein MESessionStopped-Ereignis .

  • Rufen Sie die IMFMediaSession::Start-Methode auf, um die Wiedergabe zu starten oder eine neue Position zu suchen.

    hr = pMediaSession->Start(NULL, &var);
    

    Diese Methode startet die Mediensitzung mit den Status "Anhalten" und "Beenden". Die Mediensitzung ist für das Einrichten des Datenflusses in der Pipeline verantwortlich. Diese Methode weist die Mediensitzung an, die Präsentationsuhr zu starten. Nach diesem Aufruf sendet Media Session ein MESessionStarted-Ereignis an die Anwendung.

Mediensitzung