|
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.
Related Links
Software for Delphi and C++ Builder developers
Software for Visual Studio .NET developers
Software for Visual Basic 6 developers
Delphi Tips&Tricks
MegaDetailed.NET
TMS Scripter Studio Pro components for Delphi/C++Builder
More Online Helps
Win32 Programmer's Reference (win32.hlp)
OLE Programmer's Reference (ole.hlp)
Microsoft Windows Pen API Programmer's Reference (penapi.hlp)
Microsoft Windows Sockets 2 Reference (sock2.hlp)
Microsoft Windows Telephony API (TAPI) Programmer's Reference (tapi.hlp)
Unix Manual Pages
|