summaryrefslogtreecommitdiffstats
path: root/loader/dshow/cmediasample.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-08-16 00:50:02 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-08-16 00:50:02 +0000
commitbda27f2adc68d6065d7a7df1e6558c062efe41f1 (patch)
tree4077a416a09134894f71166eef48f9f39782fc9d /loader/dshow/cmediasample.c
parentfda7100c9d34a2c5dccddfd25e87193abe55a152 (diff)
downloadmpv-bda27f2adc68d6065d7a7df1e6558c062efe41f1.tar.bz2
mpv-bda27f2adc68d6065d7a7df1e6558c062efe41f1.tar.xz
big avifile sync - from now we have common code
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1546 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'loader/dshow/cmediasample.c')
-rw-r--r--loader/dshow/cmediasample.c288
1 files changed, 139 insertions, 149 deletions
diff --git a/loader/dshow/cmediasample.c b/loader/dshow/cmediasample.c
index 677948c4d2..1fdb9995e5 100644
--- a/loader/dshow/cmediasample.c
+++ b/loader/dshow/cmediasample.c
@@ -1,195 +1,139 @@
+#include "cmediasample.h"
+#include <wine/winerror.h>
#include <stdio.h>
#include <string.h>
-#include "cmediasample.h"
-//#define E_NOTIMPL 0x80004003
-CMediaSample::CMediaSample(IMemAllocator* allocator, long _size):refcount(0)
-{
- vt=new IMediaSample_vt;
-
- vt->QueryInterface=QueryInterface;
- vt->AddRef=AddRef;
- vt->Release=Release;
- vt->GetPointer=GetPointer ;
- vt->GetSize=GetSize ;
- vt->GetTime=GetTime ;
- vt->SetTime=SetTime ;
- vt->IsSyncPoint=IsSyncPoint ;
- vt->SetSyncPoint=SetSyncPoint;
- vt->IsPreroll=IsPreroll;
- vt->SetPreroll=SetPreroll;
- vt->GetActualDataLength=GetActualDataLength;
- vt->SetActualDataLength=SetActualDataLength;
- vt->GetMediaType=GetMediaType;
- vt->SetMediaType=SetMediaType;
- vt->IsDiscontinuity=IsDiscontinuity;
- vt->SetDiscontinuity=SetDiscontinuity;
- vt->GetMediaTime=GetMediaTime;
- vt->SetMediaTime=SetMediaTime;
-
- all=allocator;
- size=_size;
- actual_size=0;
- media_type.pbFormat=0;
- isPreroll=0;
- type_valid=0;
- block=new char[size];
- old_block=0;
- Debug printf("%x: Creating media sample with size %d, buffer 0x%x\n", this, _size, block);
-}
-CMediaSample::~CMediaSample()
-{
- Debug printf("%x: CMediaSample::~CMediaSample() called\n", this);
- delete vt;
- if(old_block)
- block=old_block;
- delete[] block;
- if(media_type.pbFormat)
- CoTaskMemFree(media_type.pbFormat);
-}
-long STDCALL CMediaSample::QueryInterface (
- IUnknown * This,
- /* [in] */ IID* iid,
- /* [iid_is][out] */ void **ppv)
+static long STDCALL CMediaSample_QueryInterface(IUnknown * This,
+ /* [in] */ IID* iid,
+ /* [iid_is][out] */ void **ppv)
{
- Debug printf("CMediaSample::QueryInterface() called\n");
- if(!ppv)return 0x80004003;
- if(!memcmp(iid, &IID_IUnknown, 16))
+ Debug printf("CMediaSample_QueryInterface() called\n");
+ if (!ppv)
+ return E_INVALIDARG;
+ if (!memcmp(iid, &IID_IUnknown, 16))
{
*ppv=(void*)This;
This->vt->AddRef(This);
return 0;
}
- if(!memcmp(iid, &IID_IMediaSample, 16))
+ if (!memcmp(iid, &IID_IMediaSample, 16))
{
*ppv=(void*)This;
This->vt->AddRef(This);
return 0;
}
- return 0x80004002;
+ return E_NOINTERFACE;
}
-long STDCALL CMediaSample::AddRef (
- IUnknown * This)
+static long STDCALL CMediaSample_AddRef(IUnknown* This)
{
- Debug printf("CMediaSample::AddRef() called\n");
+ Debug printf("CMediaSample_AddRef() called\n");
((CMediaSample*)This)->refcount++;
return 0;
}
-
-long STDCALL CMediaSample::Release (
- IUnknown * This)
+
+static long STDCALL CMediaSample_Release(IUnknown* This)
{
- Debug printf("%x: CMediaSample::Release() called, new refcount %d\n", This,
- ((CMediaSample*)This)->refcount-1);
+ Debug printf("%p: CMediaSample_Release() called, new refcount %d\n",
+ This, ((CMediaSample*)This)->refcount-1);
CMediaSample* parent=(CMediaSample*)This;
- if(--((CMediaSample*)This)->refcount==0)
- parent->
- all->
- vt->
- ReleaseBuffer(
- (IMemAllocator*)(parent->all),
- (IMediaSample*)This);
+ if (--((CMediaSample*)This)->refcount==0)
+ parent->all->vt->ReleaseBuffer((IMemAllocator*)(parent->all),
+ (IMediaSample*)This);
return 0;
}
-HRESULT STDCALL CMediaSample::GetPointer (
- IMediaSample * This,
- /* [out] */ BYTE **ppBuffer)
+
+static HRESULT STDCALL CMediaSample_GetPointer(IMediaSample * This,
+ /* [out] */ BYTE **ppBuffer)
{
- Debug printf("%x: CMediaSample::GetPointer() called\n", This);
- if(!ppBuffer)return 0x80004003;
+ Debug printf("%p: CMediaSample_GetPointer() called\n", This);
+ if (!ppBuffer)
+ return E_INVALIDARG;
*ppBuffer=(BYTE *)((CMediaSample*)This)->block;
return 0;
}
-long STDCALL CMediaSample::GetSize (
- IMediaSample * This)
+static long STDCALL CMediaSample_GetSize(IMediaSample * This)
{
- Debug printf("%x: CMediaSample::GetSize() called -> %d\n", This, ((CMediaSample*)This)->size);
+ Debug printf("%p: CMediaSample_GetSize() called -> %d\n",
+ This, ((CMediaSample*)This)->size);
return ((CMediaSample*)This)->size;
}
-HRESULT STDCALL CMediaSample::GetTime (
- IMediaSample * This,
- /* [out] */ REFERENCE_TIME *pTimeStart,
- /* [out] */ REFERENCE_TIME *pTimeEnd)
+static HRESULT STDCALL CMediaSample_GetTime(IMediaSample * This,
+ /* [out] */ REFERENCE_TIME *pTimeStart,
+ /* [out] */ REFERENCE_TIME *pTimeEnd)
{
- Debug printf("%x: CMediaSample::GetTime() called\n", This);
+ Debug printf("%p: CMediaSample_GetTime() called\n", This);
return E_NOTIMPL;
}
-HRESULT STDCALL CMediaSample::SetTime (
- IMediaSample * This,
- /* [in] */ REFERENCE_TIME *pTimeStart,
- /* [in] */ REFERENCE_TIME *pTimeEnd)
+static HRESULT STDCALL CMediaSample_SetTime(IMediaSample * This,
+ /* [in] */ REFERENCE_TIME *pTimeStart,
+ /* [in] */ REFERENCE_TIME *pTimeEnd)
{
- Debug printf("%x: CMediaSample::SetTime() called\n", This);
+ Debug printf("%p: CMediaSample_SetTime() called\n", This);
return E_NOTIMPL;
}
-HRESULT STDCALL CMediaSample::IsSyncPoint (
- IMediaSample * This)
+static HRESULT STDCALL CMediaSample_IsSyncPoint(IMediaSample * This)
{
- Debug printf("%x: CMediaSample::IsSyncPoint() called\n", This);
- if(((CMediaSample*)This)->isSyncPoint)return 0;
+ Debug printf("%p: CMediaSample_IsSyncPoint() called\n", This);
+ if (((CMediaSample*)This)->isSyncPoint)
+ return 0;
return 1;
}
-HRESULT STDCALL CMediaSample::SetSyncPoint (
- IMediaSample * This,
- long bIsSyncPoint)
+static HRESULT STDCALL CMediaSample_SetSyncPoint(IMediaSample * This,
+ long bIsSyncPoint)
{
- Debug printf("%x: CMediaSample::SetSyncPoint() called\n", This);
+ Debug printf("%p: CMediaSample_SetSyncPoint() called\n", This);
((CMediaSample*)This)->isSyncPoint=bIsSyncPoint;
return 0;
}
-HRESULT STDCALL CMediaSample::IsPreroll (
- IMediaSample * This)
+static HRESULT STDCALL CMediaSample_IsPreroll(IMediaSample * This)
{
- Debug printf("%x: CMediaSample::IsPreroll() called\n", This);
- if(((CMediaSample*)This)->isPreroll==0)
- return 1;//S_FALSE
- else
+ Debug printf("%p: CMediaSample_IsPreroll() called\n", This);
+
+ if (((CMediaSample*)This)->isPreroll)
return 0;//S_OK
+
+ return 1;//S_FALSE
}
-HRESULT STDCALL CMediaSample::SetPreroll (
- IMediaSample * This,
- long bIsPreroll)
+static HRESULT STDCALL CMediaSample_SetPreroll(IMediaSample * This,
+ long bIsPreroll)
{
- Debug printf("%x: CMediaSample::SetPreroll() called\n", This);
+ Debug printf("%p: CMediaSample_SetPreroll() called\n", This);
((CMediaSample*)This)->isPreroll=bIsPreroll;
return 0;
}
-long STDCALL CMediaSample::GetActualDataLength (
- IMediaSample * This)
+static long STDCALL CMediaSample_GetActualDataLength(IMediaSample * This)
{
- Debug printf("%x: CMediaSample::GetActualDataLength() called -> %d\n", This, ((CMediaSample*)This)->actual_size);
+ Debug printf("%p: CMediaSample_GetActualDataLength() called -> %d\n", This, ((CMediaSample*)This)->actual_size);
return ((CMediaSample*)This)->actual_size;
}
-HRESULT STDCALL CMediaSample::SetActualDataLength (
- IMediaSample * This,
- long __MIDL_0010)
+static HRESULT STDCALL CMediaSample_SetActualDataLength(IMediaSample * This,
+ long __MIDL_0010)
{
- Debug printf("%x: CMediaSample::SetActualDataLength(%d) called\n", This, __MIDL_0010);
- if(__MIDL_0010>((CMediaSample*)This)->size)
+ Debug printf("%p: CMediaSample_SetActualDataLength(%ld) called\n", This, __MIDL_0010);
+ if (__MIDL_0010 > ((CMediaSample*)This)->size)
{
- printf("%x: ERROR: CMediaSample buffer overflow\n", This);
+ printf("%p: ERROR: CMediaSample buffer overflow\n", This);
}
((CMediaSample*)This)->actual_size=__MIDL_0010;
return 0;
}
-HRESULT STDCALL CMediaSample::GetMediaType (
- IMediaSample * This,
- AM_MEDIA_TYPE **ppMediaType)
+static HRESULT STDCALL CMediaSample_GetMediaType(IMediaSample * This,
+ AM_MEDIA_TYPE **ppMediaType)
{
- Debug printf("%x: CMediaSample::GetMediaType() called\n", This);
+ Debug printf("%p: CMediaSample_GetMediaType() called\n", This);
if(!ppMediaType)
- return 0x80004003;
+ return E_INVALIDARG;
if(!((CMediaSample*)This)->type_valid)
{
*ppMediaType=0;
@@ -200,55 +144,101 @@ HRESULT STDCALL CMediaSample::GetMediaType (
(*ppMediaType)=(AM_MEDIA_TYPE*)CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE));
memcpy(*ppMediaType, &t, sizeof(AM_MEDIA_TYPE));
(*ppMediaType)->pbFormat=(char*)CoTaskMemAlloc(t.cbFormat);
- memcpy((*ppMediaType)->pbFormat, t.pbFormat, t.cbFormat);
+ memcpy((*ppMediaType)->pbFormat, t.pbFormat, t.cbFormat);
// *ppMediaType=0; //media type was not changed
- return 0;
+ return 0;
}
-HRESULT STDCALL CMediaSample::SetMediaType (
- IMediaSample * This,
- AM_MEDIA_TYPE *pMediaType)
+static HRESULT STDCALL CMediaSample_SetMediaType(IMediaSample * This,
+ AM_MEDIA_TYPE *pMediaType)
{
- Debug printf("%x: CMediaSample::SetMediaType() called\n", This);
- if(!pMediaType)return 0x80004003;
- AM_MEDIA_TYPE& t=((CMediaSample*)This)->media_type;
- if(t.pbFormat)CoTaskMemFree(t.pbFormat);
- t=*pMediaType;
- t.pbFormat=(char*)CoTaskMemAlloc(t.cbFormat);
- memcpy(t.pbFormat, pMediaType->pbFormat, t.cbFormat);
+ Debug printf("%p: CMediaSample_SetMediaType() called\n", This);
+ if (!pMediaType)
+ return E_INVALIDARG;
+ AM_MEDIA_TYPE& t = ((CMediaSample*)This)->media_type;
+ if (t.pbFormat)
+ CoTaskMemFree(t.pbFormat);
+ t = *pMediaType;
+ t.pbFormat = (char*)CoTaskMemAlloc(t.cbFormat);
+ memcpy(t.pbFormat, pMediaType->pbFormat, t.cbFormat);
((CMediaSample*)This)->type_valid=1;
+
return 0;
}
-HRESULT STDCALL CMediaSample::IsDiscontinuity (
- IMediaSample * This)
+static HRESULT STDCALL CMediaSample_IsDiscontinuity(IMediaSample * This)
{
- Debug printf("%x: CMediaSample::IsDiscontinuity() called\n", This);
+ Debug printf("%p: CMediaSample_IsDiscontinuity() called\n", This);
return 1;
}
-HRESULT STDCALL CMediaSample::SetDiscontinuity (
- IMediaSample * This,
- long bDiscontinuity)
+static HRESULT STDCALL CMediaSample_SetDiscontinuity(IMediaSample * This,
+ long bDiscontinuity)
{
- Debug printf("%x: CMediaSample::SetDiscontinuity() called\n", This);
+ Debug printf("%p: CMediaSample_SetDiscontinuity() called\n", This);
return E_NOTIMPL;
}
-HRESULT STDCALL CMediaSample::GetMediaTime (
- IMediaSample * This,
- /* [out] */ LONGLONG *pTimeStart,
- /* [out] */ LONGLONG *pTimeEnd)
+static HRESULT STDCALL CMediaSample_GetMediaTime(IMediaSample * This,
+ /* [out] */ LONGLONG *pTimeStart,
+ /* [out] */ LONGLONG *pTimeEnd)
{
- Debug printf("%x: CMediaSample::GetMediaTime() called\n", This);
+ Debug printf("%p: CMediaSample_GetMediaTime() called\n", This);
return E_NOTIMPL;
}
-HRESULT STDCALL CMediaSample::SetMediaTime (
- IMediaSample * This,
- /* [in] */ LONGLONG *pTimeStart,
- /* [in] */ LONGLONG *pTimeEnd)
+static HRESULT STDCALL CMediaSample_SetMediaTime(IMediaSample * This,
+ /* [in] */ LONGLONG *pTimeStart,
+ /* [in] */ LONGLONG *pTimeEnd)
{
- Debug printf("%x: CMediaSample::SetMediaTime() called\n", This);
+ Debug printf("%p: CMediaSample_SetMediaTime() called\n", This);
return E_NOTIMPL;
}
+
+CMediaSample::CMediaSample(IMemAllocator* allocator, long _size)
+{
+ vt = new IMediaSample_vt;
+
+ vt->QueryInterface = CMediaSample_QueryInterface;
+ vt->AddRef = CMediaSample_AddRef;
+ vt->Release = CMediaSample_Release;
+ vt->GetPointer = CMediaSample_GetPointer;
+ vt->GetSize = CMediaSample_GetSize;
+ vt->GetTime = CMediaSample_GetTime;
+ vt->SetTime = CMediaSample_SetTime;
+ vt->IsSyncPoint = CMediaSample_IsSyncPoint;
+ vt->SetSyncPoint = CMediaSample_SetSyncPoint;
+ vt->IsPreroll = CMediaSample_IsPreroll;
+ vt->SetPreroll = CMediaSample_SetPreroll;
+ vt->GetActualDataLength = CMediaSample_GetActualDataLength;
+ vt->SetActualDataLength = CMediaSample_SetActualDataLength;
+ vt->GetMediaType = CMediaSample_GetMediaType;
+ vt->SetMediaType = CMediaSample_SetMediaType;
+ vt->IsDiscontinuity = CMediaSample_IsDiscontinuity;
+ vt->SetDiscontinuity = CMediaSample_SetDiscontinuity;
+ vt->GetMediaTime = CMediaSample_GetMediaTime;
+ vt->SetMediaTime = CMediaSample_SetMediaTime;
+
+ all = allocator;
+ size = _size;
+ refcount = 0;
+ actual_size = 0;
+ media_type.pbFormat = 0;
+ isPreroll = 0;
+ type_valid = 0;
+ own_block = new char[size];
+ block = own_block;
+ Debug printf("%p: Creating media sample with size %ld, buffer %p\n",
+ this, _size, block);
+}
+
+CMediaSample::~CMediaSample()
+{
+ Debug printf("%p: CMediaSample::~CMediaSample() called\n", this);
+ if (!vt)
+ printf("Second delete of CMediaSample()!!|\n");
+ delete vt;
+ delete own_block;
+ if (media_type.pbFormat)
+ CoTaskMemFree(media_type.pbFormat);
+}