Accessing the IMediaSample Interface for C++

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