Share via


ICCompress 函式 (vfw.h)

ICCompress函式會壓縮單一視訊影像。

語法

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
);

參數

hic

要使用的壓機控制碼。

dwFlags

壓縮旗標。 定義下列值:

ICCOMPRESS_KEYFRAME

壓機應該讓此畫面成為主要畫面格。

lpbiOutput

點陣圖INFOHEADER結構的指標,其中包含輸出格式。

lpData

輸出緩衝區的指標夠大,足以包含壓縮框架。

lpbiInput

點陣圖INFOHEADER結構的指標,其中包含輸入格式。

lpBits

輸入緩衝區的指標。

lpckid

保留;請勿使用。

lpdwFlags

AVI 索引中使用的傳回旗標指標。 定義下列值:

AVIIF_KEYFRAME

目前的畫面是主要畫面格。

lFrameNum

框架編號。

dwFrameSize

要求的框架大小,以位元組為單位。 如果壓縮器支援建議的框架大小,請指定非零值,如ICGetInfo函式所傳回VIDCF_CRUNCH旗標的存在所表示。 如果未設定此旗標,或未指定框架的資料速率,請指定此參數的零。

壓縮器可能需要犧牲影像品質,或進行一些其他取捨,以取得此參數中指定的大小目標。

dwQuality

框架的要求品質值。 如果壓縮器支援建議的品質值,請指定非零值,如ICGetInfo所傳回VIDCF_QUALITY旗標的存在所表示。 否則,請為此參數指定零。

lpbiPrev

點陣圖INFOHEADER結構的指標,其中包含上一個框架的格式。

lpPrev

上一個框架未壓縮影像的指標。 此參數不會用於快速時態壓縮。 如果壓縮主要畫面格不支援時態壓縮,或者如果壓縮器不需要外部緩衝區來儲存上一個影像的格式和資料,請指定此參數的 Null

傳回值

如果成功或發生錯誤,則傳回 ICERR_OK

備註

您可以藉由傳送 ICM_COMPRESS_GET_SIZE訊息 ( 或使用 ICCompressGetSize 宏) 來取得輸出緩衝區大小所需的 。

壓縮會將 lpdwFlags 的內容設定為在建立主要畫面格時 AVIIF_KEYFRAME 。 如果您的應用程式建立 AVI 檔案,它應該會將 lpckidlpdwFlags 傳回的資訊儲存在檔案中。

壓縮會使用 lpbiPrevlpPrev 來執行時態壓縮,並要求外部緩衝區儲存上一個框架的格式和資料。 壓縮主要畫面格時、執行快速壓縮時,或如果壓縮器有自己的緩衝區來儲存上一個影像的格式和資料,請為lpbiPrevlpPrev指定Null。 如果ICGetInfo傳回VIDCF_TEMPORAL旗標,則為這些參數指定非Null值,而要壓縮的框架則不是主要畫面格。

規格需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 vfw.h
程式庫 Vfw32.lib
Dll Msvfw32.dll

另請參閱

視訊壓縮函式

影片壓縮管理員