Image-Data解壓縮

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

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

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

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

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

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

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

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

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

解壓縮器初始化

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

資料解壓縮

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

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

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

VCM 服務