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


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

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

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

Изменение состояния Описание
Воспроизведение — пауза> Таймер презентации зависает.
Воспроизведение -> Остановка Часы презентации сбрасываются.
Пауза — воспроизведение> Часы презентации возобновляются с момента, когда они были заморожены в переходе от воспроизведения к паузе.
Пауза —> Остановка Часы презентации сбрасываются.
Остановка —> играть Таймер для презентации запускается с её начала.
Остановка — пауза> Запрещено.

 

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

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

    hr = pMediaSession->Pause();
    

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

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

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

    hr = pMediaSession->Stop();
    

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

  • Вызовите метод IMFMediaSession::Start для запуска воспроизведения или поиска новой позиции.

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

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

медиасеанс