要素 | 機能 |
---|---|
Media Session | データの流れを制御し、状態イベントをアプリケーションへ送る |
Topology | Media SourceからEVRとSARへの、データの流れを定義する |
Source Resolver | URLからMedia Sourceを作成する |
Media Source |
|
Decoder | エンコードされたMedia Dataを、非圧縮の映像と音声に変換する |
EVR (Enhanced Video Renderer) | スクリーンへ、映像を作成する Enhanced Video Renderer - Win32 apps | Microsoft Learn |
SAR (Streaming Audio Renderer) | スピーカーや他の音声出力デバイスへ、音声を作成する Streaming Audio Renderer - Win32 apps | Microsoft Learn |
HRESULT hr = S_OK; // COMライブラリを初期化する hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE); // Media Foundationを初期化する hr = MFStartup(MF_VERSION); // Media Foundationを使用する処理 // 終了処理 MFShutdown(); CoUninitialize();
Media Foundationを初期化する関数で、これを呼び出していないとMedia FoundationのAPIを呼び出したときにMF_E_SHUTDOWN (0xC00D3E85) が返されます。
HRESULT MFStartup( ULONG Version, // バージョン番号。mfapi.hで定義されている、MF_VERSIONを指定する DWORD dwFlags // 初期化の方法 );MFStartup function (mfapi.h) | Microsoft Learn
dwFlagsの指定はCでは必須ですが、C++では任意です。
値 | 意味 |
---|---|
MFSTARTUP_NOSOCKET | ソケット ライブラリを初期化しない |
MFSTARTUP_LITE | MFSTARTUP_NOSOCKETと同じ |
MFSTARTUP_FULL | Media Foundation platform全体を初期化する。これはdwFlagsを省略したときの既定値 |
Media Foundation Platformを終了させる関数で、MFStartupの呼び出しごとに、1回呼ぶ必要があります。
HRESULT MFShutdown();MFShutdown function (mfapi.h) | Microsoft Learn
イベント | イベントの発生時機 | 発生させるオブジェクト |
---|---|---|
MESessionTopologyStatus | Topologyの状態が変化した | Media Session |
MEEndOfPresentation | Presentationが終了した | Media Source |
MENewPresentation | 新しいPresentationが用意できた | Media Source |
MESessionClosed | IMFMediaSession::Closeメソッドが非同期に完了した | |
︙ |
たとえばMedia Sessionでの再生時には、次のようにイベントが発生します。
またファイルの末尾に達したときには、次のようになります。