IltmmWMProfile::GetStream Example for C

For complete code, refer to the CNVWM demo.

LPTSTR OLE2A(LPCOLESTR lpw)
{
   static CHAR convert[512];

   if(!lpw)
      return NULL;

   convert[0] = '\0';

   WideCharToMultiByte(CP_ACP, 0, lpw, -1, convert, 512, NULL, NULL);

   return convert;
}

void IltmmWMProfile_GetStream_Example (IltmmWMProfile *pProfile)
{
   IltmmWMStreamConfig *pStreamConfig = NULL; 
   BSTR bstrString; 
   long lStreamCount; 
   int i; 
   long lValue; 
   double fValue; 
   char temp[50]; 

   // Show all the information regarding the streams

   IltmmWMProfile_get_StreamCount(pProfile, &lStreamCount); 

   for(i=0; i<lStreamCount; i++)
   {
      IltmmWMProfile_GetStream(pProfile, i, &pStreamConfig); 

      sprintf(temp, "[[ Stream %d ]]\n", i); 
      printf(temp); 

      // Get the major type of the stream
      IltmmWMStreamConfig_get_StreamType(pStreamConfig, &bstrString); 
      printf("Stream type : ");
      printf(OLE2A(bstrString)); 
      printf("\n");
      SysFreeString(bstrString); 

      // Get Stream number
      IltmmWMStreamConfig_get_StreamNumber(pStreamConfig, &lValue); 
      printf("Stream number : ");
      printf(ltoa(lValue, temp, 10)); 
      printf("\n");

      // Get Stream name
      IltmmWMStreamConfig_get_StreamName(pStreamConfig, &bstrString); 
      printf("Stream name : ");
      printf(OLE2A(bstrString)); 
      printf("\n");
      SysFreeString(bstrString); 

      // Get Connection name
      IltmmWMStreamConfig_get_ConnectionName(pStreamConfig, &bstrString); 
      printf("Stream connection name : ");
      printf(OLE2A(bstrString)); 
      printf("\n");
      SysFreeString(bstrString); 

      // Get Bitrate
      IltmmWMStreamConfig_get_Bitrate(pStreamConfig, &lValue); 
      printf("Stream bitrate : ");
      printf(ltoa(lValue, temp, 10)); 
      printf("\n");

      // Get the maximum latency (time in milliseconds) between stream reception and display
      IltmmWMStreamConfig_get_BufferWindow(pStreamConfig, &lValue); 
      printf("Stream buffer window : ");
      printf(ltoa(lValue, temp, 10)); 
      printf("\n");

      // Get the major type of the media in the stream
      IltmmWMStreamConfig_get_Type(pStreamConfig, &bstrString); 
      printf("Major type of the stream media : ");
      printf(OLE2A(bstrString)); 
      printf("\n");
      SysFreeString(bstrString); 

      // Get the maximum key frame time interval (in 100-nano seconds) 
      IltmmWMStreamConfig_get_MaxKeyFrameSpacing(pStreamConfig, &fValue); 
      printf("Maximum key frame time interval : ");
      sprintf(temp, "%.Ef", fValue); 
      printf(temp); 
      printf("\n");

      // Get the Quality, range from 0 to 100
      // where zero denotes maximum frame rate and 100 denotes maximum quality. 
      IltmmWMStreamConfig_get_Quality(pStreamConfig, &lValue); 
      printf("Stream quality : ");
      printf(ltoa(lValue, temp, 10)); 
      if(lValue == -1) 
         printf(" ...(Unknown)"); 
      printf("\n\n");

      IltmmWMStreamConfig_Release(pStreamConfig); 
   }

   IltmmWMProfile_Release(pProfile); 
}