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;
}
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET