Image-Data Decompression
Your application uses a series of
ICDecompressEx functions to control the decompressor. The functions can help you perform the
following tasks:
- Select a decompressor.
- Prepare the decompressor.
- Decompress the data.
- End decompression.
Your application handles decompression similarly to the way it handles
compression, except that the input format is a compressed format and the output format
is a displayable format. The input format for decompression is usually
obtained from the stream header. After determining the input format, your application
can use the
ICLocate or
ICOpen functions to find a decompressor that can handle it.
The
ICDecompressEx functions and macros are a superset of the
ICDecompress function group and provide more capabilities. The functionality of
ICDecompressEx,
ICDecompressExBegin,
ICDecompressExEnd, and
ICDecompressExQuery replaces that of the
ICDecompress,
ICDecompressBegin,
ICDecompressEnd, and
ICDecompressQuery functions. Use the
ICDecompressEx functions and macros in place of the
ICDecompress equivalents.
Decompressor and Decompression Format Selection
If you want to decompress data and your application requires a specific output
format, you can use the
ICDecompressExQuery function to query the decompressor to determine if it supports the input and
output formats.
If the output format is not important in your application, you need only find
a decompressor that can handle the input format. To determine if a decompressor
can handle the input format, use
ICDecompressExQuery and specify NULL for the
lpbiDst parameter. Your application can determine the buffer size needed for the data
specifying the decompression format by sending the
ICM_DECOMPRESS_GET_FORMAT message (or use the
ICDecompressGetFormatSize macro). You can also send ICM_DECOMPRESS_GET_FORMAT (or the
ICDecompressGetFormat macro) to retrieve the format data. The decompressor returns its suggested
format in a
BITMAPINFO structure. This format typically preserves the most information during
decompression. Your application should ensure that the decompressor returns
successfully before it decompresses the information.
Because your application allocates the memory required for decompression, it
needs to determine the maximum memory the decompressor can require for the
output format. The ICM_DECOMPRESS_GET_FORMAT message obtains the number of bytes the
decompressor uses for the default format.
If your application defines its own format by using
ICDecompressExQuery, it must also obtain a palette for the bitmap;
ICDecompressExQuery does not provide palette definitions. (Most applications use standard formats
and do not need to obtain a palette.) Your application can obtain the palette
by sending the
ICM_DECOMPRESS_GET_PALETTE message (or use the
ICDecompressGetPalette macro).
Decompressor Initialization
After your application selects a decompressor that can handle the input and
output formats it needs, you can initialize the decompressor by using the
ICDecompressExBegin function. This function requires the decompressor handle and the input and
output formats.
Data Decompression
You can use the
ICDecompressEx function to decompress a frame. Your application must use this function
repeatedly until all the frames in a sequence are decompressed.
If your video stream lags behind other components (such as audio) during
playback, your application can specify the ICDECOMPRESS_HURRYUP flag to speed
decompression. To do this, a decompressor might extract only the information it needs
to decompress the next frame and not fully decompress the current frame.
Therefore, your application should not try to draw the decompressed data when it
uses this flag.
After your application has decompressed the data, it can send the
ICM_DECOMPRESSEX_END message (or use the
ICDecompressExEnd macro) to notify the decompressor that it has finished. If you want to
restart decompression after using this function, your application must reinitialize
the decompressor by using
ICDecompressExBegin.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database