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