IMFMediaType
COM公式ドキュメント
メディア形式の記述を表します。
解説(Remarks)
新しいメディア型を作成するには、MFCreateMediaType を呼び出します。
メディア型内のすべての情報は属性として格納されます。メディア型を複製するには、IMFAttributes::CopyAllItems を呼び出します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで使用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
形式のメジャー型を取得します。
| pguidMajorType | GUID* | out | メジャー型の GUID を受け取ります。メジャー型は、オーディオやビデオなど、形式の大まかなカテゴリを表します。使用可能な値の一覧については、Major Media Types を参照してください。 |
戻り値
このメソッドは HRESULT を返します。使用可能な値には次の表のものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| メジャー型が設定されていません。 |
解説(Remarks)
このメソッドは、メディア型から MF_MT_MAJOR_TYPE 属性を取得することと同等です。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで使用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
メディア型が時間方向に圧縮された形式かどうかを照会します。
| pfCompressed | BOOL* | out | ブール値を受け取ります。形式が時間方向の圧縮を使用する場合は値が TRUE、形式が時間方向の圧縮を使用しない場合は FALSE になります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、メディア型の MF_MT_ALL_SAMPLES_INDEPENDENT 属性が TRUE の場合、pfCompressed に FALSE を返します。MF_MT_ALL_SAMPLES_INDEPENDENT 属性が FALSE であるか設定されていない場合、このメソッドは TRUE を返します。
このメソッドが pfCompressed に TRUE を返す場合、それは形式に時間方向の圧縮が適用されているというヒントになります。このメソッドが FALSE を返す場合、その形式はフレーム内圧縮を使用している可能性はありますが、時間方向の圧縮は使用していません。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで使用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
2 つのメディア型を比較し、それらが同一かどうかを判定します。同一でない場合、このメソッドは 2 つの形式がどのように異なるかを示します。
| pIMediaType | IMFMediaType* | in | 比較するメディア型の IMFMediaType インターフェイスへのポインター。 | ||||||||||
| pdwFlags | DWORD* | out | 2 つのメディア型間の類似度を示す、0 個以上のフラグのビットごとの OR を受け取ります。次のフラグが定義されています。
|
戻り値
このメソッドは HRESULT を返します。使用可能な値には次の表のものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| 型が等しくありません。型がどのように異なるかを判断するには、pdwFlags パラメーターを調べてください。 | |
| 型が等しいです。 | |
| 一方または両方のメディア型が無効です。 |
解説(Remarks)
両方のメディア型がメジャー型を持っている必要があります。そうでない場合、このメソッドは E_INVALIDARG を返します。
このメソッドが成功し、pdwFlags にすべての比較フラグが設定されている場合、戻り値は S_OK です。このメソッドが成功したものの、1 つ以上の比較フラグが設定されていない場合、このメソッドは S_FALSE を返します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで使用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
メディア型の代替表現を取得します。現在サポートされているのは DirectShow の AM_MEDIA_TYPE 構造体のみです。
| guidRepresentation | GUID | in | 取得する表現を指定する GUID。次の値が定義されています。
| ||||||||||
| ppvRepresentation | void** | out | 表現を含む構造体へのポインターを受け取ります。このメソッドが構造体のメモリを割り当てます。呼び出し側は IMFMediaType::FreeRepresentation を呼び出してメモリを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。使用可能な値には次の表のものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| メディア型の詳細が、要求された表現と一致しません。 | |
| メディア型が有効ではありません。 | |
| メディア型が、要求された表現をサポートしていません。 |
解説(Remarks)
guidRepresentation パラメーターで VIDEOINFOHEADER などの特定の形式構造体を要求すると、形式情報の一部が失われる可能性があります。
MFInitAMMediaTypeFromMFMediaType 関数を使用して、Media Foundation のメディア型を DirectShow のメディア型に変換することもできます。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで使用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
IMFMediaType::GetRepresentation メソッドによって割り当てられたメモリを解放します。
| guidRepresentation | GUID | in | GetRepresentation メソッドに渡された GUID。 |
| pvRepresentation | void* | in | GetRepresentation メソッドによって返されたバッファーへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで使用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFMediaType "{44AE0FA8-EA31-4109-8D2E-4CAE4997C555}" #usecom global IMFMediaType IID_IMFMediaType "{}" #comfunc global IMFMediaType_GetMajorType 33 var #comfunc global IMFMediaType_IsCompressedFormat 34 var #comfunc global IMFMediaType_IsEqual 35 sptr,var #comfunc global IMFMediaType_GetRepresentation 36 int,sptr #comfunc global IMFMediaType_FreeRepresentation 37 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFMediaType "{44AE0FA8-EA31-4109-8D2E-4CAE4997C555}" #usecom global IMFMediaType IID_IMFMediaType "{}" #comfunc global IMFMediaType_GetMajorType 33 sptr #comfunc global IMFMediaType_IsCompressedFormat 34 sptr #comfunc global IMFMediaType_IsEqual 35 sptr,sptr #comfunc global IMFMediaType_GetRepresentation 36 int,sptr #comfunc global IMFMediaType_FreeRepresentation 37 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。