summaryrefslogtreecommitdiffstats
path: root/loader/dshow/cmediasample.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-11-26 21:00:20 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-11-26 21:00:20 +0000
commitf468246cdff9fe045b40b9eb1bc2041b0ab1d436 (patch)
tree4803a4ad3a8532e23a39980896cdd4cf8e5d0717 /loader/dshow/cmediasample.c
parentc126f8b49ed7fedbb19111313449709767af7ff6 (diff)
downloadmpv-f468246cdff9fe045b40b9eb1bc2041b0ab1d436.tar.bz2
mpv-f468246cdff9fe045b40b9eb1bc2041b0ab1d436.tar.xz
avifile sync (mostly cosmetics)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8293 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'loader/dshow/cmediasample.c')
-rw-r--r--loader/dshow/cmediasample.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/loader/dshow/cmediasample.c b/loader/dshow/cmediasample.c
index e618f68674..e0519129eb 100644
--- a/loader/dshow/cmediasample.c
+++ b/loader/dshow/cmediasample.c
@@ -4,6 +4,13 @@
#include <string.h>
#include <stdlib.h>
+/*
+ * currently hack to make some extra room for DS Acel codec which
+ * seems to overwrite allocated memory - FIXME better later
+ * check the buffer allocation
+ */
+static const int SAFETY_ACEL = 1024;
+
static long STDCALL CMediaSample_QueryInterface(IUnknown* This,
/* [in] */ const GUID* iid,
/* [iid_is][out] */ void **ppv)
@@ -78,7 +85,7 @@ static HRESULT STDCALL CMediaSample_GetTime(IMediaSample * This,
/* [out] */ REFERENCE_TIME *pTimeStart,
/* [out] */ REFERENCE_TIME *pTimeEnd)
{
- Debug printf("CMediaSample_GetTime(%p) called (UNIMPLIMENTED)\n", This);
+ Debug printf("CMediaSample_GetTime(%p) called (UNIMPLEMENTED)\n", This);
return E_NOTIMPL;
}
@@ -86,7 +93,7 @@ static HRESULT STDCALL CMediaSample_SetTime(IMediaSample * This,
/* [in] */ REFERENCE_TIME *pTimeStart,
/* [in] */ REFERENCE_TIME *pTimeEnd)
{
- Debug printf("CMediaSample_SetTime(%p) called (UNIMPLIMENTED)\n", This);
+ Debug printf("CMediaSample_SetTime(%p) called (UNIMPLEMENTED)\n", This);
return E_NOTIMPL;
}
@@ -135,12 +142,13 @@ static HRESULT STDCALL CMediaSample_SetActualDataLength(IMediaSample* This,
{
CMediaSample* cms = (CMediaSample*)This;
Debug printf("CMediaSample_SetActualDataLength(%p, %ld) called\n", This, __MIDL_0010);
+
if (__MIDL_0010 > cms->size)
{
char* c = cms->own_block;
- Debug printf(" CMediaSample - buffer overflow %ld %d %p %p\n",
+ Debug printf("CMediaSample - buffer overflow %ld %d %p %p\n",
__MIDL_0010, ((CMediaSample*)This)->size, cms->own_block, cms->block);
- cms->own_block = realloc(cms->own_block, __MIDL_0010);
+ cms->own_block = (char*) realloc(cms->own_block, (size_t) __MIDL_0010 + SAFETY_ACEL);
if (c == cms->block)
cms->block = cms->own_block;
cms->size = __MIDL_0010;
@@ -266,7 +274,7 @@ CMediaSample* CMediaSampleCreate(IMemAllocator* allocator, int _size)
// _size = (_size + 0xfff) & ~0xfff;
This->vt = (IMediaSample_vt*) malloc(sizeof(IMediaSample_vt));
- This->own_block = (char*) malloc(_size);
+ This->own_block = (char*) malloc((size_t)_size + SAFETY_ACEL);
This->media_type.pbFormat = 0;
if (!This->vt || !This->own_block)