다음을 통해 공유


미디어 세션 이벤트

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

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

 

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

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

미디어 세션