Bagikan melalui


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

Lihat juga

Fungsi Kompresi Video

Manajer Kompresi Video