События сеанса мультимедиа
Большинство операций сеанса мультимедиа выполняются асинхронно, поэтому приложение должно прослушивать события с помощью интерфейса IMFMediaEventGenerator сеанса мультимедиа. (Интерфейс IMFMediaSession наследует IMFMediaEventGenerator.) Точная последовательность событий будет зависеть от приложения, но следующие события вызываются сеансом мультимедиа практически в любой ситуации.
Событие | Описание |
---|---|
MEEndOfPresentation | Возникает, когда источник мультимедиа завершает презентацию. В настоящее время данные могут по-прежнему перемещаться по конвейеру. |
MEError | Возникает, если во время потоковой передачи возникает ошибка. |
MESessionClosed | Возникает после завершения метода Close . Это событие является последним событием, которое помещается в очередь сеанса мультимедиа. После получения этого события можно с уверенностью завершить работу всех созданных источников мультимедиа. |
MESessionEnded | Возникает после завершения сеанса мультимедиа с последней презентацией. |
MESessionNotifyPresentationTime | Уведомляет приложение о времени начала новой презентации. |
MESessionStarted | Возникает после завершения метода Start . Если не произошла ошибка, данные перемещаются по конвейеру на этом этапе. |
MESessionTopologySet | Возникает после завершения метода SetTopology . Если не произошла ошибка, приложению не нужно предпринимать никаких действий. |
MESessionTopologyStatus | Вызывается в разное время при изменении состояния топологии. |
Метод IMFMediaSession::Shutdown не вызывает событие. Метод Shutdown является синхронным. После возврата этого метода можно с уверенностью освободить указатель обратного вызова события.
В дополнение к событиям из сеанса мультимедиа приложение может получать события из приемников мультимедиа в топологии. Это могут быть пользовательские события, определенные приемником мультимедиа, которые могут содержать произвольные данные. Например, приемник может получить данные о событиях из исходных данных, которые могут быть из ненадежного внешнего источника. Приложение должно игнорировать все события, которые оно не распознает, и проявлять осторожность при анализе данных событий.
Связанные темы