IWMCodecInfo2
COM公式ドキュメント
IWMCodecInfo2 インターフェースは、コーデックに関する情報の取得を管理します。アクセスするには、プロファイルマネージャーオブジェクトに対して QueryInterface を呼び出します。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetCodecName メソッドは、指定したコーデックの名前を取得します。
| guidType | GUID* | in | デジタルメディアのメジャータイプを識別する GUID。次の定数のいずれかである必要があります。
| ||||||
| dwCodecIndex | DWORD | in | guidType で指定された種類のサポートされるコーデック数から 1 を引いた値までの範囲(0 から開始)のコーデックインデックスを格納する DWORD。メジャータイプをサポートする個々のコーデックの数を取得するには、IWMCodecInfo::GetCodecInfoCount メソッドを使用します。 | ||||||
| wszName | LPWSTR | out | コーデック名を受け取る、ワイド文字の null 終端文字列へのポインター。 | ||||||
| pcchName | DWORD* | inout | 入力時には、バッファー wszName のサイズ(ワイド文字単位)を格納する DWORD へのポインター。出力時には、終端の null 文字を含む wszName 内の文字数を格納する変数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 無効な値または null 値が渡されました。 |
解説(Remarks)
GetCodecName は 2 回呼び出す必要があります。1 回目の呼び出しでは、wszName に NULL を渡します。戻り時に、pcchName の値には、終端文字を含めてコーデック名を格納するのに必要なバッファーサイズが設定されます。その後、必要な量のメモリをバッファーに割り当て、2 回目の呼び出しでそのポインターを wszName として渡します。
GetCodecFormatDesc メソッドは、指定したコーデック形式の説明を取得します。また、このメソッドはコーデック形式の設定を格納するストリーム構成オブジェクトも取得します。
| 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 インターフェースへのポインターへのポインター。説明文字列のサイズを取得するために GetCodecFormatDesc を呼び出す場合は、このパラメーターに NULL を渡します。 | ||||||
| wszDesc | LPWSTR | out | コーデック形式の説明を格納する、ワイド文字の null 終端文字列へのポインター。 | ||||||
| pcchDesc | DWORD* | inout | 入力時には、wszDesc バッファーの長さへのポインター。出力時には、終端の null 文字を含むコーデック形式の説明文字列の長さへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 無効な値または null 値が渡されました。 |
解説(Remarks)
GetCodecFormatDesc は 2 回呼び出す必要があります。1 回目の呼び出しでは、wszDesc に NULL を渡します。戻り時に、pcchDesc が指す値には、終端の null 文字を含めて説明を格納するのに必要なワイド文字数が設定されます。その後、適切なサイズのバッファーを割り当て、2 回目の呼び出しでそのポインターを wszDesc として渡します。
Windows Media Audio 9 コーデックと Windows Media Audio 9 Professional コーデックの一部の形式は、説明が非常によく似ています。たとえば、"64 kbps, 44 kHz, stereo CBR" と "64 kbps, 44 kHz, stereo (A/V) CBR" の両方が表示されます。このような場合、説明に "(A/V)" が含まれる形式は、1 つ以上のビデオストリームも含むファイルでの使用を想定して設計されています。もう一方の形式は、オーディオのみを含むファイル用です。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMCodecInfo2 "{AA65E273-B686-4056-91EC-DD768D4DF710}" #usecom global IWMCodecInfo2 IID_IWMCodecInfo2 "{}" #comfunc global IWMCodecInfo2_GetCodecName 6 var,int,var,var #comfunc global IWMCodecInfo2_GetCodecFormatDesc 7 var,int,int,sptr,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWMCodecInfo2 "{AA65E273-B686-4056-91EC-DD768D4DF710}" #usecom global IWMCodecInfo2 IID_IWMCodecInfo2 "{}" #comfunc global IWMCodecInfo2_GetCodecName 6 sptr,int,sptr,sptr #comfunc global IWMCodecInfo2_GetCodecFormatDesc 7 sptr,int,int,sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。