Copying ltmmMediaType Attributes and Data for C++

The following code demonstrates how to copy a media type's attributes and data to another media type.

// include the LEAD Multimedia TOOLKIT header 
#include "ltmm.h" 
 
///////////////////////////////////////////////////////////////// 
// CopyMediaTypeAttributes 
// copies data and attributes from one media type to another 
// pDest - destination media type interface 
// pSource - source media type interface 
HRESULT CopyMediaTypeAttributes(IltmmMediaTypeDisp* pDest, IltmmMediaTypeDisp* pSource) 
{ 
   HRESULT hr; 
   VARIANT_BOOL f; 
   long l; 
   BSTR bstr; 
   long cbData; 
   VARIANT var; 
 
   // return error if NULL 
   if(!pSource || !pDest) 
      return E_POINTER; 
 
   // get the format data size 
   hr = pSource->get_FormatSize(&cbData); 
   if(FAILED(hr)) 
      return hr; 
 
   // any format data 
   if(cbData) 
   { 
      // yes, then copy away 
      hr = pSource->GetFormatData(cbData, &var); 
      if(FAILED(hr)) 
         return hr; 
      hr = pDest->SetFormatData(cbData, var); 
      VariantClear(&var); 
      if(FAILED(hr)) 
         return hr; 
   } 
   else 
   { 
      // no, just set the dest to zero 
      hr = pDest->put_FormatSize(0); 
      if(FAILED(hr)) 
         return hr; 
   } 
 
   // copy type 
   bstr = NULL; 
   pSource->get_Type(&bstr); 
   pDest->put_Type(bstr); 
   ::SysFreeString(bstr); 
 
   // copy subtype 
   bstr = NULL; 
   pSource->get_Subtype(&bstr); 
   pDest->put_Subtype(bstr); 
   ::SysFreeString(bstr); 
 
   // copy formattype 
   bstr = NULL; 
   pSource->get_FormatType(&bstr); 
   pDest->put_FormatType(bstr); 
   ::SysFreeString(bstr); 
 
   // copy fixedsizesamples 
   f = VARIANT_FALSE; 
   pSource->get_FixedSizeSamples(&f); 
   pDest->put_FixedSizeSamples(f); 
 
   // copy temporalcompression 
   f = VARIANT_FALSE; 
   pSource->get_TemporalCompression(&f); 
   pDest->put_TemporalCompression(f); 
 
   // copy samplesize 
   l = 0; 
   pSource->get_SampleSize(&l); 
   pDest->put_SampleSize(l); 
   return S_OK; 
} 

Help Version 20.0.2020.4.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Multimedia C API Help