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