Maarten Lankhorst : Revert "quartz: Handle failures better in acmwrapper.".

Alexandre Julliard julliard at winehq.org
Thu May 1 06:39:08 CDT 2008


Module: wine
Branch: master
Commit: 4afc2ae9511a45f995cf6a9246ec57dd2a185e03
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4afc2ae9511a45f995cf6a9246ec57dd2a185e03

Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date:   Wed Apr 30 10:33:07 2008 -0700

Revert "quartz: Handle failures better in acmwrapper.".

This reverts commit 1ba8ece76e1b87f43270edb1324c31b818e8162e.

Code for holding sample doesn't make sense and shouldn't be there
because it should really be handled by keeping track of the last
successful position of a frame sent and aborting the whole processing
as soon as rejection occurs.

---

 dlls/quartz/acmwrapper.c |   94 +++++++---------------------------------------
 1 files changed, 14 insertions(+), 80 deletions(-)

diff --git a/dlls/quartz/acmwrapper.c b/dlls/quartz/acmwrapper.c
index 92d0298..60b8fd1 100644
--- a/dlls/quartz/acmwrapper.c
+++ b/dlls/quartz/acmwrapper.c
@@ -48,9 +48,6 @@ typedef struct ACMWrapperImpl
     LPWAVEFORMATEX pWfIn;
     LPWAVEFORMATEX pWfOut;
 
-    IMediaSample *recv, *xmit;
-    ULONG done;
-
     LONGLONG lasttime_real;
     LONGLONG lasttime_sent;
 } ACMWrapperImpl;
@@ -69,61 +66,32 @@ static HRESULT ACMWrapper_ProcessSampleData(TransformFilterImpl* pTransformFilte
     HRESULT hr;
     LONGLONG tStart = -1, tStop = -1, tMed;
 
-    assert(pSample);
-
-    if (This->xmit)
-    {
-        hr = OutputPin_SendSample((OutputPin*)This->tf.ppPins[1], This->xmit);
-        if (hr != S_OK)
-            return hr;
-        IMediaSample_Release(This->xmit);
-        This->xmit = NULL;
-    }
-
     hr = IMediaSample_GetPointer(pSample, &pbSrcStream);
     if (FAILED(hr))
     {
         ERR("Cannot get pointer to sample data (%x)\n", hr);
 	return hr;
     }
-    cbSrcStream = IMediaSample_GetActualDataLength(pSample);
-    preroll = (IMediaSample_IsPreroll(pSample) == S_OK);
 
-    if (pSample != This->recv)
-    {
-        if (This->recv)
-        {
-            /* Get rid of buffered sample first */
-            hr = ACMWrapper_ProcessSampleData(pTransformFilter, This->recv);
-            if (hr != S_OK)
-                return hr;
-            if (This->recv)
-                return S_FALSE;
-        }
+    preroll = (IMediaSample_IsPreroll(pSample) == S_OK);
 
-        IMediaSample_GetTime(pSample, &tStart, &tStop);
+    IMediaSample_GetTime(pSample, &tStart, &tStop);
+    cbSrcStream = IMediaSample_GetActualDataLength(pSample);
 
-        /* Prevent discontinuities when codecs 'absorb' data but not give anything back in return */
-        if (IMediaSample_IsDiscontinuity(pSample) == S_OK)
-        {
-            This->lasttime_real = tStart;
-            This->lasttime_sent = tStart;
-        }
-        else if (This->lasttime_real == tStart)
-            tStart = This->lasttime_sent;
-        else
-            WARN("Discontinuity\n");
-    }
-    else
+    /* Prevent discontinuities when codecs 'absorb' data but not give anything back in return */
+    if (IMediaSample_IsDiscontinuity(pSample) == S_OK)
     {
-        tStart = This->lasttime_sent;
-        tStop = This->lasttime_real;
-        cbSrcStream -= This->done;
-        pbSrcStream += This->done;
+        This->lasttime_real = tStart;
+        This->lasttime_sent = tStart;
     }
+    else if (This->lasttime_real == tStart)
+        tStart = This->lasttime_sent;
+    else
+        WARN("Discontinuity\n");
+
     tMed = tStart;
 
-    TRACE("Sample data ptr = %p, size = %u\n", pbSrcStream, cbSrcStream);
+    TRACE("Sample data ptr = %p, size = %ld\n", pbSrcStream, (long)cbSrcStream);
 
     hr = IPin_ConnectionMediaType(This->tf.ppPins[0], &amt);
     if (FAILED(hr)) {
@@ -233,44 +201,17 @@ error:
         ash.pbSrc += ash.cbSrcLengthUsed;
         ash.cbSrcLength -= ash.cbSrcLengthUsed;
 
-        if (hr == S_FALSE)
-        {
-            This->xmit = pOutSample;
-            if (ash.cbSrcLength && !This->recv)
-            {
-                This->recv = pSample;
-                IMediaSample_AddRef(This->recv);
-            }
-            else if (This->recv)
-            {
-                IMediaSample_Release(This->recv);
-                This->recv = NULL;
-            }
-
-            This->done = IMediaSample_GetActualDataLength(pSample) - ash.cbSrcLength;
-            break;
-        }
-
         if (pOutSample)
             IMediaSample_Release(pOutSample);
         pOutSample = NULL;
+
     }
 
     This->lasttime_real = tStop;
     This->lasttime_sent = tMed;
 
-
     if (hr != S_OK)
         FIXME("FATALITY: %08x\n", hr);
-    else if (This->recv)
-    {
-        assert(This->recv == pSample);
-        IMediaSample_Release(This->recv);
-        This->recv = NULL;
-    }
-
-    if (hr == S_FALSE)
-        return S_OK;
 
     return hr;
 }
@@ -336,13 +277,7 @@ static HRESULT ACMWrapper_Cleanup(TransformFilterImpl* pTransformFilter)
 
     This->has = 0;
     This->lasttime_real = This->lasttime_sent = -1;
-    if (This->recv)
-        IMediaSample_Release(This->recv);
-
-    if (This->xmit)
-        IMediaSample_Release(This->xmit);
 
-    This->recv = This->xmit = NULL;
     return S_OK;
 }
 
@@ -378,7 +313,6 @@ HRESULT ACMWrapper_create(IUnknown * pUnkOuter, LPVOID * ppv)
 
     *ppv = (LPVOID)This;
     This->lasttime_real = This->lasttime_sent = -1;
-    This->recv = This->xmit = NULL;
 
     return hr;
 }




More information about the wine-cvs mailing list