Maarten Lankhorst : quartz: Fix discontinuities in wave parser.
Alexandre Julliard
julliard at winehq.org
Thu Apr 17 07:38:34 CDT 2008
Module: wine
Branch: master
Commit: cbb0ff37fa63eefcf1d86ccdf894c9accc4b93b8
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cbb0ff37fa63eefcf1d86ccdf894c9accc4b93b8
Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date: Wed Apr 16 13:39:10 2008 -0700
quartz: Fix discontinuities in wave parser.
---
dlls/quartz/waveparser.c | 10 ++++------
1 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/dlls/quartz/waveparser.c b/dlls/quartz/waveparser.c
index 544fa4c..5aef9ef 100644
--- a/dlls/quartz/waveparser.c
+++ b/dlls/quartz/waveparser.c
@@ -167,10 +167,8 @@ static HRESULT WAVEParser_Sample(LPVOID iface, IMediaSample * pSample)
{
REFERENCE_TIME tAviStart, tAviStop, tOffset;
- /* FIXME: hack */
- if (pOutputPin->dwSamplesProcessed == 0) {
- IMediaSample_SetDiscontinuity(This->pCurrentSample, TRUE);
- }
+ IMediaSample_SetDiscontinuity(This->pCurrentSample, pOutputPin->dwSamplesProcessed == 0);
+
IMediaSample_SetSyncPoint(This->pCurrentSample, TRUE);
pOutputPin->dwSamplesProcessed++;
@@ -195,8 +193,7 @@ static HRESULT WAVEParser_Sample(LPVOID iface, IMediaSample * pSample)
if (hr == S_FALSE)
{
/* Break out */
- offset_src += chunk_remaining_bytes;
- This->Parser.pInputPin->rtCurrent -= BYTES_FROM_MEDIATIME(cbSrcStream - offset_src);
+ This->Parser.pInputPin->rtCurrent -= MEDIATIME_FROM_BYTES(cbSrcStream - offset_src - chunk_remaining_bytes);
hr = S_OK;
break;
}
@@ -297,6 +294,7 @@ static HRESULT WAVEParserImpl_seek(IBaseFilter *iface)
}
pPin->rtStart = pPin->rtCurrent = bytepos;
+ ((Parser_OutputPin *)This->Parser.ppPins[1])->dwSamplesProcessed = 0;
LeaveCriticalSection(&This->Parser.csFilter);
TRACE("Done flushing\n");
More information about the wine-cvs
mailing list