Compressing Data

The following example compresses image data for use in an AVI file. It assumes the compressor does not support the VIDCF_CRUNCH or VIDCF_TEMPORAL flags, but it does support VIDCF_QUALITY. The example uses the ICCompressBegin macro, the ICCompress function, and the ICCompressEnd macro.

DWORD dwCkID;

DWORD dwCompFlags;

DWORD dwQuality;

LONG lNumFrames, lFrameNum;

// Assume dwNumFrames is initialized to the total number of frames.

// Assume dwQuality holds the proper quality value (0-10000).

// Assume lpbiOut, lpOut, lpbiIn, and lpIn are initialized properly.

// If OK to start, compress each frame.

if (ICCompressBegin(hIC, lpbiIn, lpbiOut) == ICERR_OK)

{

for ( lFrameNum = 0; lFrameNum < lNumFrames; lFrameNum++)

{

if (ICCompress(hIC, 0, lpbiOut, lpOut, lpbiIn, lpIn,

&dwCkID, &dwCompFlags, lFrameNum,

0, dwQuality, NULL, NULL) == ICERR_OK)

{

// Write compressed data to the AVI file.

// Set lpIn to the next frame in the sequence.

}

else

{

// Handle compressor error.

}

}

ICCompressEnd(hIC); // terminate compression

}

else

{

// Handle the error identifying the unsupported format.

}

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples