Image-Data解壓縮

[與此頁面相關的功能影片 壓縮管理員是舊版功能。 Microsoft 強烈建議新程式碼不使用此功能。]

您的應用程式會使用一系列的 ICDecompressEx 函式來控制解壓縮程式。 函式可協助您執行下列工作:

  • 選取解壓縮程式。
  • 準備解壓縮程式。
  • 解壓縮資料。
  • 結束解壓縮。

您的應用程式處理解壓縮的方式與處理壓縮的方式類似,不同之處在于輸入格式是壓縮格式,而輸出格式是可顯示的格式。 解壓縮的輸入格式通常是從資料流程標頭取得。 判斷輸入格式之後,您的應用程式可以使用 ICLocateICOpen 函式來尋找可處理它的解壓縮程式。

ICDecompressEx函式和宏是ICDecompress函式群組的超集合,並提供更多功能。 ICDecompressEx、ICDecompressExBegin、ICDecompressExEndICDecompressExQuery的功能會取代ICDecompressICDecompressBegin、ICDecompressEndICDecompressQuery函式的功能。 使用 ICDecompressEx 函式和宏來取代 ICDecompress 對等專案。

解壓縮器和解壓縮格式選取

如果您想要解壓縮資料,而且您的應用程式需要特定的輸出格式,您可以使用 ICDecompressExQuery 函式來查詢解壓縮程式,以判斷它是否支援輸入和輸出格式。

如果您的應用程式中輸出格式不重要,您只需要尋找可處理輸入格式的解壓縮程式。 若要判斷解壓縮程式是否可以處理輸入格式,請使用ICDecompressExQuery,並為lpbiDst參數指定Null。 您的應用程式可以傳送 ICM_DECOMPRESS_GET_FORMAT 訊息 (或使用 ICDecompressGetFormatSize 宏) 來判斷指定解壓縮格式的資料所需的緩衝區大小。 您也可以傳送 ICM_DECOMPRESS_GET_FORMAT (或 ICDecompressGetFormat 宏) 來擷取格式資料。 解壓縮程式會以 BITMAPINFO 結構傳回其建議格式。 此格式通常會在解壓縮期間保留最多資訊。 您的應用程式應該確保解壓縮程式在解壓縮資訊之前成功傳回。

因為您的應用程式會配置解壓縮所需的記憶體,所以需要判斷解壓縮程式可能需要的記憶體上限,才能輸出格式。 ICM_DECOMPRESS_GET_FORMAT訊息會取得解壓縮程式用於預設格式的位元組數目。

如果您的應用程式使用 ICDecompressExQuery定義自己的格式,它也必須取得點陣圖的調色盤; ICDecompressExQuery 不提供調色盤定義。 (大部分的應用程式都使用標準格式,而且不需要取得調色盤。) 您的應用程式可以藉由傳送 ICM_DECOMPRESS_GET_PALETTE 訊息 (或使用 ICDecompressGetPalette 宏) 來取得調色盤。

解壓縮程式初始化

在您的應用程式選取可處理所需輸入和輸出格式的解壓縮程式之後,您可以使用 ICDecompressExBegin 函式來初始化解壓縮程式。 此函式需要解壓縮程式控制碼和輸入和輸出格式。

資料解壓縮

您可以使用 ICDecompressEx 函式來解壓縮框架。 您的應用程式必須重複使用此函式,直到解壓縮序列中的所有畫面為止。

如果您的視訊串流落後于播放期間的其他元件 (,例如音訊) ,您的應用程式可以指定 ICDECOMPRESS_HURRYUP 旗標來加速解壓縮。 若要這樣做,解壓縮程式可能只會擷取它需要解壓縮下一個框架的資訊,而不會完全解壓縮目前的框架。 因此,當您的應用程式使用此旗標時,不應該嘗試繪製解壓縮的資料。

應用程式解壓縮資料之後,它可以傳送 ICM_DECOMPRESSEX_END 訊息 (或使用 ICDecompressExEnd 宏) 來通知解壓縮器已完成。 如果您想要在使用此函式之後重新開機解壓縮,您的應用程式必須使用 ICDecompressExBegin重新初始化解壓縮程式。

VCM 服務