メディア セッション イベント

メディア セッションの操作のほとんどは非同期的に実行されるため、アプリケーションはメディア セッションの IMFMediaEventGenerator インターフェイスを使用してイベントをリッスンする必要があります。 ( IMFMediaSession インターフェイスは IMFMediaEventGenerator を継承します)。イベントの正確なシーケンスはアプリケーションによって異なりますが、ほぼすべての状況でメディア セッションによって次のイベントが発生します。

Event 説明
MEEndOfPresentation メディア ソースがプレゼンテーションを完了したときに発生します。 現時点では、データがパイプライン内を移動している可能性があります。
MEError ストリーミング中にエラーが発生した場合に発生します。
MESessionClosed Close メソッドが完了したときに発生します。 このイベントは、メディア セッションがキューに入る最後のイベントです。 このイベントを受信した後は、作成したメディア ソースをシャットダウンしても問題ありません。
MESessionEnded メディア セッションが最後のプレゼンテーションで完了したときに発生します。
MESessionNotifyPresentationTime 新しいプレゼンテーションが開始されるプレゼンテーション時刻をアプリケーションに通知します。
MESessionStarted Start メソッドが完了したときに発生します。 エラーが発生しない限り、この時点でデータはパイプライン内を移動しています。
MESessionTopologySet SetTopology メソッドが完了したときに発生します。 エラーが発生しない限り、アプリケーションは何もアクションを実行する必要はありません。
MESessionTopologyStatus トポロジの状態が変わると、さまざまなタイミングで発生します。

 

IMFMediaSession::Shutdown メソッドはイベントを発生させません。 Shutdown メソッドは同期的です。 このメソッドが返された後は、イベント コールバック ポインターを解放しても安全です。

アプリケーションは、メディア セッションからのイベントに加えて、トポロジ内のメディア シンクからイベントを受信する場合があります。 これらは、任意のデータを含む可能性があるメディア シンクによって定義されるカスタム イベントです。 たとえば、シンクは、信頼されていない外部ソースから可能なソース データからイベント データを派生させることができます。 アプリケーションでは、認識されないイベントは無視し、イベント データを解析するときは注意が必要です。

メディア セッション