Accessing the IMediaSample Interface for C

The actual DirectX IMediaSample interface can be accessed through the IltmmObjectWrapper interface using the following code:

HRESULT UnwrapMediaSampleExample (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 = IUnknown_QueryInterface(pDispatch, &IID_IltmmObjectWrapper, (void**) &pWrapper); 
 
      if(FAILED(hr)) 
         return hr; 
 
      // get the wrapped object 
      hr = IltmmObjectWrapper_GetWrappedObject (pWrapper, &pObject); 
 
      IUnknown_Release(pWrapper); 
 
      if(FAILED(hr)) 
         return hr; 
 
      // query the IMediaSample interface 
      hr = IUnknown_QueryInterface(pObject, &IID_IMediaSample, (void**) ppMediaSample); 
 
      IUnknown_Release(pObject); 
    
      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