Share via


미디어 세션 이벤트

대부분의 미디어 세션 작업은 비동기적으로 수행되므로 애플리케이션은 미디어 세션의 IMFMediaEventGenerator 인터페이스를 사용하여 이벤트를 수신 대기해야 합니다. ( IMFMediaSession 인터페이스는 IMFMediaEventGenerator를 상속합니다.) 이벤트의 정확한 순서는 애플리케이션에 따라 달라지지만 거의 모든 상황에서 미디어 세션에서 다음 이벤트가 발생합니다.

이벤트 설명
MEEndOfPresentation 미디어 원본이 프레젠테이션을 완료했을 때 발생합니다. 현재 데이터가 파이프라인을 통해 이동 중일 수 있습니다.
MEError 스트리밍 중에 오류가 발생하면 발생합니다.
MESessionClosed Close 메서드가 완료될 때 발생합니다. 이 이벤트는 미디어 세션이 큐에 대기하는 마지막 이벤트입니다. 이 이벤트를 수신한 후에는 만든 미디어 원본을 종료해도 안전합니다.
MESessionEnded 미디어 세션이 마지막 프레젠테이션으로 완료될 때 발생합니다.
MESessionNotifyPresentationTime 새 프레젠테이션이 시작될 때 애플리케이션에 프레젠테이션 시간을 알 수 있습니다.
MESessionStarted Start 메서드가 완료될 때 발생합니다. 오류가 발생하지 않는 한 데이터는 이 시점에서 파이프라인을 통해 이동됩니다.
MESessionTopologySet SetTopology 메서드가 완료될 때 발생합니다. 오류가 발생하지 않는 한 애플리케이션은 아무 작업도 수행할 필요가 없습니다.
MESessionTopologyStatus 토폴로지의 상태 변경될 때 다양한 시간에 발생합니다.

 

IMFMediaSession::Shutdown 메서드는 이벤트를 발생시키지 않습니다. Shutdown 메서드는 동기적입니다. 이 메서드가 반환되면 이벤트 콜백 포인터를 해제해도 안전합니다.

미디어 세션의 이벤트 외에도 애플리케이션은 토폴로지의 미디어 싱크에서 이벤트를 수신할 수 있습니다. 이러한 이벤트는 미디어 싱크에서 정의한 사용자 지정 이벤트로, 임의 데이터를 포함할 수 있습니다. 예를 들어 싱크는 신뢰할 수 없는 외부 원본에서 발생할 수 있는 원본 데이터에서 이벤트 데이터를 파생시킬 수 있습니다. 애플리케이션은 인식하지 못하는 이벤트를 무시하고 이벤트 데이터를 구문 분석할 때 주의해야 합니다.

미디어 세션