Enumerating MPEG2 Format Compatible Compressors Example for C++
// the following code demonstrates enumerates the valid audio
and video compressors for the
// MPEG2 target format. A recommended compressor is also retrieved.
void EnumMPEG2Compressors(IltmmConvert *pConvert)
{
IltmmCompressors *pCompressors;
IltmmCompressor *pCompressor;
IltmmTargetFormats *pTargetformats;
IltmmTargetFormat* pTargetformat;
long lCount, lIndex, lValid;
BSTR Name;
// set the target format to MPEG2
pConvert->put_TargetFormat(ltmmCapture_TargetFormat_MPEG2_PROGRAM);
pConvert->get_TargetFormats(&pTargetformats);
pTargetformats->Item(ltmmCapture_TargetFormat_MPEG2_PROGRAM,
&pTargetformat);
pTargetformats->Release();
// Audio
// get the compressors collection
pConvert->get_AudioCompressors(&Compressors);
pCompressors->get_Count(&lCount);
for(lIndex = 0; lIndex < lCount; lIndex++)
{
long lValid;
pCompressors->Item(lIndex,
&pCompressor);
pCompressor->get_Name(&Name);
pTargetformat->IsValidCompressor(Name,
&valid);
if( lValid != ltmmTargetFormat_Compressor_Invalid
)
{
// do whatever needed
with the valid compressor (i.e. add it to some list)
}
::SysFreeString(Name);
pCompressor->Release();
}
// get the recommended compressor for the current format
pTargetformat->get_RecommendedAudioCompressor(&Name);
if( Name )
{
// do whatever needed with the recommended
compressor (i.e. select it)
}
pCompressors->Release();
// Video
// get the compressors collection
pConvert->get_VideoCompressors(&Compressors);
pCompressors->get_Count(&lCount);
for(lIndex = 0; lIndex < lCount; lIndex++)
{
long lValid;
pCompressors->Item(lIndex,
&pCompressor);
pCompressor->get_Name(&Name);
pTargetformat->IsValidCompressor(Name,
&valid);
if( lValid != ltmmTargetFormat_Compressor_Invalid
)
{
// do whatever needed
with the valid compressor (i.e. add it to some list)
}
::SysFreeString(Name);
pCompressor->Release();
}
// get the recommended compressor for the current format
pTargetformat->get_RecommendedVideoCompressor(&Name);
if( Name )
{
// do whatever needed with the recommended
compressor (i.e. select it)
}
pCompressors->Release();
pTargetformat->Release();
}