IMFMediaEngine
COM公式ドキュメント
アプリケーションがオーディオファイルやビデオファイルを再生できるようにします。
解説(Remarks)
Media Engine がこのインターフェイスを実装します。Media Engine のインスタンスを作成するには、IMFMediaEngineClassFactory::CreateInstance を呼び出します。
このインターフェイスは IMFMediaEngineEx によって拡張されています。
メソッド 42
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
最新のエラー状態を取得します。
| ppError | IMFMediaError** | out | IMFMediaError インターフェイスへのポインター、または NULL のいずれかを受け取ります。値が NULL 以外の場合、呼び出し側はインターフェイスを解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、メディアソースの読み込みに起因して発生した最後のエラー状態(存在する場合)を返します。エラーが発生していない場合、ppError は NULL を受け取ります。
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの error 属性に対応します。
現在のエラーコードを設定します。
| error | MF_MEDIA_ENGINE_ERR | in | MF_MEDIA_ENGINE_ERR 値としてのエラーコード。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
メディアソースのリストを設定します。
| pSrcElements | IMFMediaEngineSrcElements* | in | IMFMediaEngineSrcElements インターフェイスへのポインター。呼び出し側はこのインターフェイスを実装する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 でメディア要素に source 要素のリストを追加する操作に対応します。
Media Engine は、pSrcElements リスト内の各項目を、正常に読み込めるものが見つかるまで順に読み込もうとします。このメソッドを呼び出した後、アプリケーションはいつでも IMFMediaEngineSrcElements インターフェイスを使用してリストを更新できます。リストを再読み込みするには、IMFMediaEngine::Load を呼び出します。
このメソッドは非同期に完了します。操作が開始されると、Media Engine は MF_MEDIA_ENGINE_EVENT_LOADSTART イベントを送信します。Load 操作中にエラーが発生しなければ、以下を含むいくつかのイベントが生成されます。
- MF_MEDIA_ENGINE_EVENT_LOADEDMETADATA
- MF_MEDIA_ENGINE_EVENT_LOADEDDATA
- MF_MEDIA_ENGINE_EVENT_CANPLAY
- MF_MEDIA_ENGINE_EVENT_CANPLAYTHROUGH
Media Engine でのイベント処理の詳細については、IMFMediaEngineNotify を参照してください。
アプリケーションが IMFMediaEngine::SetSource も呼び出した場合、SetSource に渡された URL が SetSourceElements に指定されたリストよりも優先されます。
メディアリソースの URL を設定します。
| pUrl | LPWSTR | in | メディアリソースの URL。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの src 属性を設定する操作に対応します。
このメソッドで指定した URL は、IMFMediaEngine::SetSourceElements メソッドで指定されたメディアリソースよりも優先されます。URL を読み込むには、IMFMediaEngine::Load を呼び出します。
このメソッドは URL を非同期に読み込みます。操作が開始されると、Media Engine は MF_MEDIA_ENGINE_EVENT_LOADSTART イベントを送信します。Load 操作中にエラーが発生しなければ、以下を含むいくつかのイベントが生成されます。
- MF_MEDIA_ENGINE_EVENT_LOADEDMETADATA
- MF_MEDIA_ENGINE_EVENT_LOADEDDATA
- MF_MEDIA_ENGINE_EVENT_CANPLAY
- MF_MEDIA_ENGINE_EVENT_CANPLAYTHROUGH
Media Engine でのイベント処理の詳細については、IMFMediaEngineNotify を参照してください。
現在のメディアリソースの URL を取得します。メディアリソースが存在しない場合は空文字列を取得します。
| ppUrl | LPWSTR* | out | 現在のメディアリソースの URL を含む BSTR を受け取ります。メディアリソースが存在しない場合、ppUrl は空文字列を受け取ります。呼び出し側は SysFreeString を呼び出して BSTR を解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの currentSrc 属性に対応します。
初期状態では、現在のメディアリソースは空です。Media Engine がリソース選択アルゴリズムを実行すると更新されます。
Media Engine の現在のネットワーク状態を取得します。
戻り値
MF_MEDIA_ENGINE_NETWORK 列挙値を返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの networkState 属性に対応します。
プリロードフラグを取得します。
戻り値
MF_MEDIA_ENGINE_PRELOAD 列挙値を返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの preload 属性に対応します。この値は、メディアリソースをプリロードするかどうかについてユーザーエージェントに与えるヒントです。
プリロードフラグを設定します。
| Preload | MF_MEDIA_ENGINE_PRELOAD | in | プリロードフラグに相当する MF_MEDIA_ENGINE_PRELOAD 値。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの preload 属性を設定する操作に対応します。この値は、メディアリソースをプリロードするかどうかについてユーザーエージェントに与えるヒントです。
Media Engine がどれだけのリソースデータをバッファリングしたかを照会します。
| ppBuffered | IMFMediaTimeRange** | out | IMFMediaTimeRange インターフェイスへのポインターを受け取ります。呼び出し側はインターフェイスを解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの buffered 属性に対応します。
返される IMFMediaTimeRange インターフェイスは、時間範囲のリストを表します。これらの時間範囲は、メディアリソースのどの部分がダウンロード済みであるかを示します。時間範囲のリストは空の場合があります。
現在のメディアソースを読み込みます。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドの主な目的は、ソース要素のリストを更新した後に再読み込みすることです。詳細については、SetSourceElements を参照してください。それ以外の場合、このメソッドを呼び出す必要は通常ありません。新しいメディアソースを読み込むには、IMFMediaEngine::SetSource または IMFMediaEngine::SetSourceElements を呼び出します。
Load メソッドは、Media Engine のメディアリソース読み込みアルゴリズムを明示的に呼び出します。このメソッドを呼び出す前に、IMFMediaEngine::SetSource または IMFMediaEngine::SetSourceElements を呼び出してメディアリソースを設定する必要があります。
このメソッドは非同期に完了します。Load 操作が開始されると、Media Engine は MF_MEDIA_ENGINE_EVENT_LOADSTART イベントを送信します。Load 操作中にエラーが発生しなければ、以下を含むいくつかのイベントが生成されます。
- MF_MEDIA_ENGINE_EVENT_LOADEDMETADATA
- MF_MEDIA_ENGINE_EVENT_LOADEDDATA
- MF_MEDIA_ENGINE_EVENT_CANPLAY
- MF_MEDIA_ENGINE_EVENT_CANPLAYTHROUGH
Media Engine でのイベント処理の詳細については、IMFMediaEngineNotify を参照してください。
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの load メソッドに対応します。
Media Engine が指定された種類のメディアリソースを再生できる可能性の高さを照会します。
| type | LPWSTR | in | RFC 4281 で定義されている、任意の codecs パラメーターを含む MIME タイプを含む文字列。 |
| pAnswer | MF_MEDIA_ENGINE_CANPLAY* | out | MF_MEDIA_ENGINE_CANPLAY 列挙値を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの canPlayType 属性に対応します。
canPlayType 属性は次の値を定義しています。
| 値 | 説明 |
|---|---|
| "" (空文字列) | ユーザーエージェントがそのリソースを再生できないか、リソースの種類が "application/octet-stream" です。 |
| "probably" | ユーザーエージェントがそのリソースをおそらく再生できます。 |
| "maybe" | 上記のいずれの値にも当てはまりません。 |
"probably" という値が使用されるのは、メディアリソースの MIME タイプが一般にリソースの完全な記述にはならないためです。たとえば "video/mp4" はビデオを含む MP4 ファイルを指定しますが、コーデックは記述しません。任意の codecs パラメーターを付けても、MIME タイプでは実際の符号化ビットレートなど一部の情報が省略されます。したがって、実際のメディアリソースを開くまで再生可能かどうかを確実に判断することは通常不可能です。
現在のメディアリソースをレンダリングできるかどうかを示すレディ状態を取得します。
戻り値
MF_MEDIA_ENGINE_READY 列挙値を返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの readyState 属性に対応します。
Media Engine が現在、新しい再生位置へのシークを行っているかどうかを照会します。
戻り値
Media Engine がシーク中の場合は TRUE を、それ以外の場合は FALSE を返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの seeking 属性に対応します。
現在の再生位置を取得します。(IMFMediaEngine.GetCurrentTime)
戻り値
再生位置を秒単位で返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの currentTime 属性に対応します。
Pause を呼び出した後は、GetCurrentTime が返す時間が正確でない場合があることに注意してください。メディアエディターなど、フレーム単位で正確な位置の値を必要とするアプリは、Pause を呼び出した直後、GetCurrentTime を呼び出す前に FrameStep を呼び出す必要があります。
新しい再生位置へシークします。
| seekTime | DOUBLE | in | 新しい再生位置(秒単位)。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの currentTime 属性を設定する操作に対応します。
このメソッドは非同期に完了します。シーク操作が開始されると、Media Engine は MF_MEDIA_ENGINE_EVENT_SEEKING イベントを送信します。シーク操作が完了すると、Media Engine は MF_MEDIA_ENGINE_EVENT_SEEKED イベントを送信します。IMFMediaEventNotify::EventNotify を参照してください。
初期再生位置を取得します。
戻り値
初期再生位置を秒単位で返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの initialTime 属性に対応します。
メディアリソースの再生時間を取得します。
戻り値
再生時間を秒単位で返します。メディアデータが利用できない場合、このメソッドは非数(NaN)を返します。再生時間が無制限の場合、このメソッドは無限大の値を返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの duration 属性に対応します。
再生時間が変化すると、Media Engine は MF_MEDIA_ENGINE_EVENT_DURATIONCHANGE イベントを送信します。IMFMediaEngineNotify::EventNotify を参照してください。
現在、再生が一時停止しているかどうかを照会します。
戻り値
再生が一時停止している場合は TRUE を、それ以外の場合は FALSE を返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの paused 属性に対応します。
既定の再生速度を取得します。
戻り値
既定の再生速度を、通常(1×)再生に対する倍率として返します。負の値は逆再生を示します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの defaultPlaybackRate 属性を取得する操作に対応します。
既定の再生速度は、次回の IMFMediaEngine::Play メソッド呼び出しで使用されます。現在の再生速度を変更するには、IMFMediaEngine::SetPlaybackRate を呼び出します。
既定の再生速度を設定します。
| Rate | DOUBLE | in | 既定の再生速度を、通常(1×)再生に対する倍率で指定します。負の値は逆再生を示します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの defaultPlaybackRate 属性を設定する操作に対応します。
現在の再生速度を取得します。(IMFMediaEngine.GetPlaybackRate)
戻り値
再生速度を、通常(1×)再生に対する倍率として返します。負の値は逆再生を示します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの playbackRate 属性を取得する操作に対応します。
現在の再生速度を設定します。
| Rate | DOUBLE | in | 再生速度を、通常(1×)再生に対する倍率で指定します。負の値は逆再生を示します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの playbackRate 属性を設定する操作に対応します。
レンダリング済みの時間範囲を取得します。
| ppPlayed | IMFMediaTimeRange** | out | IMFMediaTimeRange インターフェイスへのポインターを受け取ります。呼び出し側はインターフェイスを解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの played 属性に対応します。
Media Engine が現在シーク可能な時間範囲を取得します。
| ppSeekable | IMFMediaTimeRange** | out | IMFMediaTimeRange インターフェイスへのポインターを受け取ります。呼び出し側はインターフェイスを解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの seekable 属性に対応します。
メディアソースがシークをサポートしているかどうかを確認するには、IMFMediaEngineEx::GetResourceCharacteristics を呼び出します。
再生が終了したかどうかを照会します。
戻り値
再生方向が順方向で、かつ再生がメディアリソースの末尾に到達している場合は TRUE を返します。それ以外の場合は FALSE を返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの ended 属性に対応します。
Media Engine が自動的に再生を開始するかどうかを照会します。
戻り値
Media Engine が自動的に再生を開始する場合は TRUE を、それ以外の場合は FALSE を返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの autoplay 属性に対応します。
このメソッドが TRUE を返す場合、IMFMediaEngine::Load メソッドの完了後に再生が自動的に開始されます。それ以外の場合、再生はアプリケーションが IMFMediaEngine::Play を呼び出したときに開始されます。
Media Engine が自動的に再生を開始するかどうかを指定します。
| AutoPlay | BOOL | in | TRUE の場合、Media Engine はメディアソースの読み込み後に自動的に再生を開始します。それ以外の場合、再生はアプリケーションが IMFMediaEngine::Play を呼び出すまで開始されません。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの autoplay 属性を設定する操作に対応します。
Media Engine が再生をループするかどうかを照会します。
戻り値
ループが有効な場合は TRUE を、それ以外の場合は FALSE を返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの loop 属性を取得する操作に対応します。
ループが有効な場合、再生が末尾に到達すると Media Engine はコンテンツの先頭にシークします。
Media Engine が再生をループするかどうかを指定します。
| Loop | BOOL | in | ループを有効にするには TRUE を、無効にするには FALSE を指定します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Loop が TRUE の場合、再生はソースの末尾に到達すると先頭に戻ってループします。
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの loop 属性を設定する操作に対応します。
再生を開始します。(IMFMediaEngine.Play)
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの play メソッドに対応します。
このメソッドは非同期に完了します。操作が開始されると、Media Engine は MF_MEDIA_ENGINE_EVENT_PLAY イベントを送信します。再生が進行中になると、Media Engine は MF_MEDIA_ENGINE_EVENT_PLAYING イベントを送信します。IMFMediaEventNotify::EventNotify を参照してください。
再生を一時停止します。(IMFMediaEngine.Pause)
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の HTMLMediaElement インターフェイスの pause メソッドに対応します。
このメソッドは非同期に完了します。一時停止状態への遷移が完了すると、Media Engine は MF_MEDIA_ENGINE_EVENT_PAUSE イベントを送信します。IMFMediaEventNotify::EventNotify を参照してください。
Pause を呼び出した後は、GetCurrentTime が返す時間が正確でない場合があることに注意してください。メディアエディターなど、フレーム単位で正確な位置の値を必要とするアプリは、Pause を呼び出した直後、GetCurrentTime を呼び出す前に FrameStep を呼び出す必要があります。
オーディオがミュートされているかどうかを照会します。(IMFMediaEngine.GetMuted)
戻り値
オーディオがミュートされている場合は TRUE を、それ以外の場合は FALSE を返します。
オーディオをミュートまたはミュート解除します。(IMFMediaEngine.SetMuted)
| Muted | BOOL | in | オーディオをミュートするには TRUE を、ミュート解除するには FALSE を指定します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
オーディオの音量レベルを取得します。
戻り値
音量レベルを返します。音量は減衰レベルとして表され、0.0 は無音を、1.0 は最大音量(減衰なし)を示します。
オーディオの音量レベルを設定します。
| Volume | DOUBLE | in | 音量レベル。音量は減衰レベルとして表され、0.0 は無音を、1.0 は最大音量(減衰なし)を示します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
オーディオバランスが変化すると、Media Engine は MF_MEDIA_ENGINE_EVENT_VOLUMECHANGE イベントを送信します。IMFMediaEventNotify::EventNotify を参照してください。
現在のメディアリソースがビデオストリームを含むかどうかを照会します。
戻り値
現在のメディアリソースがビデオストリームを含む場合は TRUE を返します。メディアリソースが存在しないか、メディアリソースがビデオストリームを含まない場合は FALSE を返します。
現在のメディアリソースがオーディオストリームを含むかどうかを照会します。
戻り値
現在のメディアリソースがオーディオストリームを含む場合は TRUE を返します。メディアリソースが存在しないか、メディアリソースがオーディオストリームを含まない場合は FALSE を返します。
アスペクト比を考慮して調整したビデオフレームのサイズを取得します。
| cx | DWORD* | outoptional | 幅をピクセル単位で受け取ります。 |
| cy | DWORD* | outoptional | 高さをピクセル単位で受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、正しいピクチャアスペクト比に合わせて調整します。 たとえば、エンコードされたフレームが 720 × 420 でピクチャアスペクト比が 4:3 の場合、このメソッドは 640 × 480 ピクセルに相当するサイズを返します。
ビデオストリームのピクチャアスペクト比を取得します。
| cx | DWORD* | outoptional | アスペクト比の x 成分を受け取ります。 |
| cy | DWORD* | outoptional | アスペクト比の y 成分を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Media Engine は、ピクセルアスペクト比を自動的に 1:1(正方形ピクセル)に変換します。
Media Engine をシャットダウンし、使用しているリソースを解放します。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
現在のビデオフレームを DXGI サーフェスまたは WIC ビットマップにコピーします。
| pDstSurf | IUnknown* | in | コピー先サーフェスの IUnknown インターフェイスへのポインター。 |
| pSrc | MFVideoNormalizedRect* | inoptional | コピー元の矩形を指定する MFVideoNormalizedRect 構造体へのポインター。 |
| pDst | RECT* | in | コピー先の矩形を指定する RECT 構造体へのポインター。 |
| pBorderClr | MFARGB* | inoptional | 境界色を指定する MFARGB 構造体へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
フレームサーバーモードでは、このメソッドを呼び出してビデオフレームを DXGI または WIC サーフェスに転送(blit)します。アプリケーションは、Media Engine がビデオリソースを読み込んだ後であればいつでもこのメソッドを呼び出せます。ただし通常、アプリケーションはまず IMFMediaEngine::OnVideoStreamTick を呼び出して、新しいフレームが利用可能かどうかを判断します。OnVideoStreamTick が S_OK を返した場合、アプリケーションは続いて TransferVideoFrame を呼び出します。
Media Engine は、ビデオをコピー先矩形に収まるようにスケーリングおよびレターボックス処理します。レターボックス領域は境界色で塗りつぶされます。
保護されたコンテンツの場合は、このメソッドの代わりに IMFMediaEngineProtectedContent::TransferVideoFrame メソッドを呼び出します。
新しいビデオフレームの準備ができているかどうかを Media Engine に照会します。
| pPts | LONGLONG* | out | 新しいフレームの準備ができている場合、そのフレームのプレゼンテーション時刻を受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻りコード | 説明 |
|---|---|
| メソッドは成功しましたが、Media Engine に新しいフレームはありません。 | |
| 新しいビデオフレームが表示可能な状態になっています。 |
解説(Remarks)
フレームサーバーモードでは、アプリケーションは表示デバイスで垂直帰線が発生するたびにこのメソッドを呼び出す必要があります。メソッドが S_OK を返した場合は、IMFMediaEngine::TransferVideoFrame を呼び出してフレームをレンダーターゲットに転送(blit)します。メソッドが S_FALSE を返した場合は、次の垂直帰線を待ってから再度このメソッドを呼び出します。
レンダリングモードまたはオーディオのみモードでは、このメソッドを呼び出さないでください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFMediaEngine "{98A1B0BB-03EB-4935-AE7C-93C1FA0E1C93}" #usecom global IMFMediaEngine IID_IMFMediaEngine "{}" #comfunc global IMFMediaEngine_GetError 3 sptr #comfunc global IMFMediaEngine_SetErrorCode 4 int #comfunc global IMFMediaEngine_SetSourceElements 5 sptr #comfunc global IMFMediaEngine_SetSource 6 wstr #comfunc global IMFMediaEngine_GetCurrentSource 7 var #comfunc global IMFMediaEngine_GetNetworkState 8 #comfunc global IMFMediaEngine_GetPreload 9 #comfunc global IMFMediaEngine_SetPreload 10 int #comfunc global IMFMediaEngine_GetBuffered 11 sptr #comfunc global IMFMediaEngine_Load 12 #comfunc global IMFMediaEngine_CanPlayType 13 wstr,var #comfunc global IMFMediaEngine_GetReadyState 14 #comfunc global IMFMediaEngine_IsSeeking 15 #comfunc global IMFMediaEngine_GetCurrentTime 16 #comfunc global IMFMediaEngine_SetCurrentTime 17 double #comfunc global IMFMediaEngine_GetStartTime 18 #comfunc global IMFMediaEngine_GetDuration 19 #comfunc global IMFMediaEngine_IsPaused 20 #comfunc global IMFMediaEngine_GetDefaultPlaybackRate 21 #comfunc global IMFMediaEngine_SetDefaultPlaybackRate 22 double #comfunc global IMFMediaEngine_GetPlaybackRate 23 #comfunc global IMFMediaEngine_SetPlaybackRate 24 double #comfunc global IMFMediaEngine_GetPlayed 25 sptr #comfunc global IMFMediaEngine_GetSeekable 26 sptr #comfunc global IMFMediaEngine_IsEnded 27 #comfunc global IMFMediaEngine_GetAutoPlay 28 #comfunc global IMFMediaEngine_SetAutoPlay 29 int #comfunc global IMFMediaEngine_GetLoop 30 #comfunc global IMFMediaEngine_SetLoop 31 int #comfunc global IMFMediaEngine_Play 32 #comfunc global IMFMediaEngine_Pause 33 #comfunc global IMFMediaEngine_GetMuted 34 #comfunc global IMFMediaEngine_SetMuted 35 int #comfunc global IMFMediaEngine_GetVolume 36 #comfunc global IMFMediaEngine_SetVolume 37 double #comfunc global IMFMediaEngine_HasVideo 38 #comfunc global IMFMediaEngine_HasAudio 39 #comfunc global IMFMediaEngine_GetNativeVideoSize 40 var,var #comfunc global IMFMediaEngine_GetVideoAspectRatio 41 var,var #comfunc global IMFMediaEngine_Shutdown 42 #comfunc global IMFMediaEngine_TransferVideoFrame 43 sptr,var,var,var #comfunc global IMFMediaEngine_OnVideoStreamTick 44 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFMediaEngine "{98A1B0BB-03EB-4935-AE7C-93C1FA0E1C93}" #usecom global IMFMediaEngine IID_IMFMediaEngine "{}" #comfunc global IMFMediaEngine_GetError 3 sptr #comfunc global IMFMediaEngine_SetErrorCode 4 int #comfunc global IMFMediaEngine_SetSourceElements 5 sptr #comfunc global IMFMediaEngine_SetSource 6 wstr #comfunc global IMFMediaEngine_GetCurrentSource 7 sptr #comfunc global IMFMediaEngine_GetNetworkState 8 #comfunc global IMFMediaEngine_GetPreload 9 #comfunc global IMFMediaEngine_SetPreload 10 int #comfunc global IMFMediaEngine_GetBuffered 11 sptr #comfunc global IMFMediaEngine_Load 12 #comfunc global IMFMediaEngine_CanPlayType 13 wstr,sptr #comfunc global IMFMediaEngine_GetReadyState 14 #comfunc global IMFMediaEngine_IsSeeking 15 #comfunc global IMFMediaEngine_GetCurrentTime 16 #comfunc global IMFMediaEngine_SetCurrentTime 17 double #comfunc global IMFMediaEngine_GetStartTime 18 #comfunc global IMFMediaEngine_GetDuration 19 #comfunc global IMFMediaEngine_IsPaused 20 #comfunc global IMFMediaEngine_GetDefaultPlaybackRate 21 #comfunc global IMFMediaEngine_SetDefaultPlaybackRate 22 double #comfunc global IMFMediaEngine_GetPlaybackRate 23 #comfunc global IMFMediaEngine_SetPlaybackRate 24 double #comfunc global IMFMediaEngine_GetPlayed 25 sptr #comfunc global IMFMediaEngine_GetSeekable 26 sptr #comfunc global IMFMediaEngine_IsEnded 27 #comfunc global IMFMediaEngine_GetAutoPlay 28 #comfunc global IMFMediaEngine_SetAutoPlay 29 int #comfunc global IMFMediaEngine_GetLoop 30 #comfunc global IMFMediaEngine_SetLoop 31 int #comfunc global IMFMediaEngine_Play 32 #comfunc global IMFMediaEngine_Pause 33 #comfunc global IMFMediaEngine_GetMuted 34 #comfunc global IMFMediaEngine_SetMuted 35 int #comfunc global IMFMediaEngine_GetVolume 36 #comfunc global IMFMediaEngine_SetVolume 37 double #comfunc global IMFMediaEngine_HasVideo 38 #comfunc global IMFMediaEngine_HasAudio 39 #comfunc global IMFMediaEngine_GetNativeVideoSize 40 sptr,sptr #comfunc global IMFMediaEngine_GetVideoAspectRatio 41 sptr,sptr #comfunc global IMFMediaEngine_Shutdown 42 #comfunc global IMFMediaEngine_TransferVideoFrame 43 sptr,sptr,sptr,sptr #comfunc global IMFMediaEngine_OnVideoStreamTick 44 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。