From 836c10d475054c5e4847c4bf55e943c9a09a5e2b Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Wed, 16 Apr 2008 13:39:10 -0700 Subject: [PATCH] quartz: Fix discontinuities in wave parser BYTES_FROM_MEDIATIME should be MEDIATIME_FROM_BYTES --- 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"); -- 1.5.4.1