Module: wine Branch: master Commit: cbb0ff37fa63eefcf1d86ccdf894c9accc4b93b8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cbb0ff37fa63eefcf1d86ccdf8...
Author: Maarten Lankhorst m.b.lankhorst@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");