IAMVideoCompression::GetInfo
GetInfo メソッドは、機能や既定値といった、フィルタの圧縮プロパティに関する情報を取得する。
構文
HRESULT GetInfo(
WCHAR *pszVersion,
int *pcbVersion,
LPWSTR pszDescription,
int *pcbDescription,
long *pDefaultKeyFrameRate,
long *pDefaultPFramesPerKey,
double *pDefaultQuality,
long *pCapabilities
) PURE;
パラメータ
pszVersion
[out] "Version 2.1.0" などのバージョン文字列を受け取るバッファへのポインタ。
pcbVersion
[in, out] バージョン文字列のサイズ (バイト単位) を受け取る変数へのポインタ。
pszDescription
[out] "My Video Compressor" などの説明文字列を受け取るバッファへのポインタ。
pcbDescription
[in, out] 説明文字列の長さを受け取る変数へのポインタ。
pDefaultKeyFrameRate
[out] 既定のキー フレーム レートを受け取る変数へのポインタ。
pDefaultPFramesPerKey
[out] キー フレームごとの既定の予測 (P) フレーム数を受け取る変数へのポインタ。
pDefaultQuality
[out] 既定の品質を受け取る変数へのポインタ。
pCapabilities
[out] 0 個以上の CompressionCaps フラグのビット単位の論理和として圧縮機能を受け取る変数へのポインタ。
戻り値
HRESULT 値を返す。
注意
リストした引数はいずれも NULL の場合がある。その場合、メソッドはその引数を無視する。
アプリケーションは、バージョン文字列と説明文字列にバッファを割り当てる。バッファの必要サイズを調べるには、pszVersion および pszDescription 引数の値として NULL を使ってこのメソッドを呼び出す。pcbVersion および pcbDescription に返される値を使ってバッファを割り当て、もう一度メソッドを呼び出す。以下のコードを参照。
int cbVersion, cbDesc; // サイズは文字数ではなくバイト数。
hr = pCompress->GetInfo(0, &cbVersion, 0, &cbDesc, 0, 0, 0, 0);
if (SUCCEEDED(hr))
{
WCHAR *pszVersion = new WCHAR[cbVersion/2]; // ワイド文字 = 2 バイト。
WCHAR *pszDesc = new WCHAR[cbDesc/2];
if (pszVersion && pszDesc)
{
hr = pCompress->GetInfo(pszVersion, 0, pszDesc, 0, 0, 0, 0, 0);
}
delete [] pszVersion;
delete [] pszDesc;
}
文字列はワイド文字列であり、返されるサイズは文字数ではなくバイトであることに注意。また、どちらかまたは両方の文字列の長さがゼロの場合がある。
pCapabilities 引数は、どの圧縮プロパティがサポートされているか、またどの IAMVideoCompression メソッドがサポートされているかを示すフラグのセットを受け取る。たとえば、CompressionCaps_CanKeyFrame フラグが返された場合、フィルタは IAMVideoCompression::get_KeyFrameRate および IAMVideoCompression::put_KeyFrameRate メソッドをサポートする。
残りの引数は、圧縮プロパティの既定値を受け取る。pCapabilities に返されるフラグによって決定される、サポートされないプロパティについては、正しくないか意味がない場合があるため、対応する既定値は無視すべきである。
参照