Fungsi ICCompress (vfw.h)
Fungsi ICCompress memadatkan satu gambar video.
Sintaks
DWORD VFWAPIV ICCompress(
HIC hic,
DWORD dwFlags,
LPBITMAPINFOHEADER lpbiOutput,
LPVOID lpData,
LPBITMAPINFOHEADER lpbiInput,
LPVOID lpBits,
LPDWORD lpckid,
LPDWORD lpdwFlags,
LONG lFrameNum,
DWORD dwFrameSize,
DWORD dwQuality,
LPBITMAPINFOHEADER lpbiPrev,
LPVOID lpPrev
);
Parameter
hic
Tangani ke kompresor yang akan digunakan.
dwFlags
Bendera pemadatan. Nilai berikut didefinisikan:
ICCOMPRESS_KEYFRAME
Kompresor harus menjadikan bingkai ini sebagai bingkai kunci.
lpbiOutput
Penunjuk ke struktur BITMAPINFOHEADER yang berisi format output.
lpData
Penunjuk ke buffer output yang cukup besar untuk berisi bingkai terkompresi.
lpbiInput
Penunjuk ke struktur BITMAPINFOHEADER yang berisi format input.
lpBits
Arahkan ke buffer input.
lpckid
Dipesan; jangan gunakan.
lpdwFlags
Penunjuk ke bendera pengembalian yang digunakan dalam indeks AVI. Nilai berikut didefinisikan:
AVIIF_KEYFRAME
Bingkai saat ini adalah bingkai kunci.
lFrameNum
Nomor bingkai.
dwFrameSize
Ukuran bingkai yang diminta, dalam byte. Tentukan nilai bukan nol jika kompresor mendukung ukuran bingkai yang disarankan, seperti yang ditunjukkan oleh keberadaan bendera VIDCF_CRUNCH yang dikembalikan oleh fungsi ICGetInfo . Jika bendera ini tidak diatur atau laju data untuk bingkai tidak ditentukan, tentukan nol untuk parameter ini.
Kompresor mungkin harus mengorbankan kualitas gambar atau melakukan trade-off lainnya untuk mendapatkan tujuan ukuran yang ditentukan dalam parameter ini.
dwQuality
Nilai kualitas yang diminta untuk bingkai. Tentukan nilai bukan nol jika kompresor mendukung nilai kualitas yang disarankan, seperti yang ditunjukkan oleh keberadaan bendera VIDCF_QUALITY yang dikembalikan oleh ICGetInfo. Jika tidak, tentukan nol untuk parameter ini.
lpbiPrev
Penunjuk ke struktur BITMAPINFOHEADER yang berisi format bingkai sebelumnya.
lpPrev
Penunjuk ke gambar bingkai sebelumnya yang tidak dikompresi. Parameter ini tidak digunakan untuk kompresi temporal yang cepat. Tentukan NULL untuk parameter ini saat memadatkan bingkai kunci, jika kompresor tidak mendukung kompresi temporal, atau jika kompresor tidak memerlukan buffer eksternal untuk menyimpan format dan data gambar sebelumnya.
Mengembalikan nilai
Mengembalikan ICERR_OK jika berhasil atau kesalahan sebaliknya.
Keterangan
Anda dapat memperoleh yang diperlukan berdasarkan ukuran buffer output dengan mengirim pesan ICM_COMPRESS_GET_SIZE (atau dengan menggunakan makro ICCompressGetSize ).
Kompresor mengatur isi lpdwFlags ke AVIIF_KEYFRAME saat membuat bingkai kunci. Jika aplikasi Anda membuat file AVI, itu harus menyimpan informasi yang dikembalikan untuk lpckid dan lpdwFlags dalam file.
Kompresor menggunakan lpbiPrev dan lpPrev untuk melakukan pemadatan temporal dan memerlukan buffer eksternal untuk menyimpan format dan data bingkai sebelumnya. Tentukan NULL untuk lpbiPrev dan lpPrev saat memadatkan bingkai kunci, saat melakukan pemadatan cepat, atau jika kompresor memiliki buffer sendiri untuk menyimpan format dan data gambar sebelumnya. Tentukan nilai non-NULL untuk parameter ini jika ICGetInfo mengembalikan bendera VIDCF_TEMPORAL , kompresor melakukan pemadatan normal, dan bingkai untuk memadatkan bukan bingkai kunci.
Persyaratan
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | vfw.h |
Pustaka | Vfw32.lib |
DLL | Msvfw32.dll |