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

IAMVideoCompression

COM
IIDc6e13343-30ac-11d0-a18c-00a0c9118956継承元IUnknown自前メソッド開始 vtbl3

メソッド 11

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

vtbl 3 HRESULT put_KeyFrameRate(INT KeyFrameRate)
KeyFrameRateINTinキーフレームの間隔(フレーム数)を設定する。
vtbl 4 HRESULT get_KeyFrameRate(INT* pKeyFrameRate)
pKeyFrameRateINT*out現在のキーフレーム間隔(フレーム数)を受け取る出力先。
vtbl 5 HRESULT put_PFramesPerKeyFrame(INT PFramesPerKeyFrame)
PFramesPerKeyFrameINTinキーフレーム1枚あたりのPフレーム数を設定する。
vtbl 6 HRESULT get_PFramesPerKeyFrame(INT* pPFramesPerKeyFrame)
pPFramesPerKeyFrameINT*out現在のキーフレームあたりPフレーム数を受け取る出力先。
vtbl 7 HRESULT put_Quality(DOUBLE Quality)
QualityDOUBLEin圧縮品質を0.0〜1.0の範囲で設定する。1.0が最高品質。
vtbl 8 HRESULT get_Quality(DOUBLE* pQuality)
pQualityDOUBLE*out現在の圧縮品質(0.0〜1.0)を受け取る出力先。
vtbl 9 HRESULT put_WindowSize(ULONGLONG WindowSize)
WindowSizeULONGLONGinデータレート制御に用いるウィンドウサイズ(フレーム数)を設定する。
vtbl 10 HRESULT get_WindowSize(ULONGLONG* pWindowSize)
pWindowSizeULONGLONG*out現在のデータレート制御ウィンドウサイズを受け取る出力先。
vtbl 11 HRESULT GetInfo(LPWSTR pszVersion, INT* pcbVersion, LPWSTR pszDescription, INT* pcbDescription, INT* pDefaultKeyFrameRate, INT* pDefaultPFramesPerKey, DOUBLE* pDefaultQuality, INT* pCapabilities)
pszVersionLPWSTRoutoptional圧縮ドライバのバージョン文字列を受け取るバッファ。NULL可(長さ取得用)。
pcbVersionINT*inoutoptionalpszVersionの必要/使用バイト数を受け取る入出力。
pszDescriptionLPWSTRoutoptional圧縮ドライバの説明文字列を受け取るバッファ。NULL可。
pcbDescriptionINT*inoutoptionalpszDescriptionの必要/使用バイト数を受け取る入出力。
pDefaultKeyFrameRateINT*outoptional既定のキーフレーム間隔を受け取る出力先。NULL可。
pDefaultPFramesPerKeyINT*outoptional既定のキーフレームあたりPフレーム数を受け取る出力先。NULL可。
pDefaultQualityDOUBLE*outoptional既定の圧縮品質を受け取る出力先。NULL可。
pCapabilitiesINT*outoptional圧縮機能の対応状況を示すCompressionCapsフラグを受け取る出力先。NULL可。
vtbl 12 HRESULT OverrideKeyFrame(INT FrameNumber)
FrameNumberINTin強制的にキーフレームとするフレーム番号を指定する。
vtbl 13 HRESULT OverrideFrameSize(INT FrameNumber, INT Size)
FrameNumberINTinサイズを上書きする対象のフレーム番号を指定する。
SizeINTinそのフレームに割り当てる目標サイズ(バイト数)。

HSP用 COM定義

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

出力引数:
#define global IID_IAMVideoCompression "{C6E13343-30AC-11D0-A18C-00A0C9118956}"
#usecom global IAMVideoCompression IID_IAMVideoCompression "{}"
#comfunc global IAMVideoCompression_put_KeyFrameRate        3 int
#comfunc global IAMVideoCompression_get_KeyFrameRate        4 var
#comfunc global IAMVideoCompression_put_PFramesPerKeyFrame  5 int
#comfunc global IAMVideoCompression_get_PFramesPerKeyFrame  6 var
#comfunc global IAMVideoCompression_put_Quality             7 double
#comfunc global IAMVideoCompression_get_Quality             8 var
#comfunc global IAMVideoCompression_put_WindowSize          9 int64
#comfunc global IAMVideoCompression_get_WindowSize          10 var
#comfunc global IAMVideoCompression_GetInfo                 11 var,var,var,var,var,var,var,var
#comfunc global IAMVideoCompression_OverrideKeyFrame        12 int
#comfunc global IAMVideoCompression_OverrideFrameSize       13 int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。