媒體會話事件

大部分的媒體會話作業都是以非同步方式執行,因此應用程式必須使用媒體會話的 IMFMediaEventGenerator 介面來接聽事件。 (IMFMediaSession 介面繼承 了 IMFMediaEventGenerator.) 確切的事件順序將取決於您的應用程式,但媒體會話幾乎在任何情況下都會引發下列事件。

事件 描述
MEEndOfPresentation 當媒體來源完成簡報時引發。 資料目前可能仍在通過管線。
MEError 如果在串流期間發生錯誤,則引發。
MESessionClosed Close方法完成時引發。 此事件是媒體會話佇列的最後一個事件。 收到此事件之後,請放心地關閉您所建立的任何媒體來源。
MESessionEnded 當媒體會話完成最後一個簡報時引發。
MESessionNotifyPresentationTime 通知新簡報啟動時的簡報時間應用程式。
MESessionStarted 當 Start方法完成時引發。 除非發生錯誤,否則資料會在此時間點通過管線。
MESessionTopologySet 當 SetTopology方法完成時引發。 除非發生錯誤,否則應用程式不需要採取任何動作。
MESessionTopologyStatus 當拓撲的狀態變更時,會在各種時間引發。

 

IMFMediaSession::Shutdown方法不會引發事件。 Shutdown方法是同步的。 此方法傳回之後,您可以放心地釋放事件回呼指標。

除了來自媒體會話的事件之外,應用程式可能會從拓撲中的媒體接收接收事件。 這些可以是媒體接收所定義的自訂事件,其中可能包含任意資料。 例如,接收可能會從來源資料衍生事件資料,這可能是來自不受信任的外部來源。 應用程式應該忽略它無法辨識的任何事件,並在剖析事件資料時小心。

媒體會話