IWMCodecInfo
COM公式ドキュメント
IWMCodecInfo インターフェースは、利用可能なコーデックの数と種類を取得します。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetCodecInfoCount メソッドは、指定したデジタルメディアのメジャータイプ(オーディオまたはビデオ)についてサポートされているコーデックの数を取得します。
| guidType | GUID* | in | デジタルメディアのメジャータイプを識別する GUID です。次の定数のいずれかである必要があります。
| ||||||
| pcCodecs | DWORD* | out | サポートされているコーデックの数へのポインターです。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pcCodecs に null 値が渡されました。 | |
| guidType がコーデックの対象となるタイプではありません。 |
解説(Remarks)
このメソッドを GetCodecFormatCount および GetCodecFormat と組み合わせて使用すると、各メディアタイプでサポートされているコーデック、および各コーデックでサポートされているフォーマットを列挙できます。
Windows Media Format SDK はオーディオとビデオのコーデックのみを提供します。それ以外のメジャータイプを指定した場合、このメソッドはエラーを返します。
GetCodecFormatCount メソッドは、指定したコーデックでサポートされているフォーマットの数を取得します。各コーデックフォーマットは、そのコーデックで使用できるストリーム構成です。
| guidType | GUID* | in | デジタルメディアのメジャータイプを識別する GUID です。次の定数のいずれかである必要があります。
| ||||||
| dwCodecIndex | DWORD | in | guidType で指定したタイプでサポートされているコーデックの数から 1 を引いた値までの範囲(0 から始まる)のコーデックインデックスを格納する DWORD です。メジャーメディアタイプをサポートする個々のコーデックの数を取得するには、IWMCodecInfo::GetCodecInfoCount メソッドを使用します。 | ||||||
| pcFormat | DWORD* | out | コーデックでサポートされているフォーマットの数へのポインターです。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pcFormat に null 値が渡されました。 | |
| その他の原因不明のエラーです。 |
解説(Remarks)
このメソッドを GetCodecFormat と組み合わせて使用すると、コーデックでサポートされているフォーマットを列挙できます。
Windows Media Format SDK はオーディオとビデオのコーデックのみを提供します。それ以外のメジャータイプを指定した場合、このメソッドはエラーを返します。
Windows Media Video コーデックに対してこのメソッドを呼び出す必要はありません。各ビデオコーデックは単一のフォーマットのみをサポートします。詳細については、ビデオストリームの構成 を参照してください。
GetCodecFormat メソッドは、指定したコーデックでサポートされているフォーマットを 1 つ取得します。このメソッドは、サポートされているフォーマットのストリーム設定を格納したストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインターを取得します。
| guidType | GUID* | in | デジタルメディアのメジャータイプを識別する GUID です。次の定数のいずれかである必要があります。
| ||||||
| dwCodecIndex | DWORD | in | guidType で指定したタイプでサポートされているコーデックの数から 1 を引いた値までの範囲(0 から始まる)のコーデックインデックスを格納する DWORD です。メジャータイプをサポートする個々のコーデックの数を取得するには、IWMCodecInfo::GetCodecInfoCount メソッドを使用します。 | ||||||
| dwFormatIndex | DWORD | in | サポートされているフォーマットの数から 1 を引いた値までの範囲(0 から始まる)のフォーマットインデックスを格納する DWORD です。コーデックでサポートされている個々のフォーマットの数を取得するには、IWMCodecInfo::GetCodecFormatCount メソッドを使用します。 | ||||||
| ppIStreamConfig | IWMStreamConfig** | out | 指定したフォーマットの設定を格納したストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインターへのポインターです。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 無効な値または null 値が渡されました。 |
解説(Remarks)
このメソッドを GetCodecFormatCount と組み合わせて使用すると、コーデックでサポートされているフォーマットを列挙できます。
コーデックフォーマットは、ファイル内の圧縮データストリームの特性を表すものであり、入力メディアや出力メディアの非圧縮フォーマットとは直接の関連はありません。入力メディアデータのフォーマットは、エンコード時に IWMWriter::SetInputProps メソッドを使用して決定されます。出力メディアデータのフォーマットは、デコード時に IWMReader インターフェースまたは IWMSyncReader インターフェースの SetOutputProps メソッドを使用して決定されます。
Windows Media Format SDK はオーディオとビデオのコーデックのみを提供します。それ以外のメジャータイプを指定した場合、このメソッドはエラーを返します。
Windows Media Video コーデックはすべて単一のフォーマットをサポートしており、必要な設定を指定して完成させる必要があります。ビデオフォーマットを取得する際は、常にフォーマットインデックス 1 を使用できます。詳細については、ビデオストリームの構成 を参照してください。
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 指定が可能。#define global IID_IWMCodecInfo "{A970F41E-34DE-4A98-B3BA-E4B3CA7528F0}" #usecom global IWMCodecInfo IID_IWMCodecInfo "{}" #comfunc global IWMCodecInfo_GetCodecInfoCount 3 sptr,sptr #comfunc global IWMCodecInfo_GetCodecFormatCount 4 sptr,int,sptr #comfunc global IWMCodecInfo_GetCodecFormat 5 sptr,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。