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

IWMCodecInfo

COM
IIDa970f41e-34de-4a98-b3ba-e4b3ca7528f0継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IWMCodecInfo インターフェースは、利用可能なコーデックの数と種類を取得します。

メソッド 3

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

vtbl 3 HRESULT GetCodecInfoCount(GUID* guidType, DWORD* pcCodecs)

GetCodecInfoCount メソッドは、指定したデジタルメディアのメジャータイプ(オーディオまたはビデオ)についてサポートされているコーデックの数を取得します。

guidTypeGUID*in

デジタルメディアのメジャータイプを識別する GUID です。次の定数のいずれかである必要があります。

定数 説明
WMMEDIATYPE_Video ビデオコーデックを指定します。
WMMEDIATYPE_Audio オーディオコーデックを指定します。
pcCodecsDWORD*outサポートされているコーデックの数へのポインターです。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
pcCodecs に null 値が渡されました。
E_INVALIDARG
guidType がコーデックの対象となるタイプではありません。

解説(Remarks)

このメソッドを GetCodecFormatCount および GetCodecFormat と組み合わせて使用すると、各メディアタイプでサポートされているコーデック、および各コーデックでサポートされているフォーマットを列挙できます。

Windows Media Format SDK はオーディオとビデオのコーデックのみを提供します。それ以外のメジャータイプを指定した場合、このメソッドはエラーを返します。

vtbl 4 HRESULT GetCodecFormatCount(GUID* guidType, DWORD dwCodecIndex, DWORD* pcFormat)

GetCodecFormatCount メソッドは、指定したコーデックでサポートされているフォーマットの数を取得します。各コーデックフォーマットは、そのコーデックで使用できるストリーム構成です。

guidTypeGUID*in

デジタルメディアのメジャータイプを識別する GUID です。次の定数のいずれかである必要があります。

定数 説明
WMMEDIATYPE_Video ビデオコーデックを指定します。
WMMEDIATYPE_Audio オーディオコーデックを指定します。
dwCodecIndexDWORDinguidType で指定したタイプでサポートされているコーデックの数から 1 を引いた値までの範囲(0 から始まる)のコーデックインデックスを格納する DWORD です。メジャーメディアタイプをサポートする個々のコーデックの数を取得するには、IWMCodecInfo::GetCodecInfoCount メソッドを使用します。
pcFormatDWORD*outコーデックでサポートされているフォーマットの数へのポインターです。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
pcFormat に null 値が渡されました。
E_INVALIDARG
その他の原因不明のエラーです。

解説(Remarks)

このメソッドを GetCodecFormat と組み合わせて使用すると、コーデックでサポートされているフォーマットを列挙できます。

Windows Media Format SDK はオーディオとビデオのコーデックのみを提供します。それ以外のメジャータイプを指定した場合、このメソッドはエラーを返します。

Windows Media Video コーデックに対してこのメソッドを呼び出す必要はありません。各ビデオコーデックは単一のフォーマットのみをサポートします。詳細については、ビデオストリームの構成 を参照してください。

vtbl 5 HRESULT GetCodecFormat(GUID* guidType, DWORD dwCodecIndex, DWORD dwFormatIndex, IWMStreamConfig** ppIStreamConfig)

GetCodecFormat メソッドは、指定したコーデックでサポートされているフォーマットを 1 つ取得します。このメソッドは、サポートされているフォーマットのストリーム設定を格納したストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインターを取得します。

guidTypeGUID*in

デジタルメディアのメジャータイプを識別する GUID です。次の定数のいずれかである必要があります。

定数 説明
WMMEDIATYPE_Video ビデオコーデックを指定します。
WMMEDIATYPE_Audio オーディオコーデックを指定します。
dwCodecIndexDWORDinguidType で指定したタイプでサポートされているコーデックの数から 1 を引いた値までの範囲(0 から始まる)のコーデックインデックスを格納する DWORD です。メジャータイプをサポートする個々のコーデックの数を取得するには、IWMCodecInfo::GetCodecInfoCount メソッドを使用します。
dwFormatIndexDWORDinサポートされているフォーマットの数から 1 を引いた値までの範囲(0 から始まる)のフォーマットインデックスを格納する DWORD です。コーデックでサポートされている個々のフォーマットの数を取得するには、IWMCodecInfo::GetCodecFormatCount メソッドを使用します。
ppIStreamConfigIWMStreamConfig**out指定したフォーマットの設定を格納したストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインターへのポインターです。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
無効な値または null 値が渡されました。

解説(Remarks)

このメソッドを GetCodecFormatCount と組み合わせて使用すると、コーデックでサポートされているフォーマットを列挙できます。

コーデックフォーマットは、ファイル内の圧縮データストリームの特性を表すものであり、入力メディアや出力メディアの非圧縮フォーマットとは直接の関連はありません。入力メディアデータのフォーマットは、エンコード時に IWMWriter::SetInputProps メソッドを使用して決定されます。出力メディアデータのフォーマットは、デコード時に IWMReader インターフェースまたは IWMSyncReader インターフェースの SetOutputProps メソッドを使用して決定されます。

Windows Media Format SDK はオーディオとビデオのコーデックのみを提供します。それ以外のメジャータイプを指定した場合、このメソッドはエラーを返します。

Windows Media Video コーデックはすべて単一のフォーマットをサポートしており、必要な設定を指定して完成させる必要があります。ビデオフォーマットを取得する際は、常にフォーマットインデックス 1 を使用できます。詳細については、ビデオストリームの構成 を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IWMCodecInfo "{A970F41E-34DE-4A98-B3BA-E4B3CA7528F0}"
#usecom global IWMCodecInfo IID_IWMCodecInfo "{}"
#comfunc global IWMCodecInfo_GetCodecInfoCount    3 var,var
#comfunc global IWMCodecInfo_GetCodecFormatCount  4 var,int,var
#comfunc global IWMCodecInfo_GetCodecFormat       5 var,int,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。