The actual DirectX IMediaSample interface can be accessed through the IltmmObjectWrapper interface using the following code:
HRESULT UnwrapMediaSample(IltmmMediaSampleDisp* pDispatch, IMediaSample** ppMediaSample)
{
if(!ppMediaSample)
return E_POINTER;
if(!pDispatch)
{
// NULL dispatch means NULL MediaSample
*ppMediaSample = NULL;
}
else
{
HRESULT hr;
IUnknown* pObject;
// query the IltmmObjectWrapper interface
IltmmObjectWrapper* pWrapper;
hr = pDispatch->QueryInterface(IID_IltmmObjectWrapper, (void**) &pWrapper);
if(FAILED(hr))
return hr;
// get the wrapped object
hr = pWrapper->GetWrappedObject(&pObject);
pWrapper->Release();
if(FAILED(hr))
return hr;
// query the IMediaSample interface
hr = pObject->QueryInterface(IID_IMediaSample, (void**) ppMediaSample);
pObject->Release();
if(FAILED(hr))
return hr;
}
return S_OK;
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document