Управление состояниями презентации
Сеанс мультимедиа обеспечивает управление транспортировкой, например изменение состояний презентации (воспроизведение, приостановка и остановка в сценарии воспроизведения в стиле списка воспроизведения). В этом разделе описываются методы сеанса мультимедиа, которые приложение должно вызывать для изменения состояния воспроизведения.
В следующей таблице показаны допустимые переходы состояния представления.
Смена состояния | Описание |
---|---|
Воспроизведение —> приостановка | Часы презентации зависают. |
Воспроизведение —> остановка | Часы презентации сбрасываются. |
Приостановка —> воспроизведение | Часы презентации возобновляют работу с момента заморозки во время перехода "Воспроизвести на паузу". |
Приостановка —> остановка | Часы презентации сбрасываются. |
Остановка —> воспроизведение | Часы презентации начинаются с начала презентации. |
Остановка —> пауза | Не допускается. |
Изменение состояний презентации
Вызовите метод 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 .
Связанные темы