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