From 68ea74173818551c5e2c262ca5a30753cc684699 Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Wed, 30 Apr 2008 10:33:07 -0700 Subject: [PATCH] Revert "quartz: Handle failures better in acmwrapper." This reverts commit 1ba8ece76e1b87f43270edb1324c31b818e8162e. --- dlls/quartz/acmwrapper.c | 96 +++++++-------------------------------------- 1 files changed, 15 insertions(+), 81 deletions(-) diff --git a/dlls/quartz/acmwrapper.c b/dlls/quartz/acmwrapper.c index 92d0298..c7b1e42 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; } -- 1.5.4.1