Win32 API 日本語リファレンス
ホームMedia.WindowsMediaFormat › IWMMediaProps

IWMMediaProps

COM
IID96406bce-2b2b-11d3-b36b-00c04f6108ff継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IWMMediaProps インターフェイスは、入力、ストリーム、または出力に対する WM_MEDIA_TYPE 構造体を設定および取得します。入力とストリームの場合、メディアタイプ構造体の内容によって、ファイルの書き込み時にライターオブジェクトが入力データに対して実行する処理が決まります。通常、入力のメディアタイプは非圧縮タイプであり、ストリームは圧縮タイプであるため、それぞれのメディアタイプ構造体の内容によって、ライターがストリームを圧縮するコーデックに渡す設定が決まります。出力の場合、メディアタイプ構造体は、ストリームの内容を展開するために使用される設定を決定します。Windows Media コーデックは、さまざまな形式で出力コンテンツを提供できます。IWMMediaProps のメソッドは IWMVideoMediaProps に継承され、ビデオメディアタイプを指定するための追加設定へのアクセスを提供します。これらのメソッドは IWMInputMediaProps および IWMOutputMediaProps にも継承されます。IWMMediaProps インターフェイスのインスタンスは、すべてのストリーム構成オブジェクト、入力メディアプロパティオブジェクト、および出力メディアプロパティオブジェクトに存在します。これらのオブジェクトのいずれかに含まれる他のインターフェイスの QueryInterface メソッドを呼び出すことで、このインターフェイスへのポインターを取得できます。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetType(GUID* pguidType)

GetType メソッドは、現在の IWMMediaProps インターフェイスが属するオブジェクトによって記述されるストリーム、入力、または出力内のメディアのメジャータイプを取得します。

pguidTypeGUID*outメディアタイプを指定する GUID へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pguidType パラメーターが NULL です。

解説(Remarks)

これらのメディアタイプは、ライター、リーダー、およびプロファイルの各オブジェクトによって、メディアタイプに固有のメディアストリームのプロパティを識別するために使用されます。

GetType は利便性のために提供されており、WM_MEDIA_TYPEmajortype メンバーと同じ値を返します。

vtbl 4 HRESULT GetMediaType(WM_MEDIA_TYPE* pType, DWORD* pcbType)

GetMediaType メソッドは、メディアタイプを記述する構造体を取得します。

pTypeWM_MEDIA_TYPE*outWM_MEDIA_TYPE 構造体へのポインター。このパラメーターが NULL に設定されている場合、このメソッドは必要なバッファーのサイズを pcbType パラメーターに返します。
pcbTypeDWORD*inout入力時には、pType バッファーのサイズです。出力時には、pTypeNULL に設定されている場合、これが指す値はメディアタイプ構造体を保持するために必要なバッファーのサイズに設定されます。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pcbType パラメーターが NULL です。
ASF_E_BUFFERTOOSMALL
pcbType パラメーターが十分な大きさではありません。

解説(Remarks)

GetMediaType は 2 回呼び出す必要があります。1 回目の呼び出しでは、pType として NULL を渡します。戻り時に、pcbType の値が WM_MEDIA_TYPE 構造体を保持するために必要なバッファーサイズに設定されます。その後、必要なサイズのバッファーを割り当て、2 回目の呼び出しでそのポインターを pType として渡すことができます。

vtbl 5 HRESULT SetMediaType(WM_MEDIA_TYPE* pType)

SetMediaType メソッドは、メディアタイプを指定します。

pTypeWM_MEDIA_TYPE*in入力、ストリーム、または出力を記述する WM_MEDIA_TYPE 構造体へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pType パラメーターが NULL であるか、cbFormat が 0 もしくは大きすぎるか、または pbFormat が NULL です。
E_OUTOFMEMORY
使用可能なメモリが不足しています。

解説(Remarks)

このメソッドでメディアタイプの設定に成功しても、最終的にプロファイルがライターに設定される際に無効として拒否される場合があります。ライターがプロファイルに対して実行するテストの一覧については、IWMWriter::SetProfile を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IWMMediaProps "{96406BCE-2B2B-11D3-B36B-00C04F6108FF}"
#usecom global IWMMediaProps IID_IWMMediaProps "{}"
#comfunc global IWMMediaProps_GetType       3 var
#comfunc global IWMMediaProps_GetMediaType  4 var,var
#comfunc global IWMMediaProps_SetMediaType  5 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。