Поделиться через


Управление состояниями презентации

Сеанс мультимедиа обеспечивает управление транспортировкой, например изменение состояний презентации (воспроизведение, приостановка и остановка в сценарии воспроизведения в стиле списка воспроизведения). В этом разделе описываются методы сеанса мультимедиа, которые приложение должно вызывать для изменения состояния воспроизведения.

В следующей таблице показаны допустимые переходы состояния представления.

Смена состояния Описание
Воспроизведение —> приостановка Часы презентации зависают.
Воспроизведение —> остановка Часы презентации сбрасываются.
Приостановка —> воспроизведение Часы презентации возобновляют работу с момента заморозки во время перехода "Воспроизвести на паузу".
Приостановка —> остановка Часы презентации сбрасываются.
Остановка —> воспроизведение Часы презентации начинаются с начала презентации.
Остановка —> пауза Не допускается.

 

Изменение состояний презентации

  • Вызовите метод IMFMediaSession::P ause , чтобы приостановить воспроизведение.

    hr = pMediaSession->Pause();
    

    Перед вызовом этого метода приложение должно вызвать метод IMFMediaSession::GetSessionCapabilities , чтобы определить, поддерживает ли источник мультимедиа состояние Pause. В этом случае этот метод возвращает MFSESSIONCAP_PAUSE в параметре pdwCaps .

    Приостановка временно останавливает сеанс мультимедиа, часы презентации и приемник потока для текущей презентации. После успешного завершения вызова приложение получает событие MESessionPaused .

  • Вызовите метод IMFMediaSession::Stop , чтобы остановить воспроизведение.

    hr = pMediaSession->Stop();
    

    Этот метод останавливает сеанс мультимедиа, останавливая источник мультимедиа, соответствующие часы и приемники потоков. Если сеанс мультимедиа управляет источником Sequencer, базовые собственные источники останавливаются источником секвенсора. После остановки сеанса мультимедиа приложение получает событие MESessionStopped .

  • Вызовите метод IMFMediaSession::Start , чтобы начать воспроизведение или найти новую позицию.

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

    Этот метод запускает сеанс мультимедиа из состояний Приостановка и Остановка. Сеанс мультимедиа отвечает за настройку потока данных в конвейере. Этот метод указывает сеансу мультимедиа запустить часы презентации. После этого вызова сеанс мультимедиа отправляет в приложение событие MESessionStarted .

Сеанс мультимедиа