<Return[I]><Top>

ICCompress

Declare Function Api_ICCompress& Lib "msvfw32" Alias "ICCompress" (ByVal hic&, ByVal Fg1&, ByRef Out As BIH, Dat As Any, ByRef Inp As BIH, Bit As Any, ByRef id&, ByRef Fg2&, ByVal Num&, ByVal FrSiz&, ByVal Qua&, ByRef lpbiPrev As BIH, lpPrev As Any)

(F-Basic 1行文字数制限によりパラメータ名等を変えています。)

Declare Function ICCompress Lib "msvfw32" (ByVal hic As Long, ByVal dwFlags As Long, ByRef lpbiOutput As BITMAPINFOHEADER, lpData As Any, ByRef lpbiInput As BITMAPINFOHEADER, lpBits As Any, ByRef lpckid As Long, ByRef lpdwFlags As Long, ByVal lFrameNum As Long, ByVal dwFrameSize As Long, ByVal dwQuality As Long, ByRef lpbiPrev As BITMAPINFOHEADER, lpPrev As Any) As Long

1 つのビデオイメージを圧縮する。

パラメータ
hic
    使用するコンプレッサ(圧縮処理)のハンドルを指定する。
dwFlags
    圧縮フラグを指定する。次の値が定義されている。
    ICCOMPRESS_KEYFRAME
    コンプレッサはこのフレームをキーフレームにする。
lpbiOutput
    出力形式が入った 構造体のアドレスを指定する。
lpData
    圧縮されたフレームが入る大きさの出力バッファのアドレスを指定する。
lpbiInput
    入力形式が入った BITMAPINFO 構造体のアドレスを指定する。
lpBits
    入力バッファのアドレスを指定する。lpckid予約されている。使わない。
lpdwFlags
    AVI インデックスで使われる戻りフラグのアドレスを指定する。次の値が定義されている。
    AVIIF_KEYFRAME
    現在のフレームがキーフレームである。
lFrameNum
    フレーム番号を指定する。
dwFrameSize
    要求するフレームサイズをバイト単位で指定する。コンプレッサが、ICGetInfo 関数から返された VIDCF_CRUNCH フラグが示す推奨フレ

    ームサイズをサポートする場合は、0 以外の値を指定する。このフラグがセットされていない場合、またはフレームのデータレートが指定され

    ていない場合は、0 を指定する。
    このパラメータで指定されたサイズにするために、コンプレッサではイメージ品質を下げるなどの妥協が必要な場合がある。
dwQuality
    フレームに対して要求する品質値を指定する。コンプレッサが、ICGetInfo 関数から返された VIDCF_QUALITY フラグが示す推奨品質値

    をサポートする場合は、0 以外の値を指定する。その他の場合は、0 を指定する。
lpbiPrev
    以前のフレーム形式が入った 構造体のアドレスを指定する。
lpPrev
    圧縮解除された以前のフレームイメージのアドレスを指定する。このパラメータは高速な一時的圧縮には使われない。コンプレッサが一時的

    圧縮をサポートしないか、またはコンプレッサが以前のイメージの形式やデータを格納する外部バッファを必要としない場合は、キーフレームを

    圧縮する際、このパラメータを NULL に指定する。

戻り値
    関数が成功すると ICERR_OK が返る。関数が失敗するとエラーが返る。

解説
    要求する値は、 メッセージを送信して(または、ICCompressGetSize マクロを使って)得られる出力バッファのサイズから明らかになる。
    コンプレッサはキーフレームを作成するときに、lpdwFlags パラメータを AVIIF_KEYFRAME にセットする。アプリケーションが AVI ファイルを

    作成する場合、lpckid と lpdwFlags に対する戻り値はファイルに保存される。
    コンプレッサは lpbiPrev と lpPrev を使って一時的圧縮を実行し、以前のフレームの形式やデータを格納するための外部バッファを要求す

    る。キーフレームの圧縮時に、高速圧縮を行う場合、またはコンプレッサが以前のイメージのデータと形式を格納する独自の外部バッファを

    持っている場合は、lpbiPrev と lpPrev に NULL を指定する。ICGetInfo 関数が VIDCF_TEMPORAL フラグを返すときに、コンプレッサ

    が通常の圧縮を実行する場合、および圧縮するフレームがキーフレームでない場合は、これらのパラメータには NULL 以外の値を指定す

    る。