Zebediah Figura : wineqtdecoder: Use strmbase_source_init().

Alexandre Julliard julliard at winehq.org
Fri Sep 6 16:05:42 CDT 2019


Module: wine
Branch: master
Commit: 2732d74d99d53cbdf60adf0d5e89680dff1f5b03
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=2732d74d99d53cbdf60adf0d5e89680dff1f5b03

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Thu Sep  5 19:02:12 2019 -0500

wineqtdecoder: Use strmbase_source_init().

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wineqtdecoder/qtsplitter.c | 48 ++++++++++++++++-------------------------
 1 file changed, 18 insertions(+), 30 deletions(-)

diff --git a/dlls/wineqtdecoder/qtsplitter.c b/dlls/wineqtdecoder/qtsplitter.c
index e7597e1..3931452 100644
--- a/dlls/wineqtdecoder/qtsplitter.c
+++ b/dlls/wineqtdecoder/qtsplitter.c
@@ -790,10 +790,8 @@ static void free_source_pin(QTOutPin *pin)
     LeaveCriticalSection(pin->pin.pin.pCritSec);
 
     DeleteMediaType(pin->pmt);
-    FreeMediaType(&pin->pin.pin.mtCurrent);
-    if (pin->pin.pAllocator)
-        IMemAllocator_Release(pin->pin.pAllocator);
-    CoTaskMemFree(pin);
+    strmbase_source_cleanup(&pin->pin);
+    heap_free(pin);
 }
 
 /*
@@ -1446,38 +1444,28 @@ static const OutputQueueFuncTable output_OutputQueueFuncTable = {
     OutputQueueImpl_ThreadProc
 };
 
-static HRESULT QT_AddPin(QTSplitter *This, const PIN_INFO *piOutput, const AM_MEDIA_TYPE *amt, BOOL video)
+static HRESULT QT_AddPin(QTSplitter *filter, const PIN_INFO *pin_info,
+        const AM_MEDIA_TYPE *mt, BOOL video)
 {
-    HRESULT hr;
-    IPin **target;
+    QTOutPin *pin;
+
+    if (!(pin = heap_alloc_zero(sizeof(*pin))))
+        return E_OUTOFMEMORY;
 
     if (video)
-        target = (IPin**)&This->pVideo_Pin;
+        filter->pVideo_Pin = pin;
     else
-        target = (IPin**)&This->pAudio_Pin;
-
-    if (*target != NULL)
-    {
-        FIXME("We already have a %s pin\n",(video)?"video":"audio");
-        return E_FAIL;
-    }
+        filter->pAudio_Pin = pin;
 
-    hr = BaseOutputPin_Construct(&QT_OutputPin_Vtbl, sizeof(QTOutPin), piOutput, &output_BaseOutputFuncTable, &This->filter.csFilter, (IPin**)target);
-    if (SUCCEEDED(hr))
-    {
-        QTOutPin *pin = (QTOutPin*)*target;
-        pin->pmt = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE));
-        CopyMediaType(pin->pmt, amt);
-        pin->pin.pin.pinInfo.pFilter = (LPVOID)This;
-        pin->IQualityControl_iface.lpVtbl = &QTOutPin_QualityControl_Vtbl;
-
-        BaseFilterImpl_IncrementPinVersion(&This->filter);
+    strmbase_source_init(&pin->pin, &QT_OutputPin_Vtbl, piOutput,
+            &output_BaseOutputFuncTable, &filter->filter.csFilter);
+    pin->pmt = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE));
+    CopyMediaType(pin->pmt, mt);
+    pin->IQualityControl_iface.lpVtbl = &QTOutPin_QualityControl_Vtbl;
+    BaseFilterImpl_IncrementPinVersion(&filter->filter);
 
-        hr = OutputQueue_Construct(&pin->pin, TRUE, TRUE, 5, FALSE, THREAD_PRIORITY_NORMAL, &output_OutputQueueFuncTable, &pin->queue);
-    }
-    else
-        ERR("Failed with error %x\n", hr);
-    return hr;
+    return OutputQueue_Construct(&pin->pin, TRUE, TRUE, 5, FALSE,
+            THREAD_PRIORITY_NORMAL, &output_OutputQueueFuncTable, &pin->queue);
 }
 
 static HRESULT WINAPI QTSplitter_ChangeStart(IMediaSeeking *iface)




More information about the wine-cvs mailing list