From 9097d3ea4005465dea48780b32a97b00ccf42795 Mon Sep 17 00:00:00 2001 From: Julius Schwartzenberg Date: Wed, 30 Dec 2009 02:58:31 +0100 Subject: avifile: use chunksize specified by the chunk itself, avoids a noticable ticking sound heard when reading past the chunk boundry --- dlls/avifil32/avifile.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/dlls/avifil32/avifile.c b/dlls/avifil32/avifile.c index 0dd91ff..2949c33 100644 --- a/dlls/avifil32/avifile.c +++ b/dlls/avifil32/avifile.c @@ -1089,6 +1089,7 @@ static HRESULT WINAPI IAVIStream_fnRead(IAVIStream *iface, LONG start, /* convert start sample to block,offset pair */ AVIFILE_SamplesToBlock(This, &block, &offset); + TRACE("block=%d, offset=%d\n", block, offset); /* convert samples to bytes */ samples *= This->sInfo.dwSampleSize; @@ -1097,6 +1098,7 @@ static HRESULT WINAPI IAVIStream_fnRead(IAVIStream *iface, LONG start, buffersize = samples; while (samples > 0 && buffersize > 0) { + LONG blocksize; if (block != This->dwCurrentFrame) { hr = AVIFILE_ReadBlock(This, block, NULL, 0); if (FAILED(hr)) @@ -1104,7 +1106,9 @@ static HRESULT WINAPI IAVIStream_fnRead(IAVIStream *iface, LONG start, } size = min((DWORD)samples, (DWORD)buffersize); - size = min(size, This->cbBuffer - offset); + blocksize = This->lpBuffer[1]; + TRACE("blocksize = %u\n",blocksize); + size = min(size, blocksize - offset); if (buffer) memcpy(buffer, ((BYTE*)&This->lpBuffer[2]) + offset, size); block++; -- 1.6.3.3