IltmmAudioFormats::get_Count Example for C

// Having an IltmmCapture Interface, pCap:

L_MULTIMEDIATEX_API void IltmmAudioFormats_get_Count_Example (IltmmCapture* pCapture)
{
   IltmmAudioFormats *pAudioFormats;
   IltmmAudioFormat *pAudioFormat;
   long   lCount;
   long lFreq, lBits, lChannels;
   long lFoundAt;
   long lSelection;
   VARIANT_BOOL bSelected;
   int i;

   // get the audio formats collection: 
   IltmmCapture_get_AudioCaptureFormats(pCapture, &pAudioFormats);
   IltmmAudioFormats_get_Count(pAudioFormats, &lCount);

   for( i=0; i<lCount; i++ )
   {
	   // get the item at index I
	   IltmmAudioFormats_Item(pAudioFormats, i, &pAudioFormat);

	   // do something with this item, like viewing its information:
	   IltmmAudioFormat_get_SampleFrequency(pAudioFormat, &lFreq);
	   IltmmAudioFormat_get_BitsPerSample(pAudioFormat, &lBits);
	   IltmmAudioFormat_get_Channels(pAudioFormat, &lChannels);
	   IltmmAudioFormat_get_Selected(pAudioFormat, &bSelected);

	   // view information �

	   // you may select the format if it matches some criteria:
	   if( lFreq == 8000 && lBits == 8 && lChannels == 1 )
		   IltmmAudioFormat_put_Selected(pAudioFormat, VARIANT_TRUE);

	   // free the item
	   IUnknown_Release(pAudioFormat); 
   }

   // you might use the Find method to search for a specific format:
   IltmmAudioFormats_Find(pAudioFormats, 16000, 16, 2, &lFoundAt);
   
   if( lFoundAt != -1 )
   {
	   // do something with it:
	   // check if it is already selected, and if not, select it:
	   IltmmAudioFormats_get_Selection(pAudioFormats, &lSelection);
	 
      if( lSelection != lFoundAt )
	   {
		   IltmmAudioFormats_put_Selection(pAudioFormats, lFoundAt);
	   }
   }

   // free the audio formats collection 
   IUnknown_Release(pAudioFormats);
}