メディア セッション イベント
メディア セッションの操作のほとんどは非同期的に実行されるため、アプリケーションはメディア セッションの IMFMediaEventGenerator インターフェイスを使用してイベントをリッスンする必要があります。 (IMFMediaSession インターフェイスは、IMFMediaEventGenerator 継承します)。イベントの正確なシーケンスはアプリケーションによって異なりますが、ほとんどの状況でメディア セッションによって次のイベントが発生します。
出来事 | 形容 |
---|---|
MEEndOfPresentation の | メディア ソースがプレゼンテーションを完了したときに発生します。 現時点では、データは引き続きパイプライン内を移動している可能性があります。 |
MEError | ストリーミング中にエラーが発生した場合に発生します。 |
MESessionClosed | Close メソッドが完了したときに発生します。 このイベントは、メディア セッションがキューに入る最後のイベントです。 このイベントを受信した後は、作成したメディア ソースを安全にシャットダウンできます。 |
MESessionEnded | メディア セッションが最後のプレゼンテーションで完了したときに発生します。 |
MESessionNotifyPresentationTime | 新しいプレゼンテーションが開始されるときに、プレゼンテーションの時刻をアプリケーションに通知します。 |
MESessionStarted | Start メソッドが完了したときに発生します。 エラーが発生しない限り、この時点でデータはパイプライン内を移動しています。 |
MESessionTopologySet | SetTopology メソッドが完了したときに発生します。 エラーが発生しない限り、アプリケーションは何も実行する必要はありません。 |
MESessionTopologyStatus | トポロジの状態が変わると、さまざまなタイミングで発生します。 |
IMFMediaSession::Shutdown メソッドはイベントを発生しません。 Shutdown メソッドは同期的です。 このメソッドが戻った後は、イベント コールバック ポインターを解放しても安全です。
アプリケーションは、メディア セッションからのイベントに加えて、トポロジ内のメディア シンクからイベントを受信する場合があります。 これらは、任意のデータを含む可能性があるメディア シンクによって定義されるカスタム イベントです。 たとえば、シンクは、信頼されていない外部ソースから発生する可能性があるソース データからイベント データを派生させる場合があります。 アプリケーションでは、認識されないイベントは無視し、イベント データを解析するときは注意が必要です。
関連トピック