LEADTOOLS Multimedia API Help > Programming with LEADTOOLS Multimedia > C Code > 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.
// define helper macros for using interfaces under C #ifndef COBJMACROS #define COBJMACROS #endif // 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 CopyMediaTypeAttributesExample (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 = IltmmMediaTypeDisp_get_FormatSize (pSource, &cbData); if(FAILED(hr)) return hr; // any format data if(cbData) { // yes, then copy away hr = IltmmMediaTypeDisp_GetFormatData (pSource, cbData, &var); if(FAILED(hr)) return hr; hr = IltmmMediaTypeDisp_SetFormatData (pDest, cbData, var); VariantClear(&var); if(FAILED(hr)) return hr; } else { // no, just set the dest to zero hr = IltmmMediaTypeDisp_put_FormatSize (pDest, 0); if(FAILED(hr)) return hr; } // copy type bstr = NULL; IltmmMediaTypeDisp_get_Type(pSource, &bstr); IltmmMediaTypeDisp_put_Type (pDest, bstr); SysFreeString(bstr); // copy subtype bstr = NULL; IltmmMediaTypeDisp_get_Subtype (pSource, &bstr); IltmmMediaTypeDisp_put_Subtype (pDest, bstr); SysFreeString(bstr); // copy formattype bstr = NULL; IltmmMediaTypeDisp_get_FormatType(pSource, &bstr); IltmmMediaTypeDisp_put_FormatType (pDest, bstr); SysFreeString(bstr); // copy fixedsizesamples f = VARIANT_FALSE; IltmmMediaTypeDisp_get_FixedSizeSamples (pSource, &f); IltmmMediaTypeDisp_put_FixedSizeSamples(pDest, f); // copy temporalcompression f = VARIANT_FALSE; IltmmMediaTypeDisp_get_TemporalCompression (pSource, &f); IltmmMediaTypeDisp_put_TemporalCompression (pDest, f); // copy samplesize l = 0; IltmmMediaTypeDisp_get_SampleSize (pSource, &l); IltmmMediaTypeDisp_put_SampleSize (pDest, l); return S_OK; }