diff options
Diffstat (limited to 'loader/dmo/buffer.c')
-rw-r--r-- | loader/dmo/buffer.c | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/loader/dmo/buffer.c b/loader/dmo/buffer.c deleted file mode 100644 index 78428e249f..0000000000 --- a/loader/dmo/buffer.c +++ /dev/null @@ -1,119 +0,0 @@ -#include "DMO_Filter.h" - -#include "loader/wine/winerror.h" -#include "loader/wine/windef.h" - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - -struct CMediaBuffer -{ - IMediaBuffer_vt* vt; - DECLARE_IUNKNOWN(); - GUID interfaces[2]; - void* mem; - unsigned long len; - unsigned long maxlen; - int freemem; -}; - -static HRESULT STDCALL CMediaBuffer_SetLength(IMediaBuffer* This, - unsigned long cbLength) -{ - CMediaBuffer* cmb = (CMediaBuffer*) This; - Debug printf("CMediaBuffer_SetLength(%p) called (%ld, %ld)\n", This, cbLength, cmb->maxlen); - if (cbLength > cmb->maxlen) - return E_INVALIDARG; - cmb->len = cbLength; - return S_OK; -} - -static HRESULT STDCALL CMediaBuffer_GetMaxLength(IMediaBuffer* This, - /* [out] */ unsigned long *pcbMaxLength) -{ - CMediaBuffer* cmb = (CMediaBuffer*) This; - Debug printf("CMediaBuffer_GetMaxLength(%p) called -> %ld\n", This, cmb->maxlen); - if (!pcbMaxLength) - return E_POINTER; - *pcbMaxLength = cmb->maxlen; - return S_OK; -} - -static HRESULT STDCALL CMediaBuffer_GetBufferAndLength(IMediaBuffer* This, - /* [out] */ char** ppBuffer, - /* [out] */ unsigned long* pcbLength) -{ - CMediaBuffer* cmb = (CMediaBuffer*) This; - Debug printf("CMediaBuffer_GetBufferAndLength(%p) called -> %p %ld\n", This, cmb->mem, cmb->len); - if (!ppBuffer && !pcbLength) - return E_POINTER; - if (ppBuffer) - *ppBuffer = cmb->mem; - if (pcbLength) - *pcbLength = cmb->len; - return S_OK; -} - -static void CMediaBuffer_Destroy(CMediaBuffer* This) -{ - Debug printf("CMediaBuffer_Destroy(%p) called\n", This); - if (This->freemem) - free(This->mem); - free(This->vt); - free(This); -} - -IMPLEMENT_IUNKNOWN(CMediaBuffer) - -CMediaBuffer* CMediaBufferCreate(unsigned long maxlen, void* mem, - unsigned long len, int copy) -{ - CMediaBuffer* This = malloc(sizeof(CMediaBuffer)); - - if (!This) - return NULL; - - This->vt = malloc(sizeof(IMediaBuffer_vt)); - if (!This->vt) - { - CMediaBuffer_Destroy(This); - return NULL; - } - - This->refcount = 1; - This->len = len; - This->maxlen = maxlen; - This->freemem = 0; - This->mem = mem; - if (copy) - /* make a private copy of data */ - This->mem = 0; - if (This->mem == NULL) - { - if (This->maxlen) - { - This->mem = malloc(This->maxlen); - if (!This->mem) - { - CMediaBuffer_Destroy(This); - return NULL; - } - This->freemem = 1; - if (copy) - memcpy(This->mem, mem, This->len); - } - } - This->vt->QueryInterface = CMediaBuffer_QueryInterface; - This->vt->AddRef = CMediaBuffer_AddRef; - This->vt->Release = CMediaBuffer_Release; - - This->vt->SetLength = CMediaBuffer_SetLength; - This->vt->GetMaxLength = CMediaBuffer_GetMaxLength; - This->vt->GetBufferAndLength = CMediaBuffer_GetBufferAndLength; - - This->interfaces[0] = IID_IUnknown; - This->interfaces[1] = IID_IMediaBuffer; - - return This; -} |