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; }