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();
}