[PATCH 1/5] wineqtdecoder: Use BasePinImpl_QueryAccept() and BasePinImpl_EnumMediaTypes().

Zebediah Figura z.figura12 at gmail.com
Mon Sep 23 19:33:20 CDT 2019


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/wineqtdecoder/qtsplitter.c | 56 +++++++++++++++------------------
 1 file changed, 26 insertions(+), 30 deletions(-)

diff --git a/dlls/wineqtdecoder/qtsplitter.c b/dlls/wineqtdecoder/qtsplitter.c
index 599407d4ca4..d713cd14bd6 100644
--- a/dlls/wineqtdecoder/qtsplitter.c
+++ b/dlls/wineqtdecoder/qtsplitter.c
@@ -199,6 +199,11 @@ static inline QTSplitter *impl_from_IBaseFilter( IBaseFilter *iface )
     return CONTAINING_RECORD(iface, QTSplitter, filter.IBaseFilter_iface);
 }
 
+static inline QTInPin *impl_from_IPin(IPin *iface)
+{
+    return CONTAINING_RECORD(iface, QTInPin, pin.IPin_iface);
+}
+
 /*
  * Base Filter
  */
@@ -285,6 +290,24 @@ static const struct strmbase_filter_ops filter_ops =
     .filter_destroy = qt_splitter_destroy,
 };
 
+static HRESULT WINAPI sink_CheckMediaType(BasePin *iface, const AM_MEDIA_TYPE *mt)
+{
+    QTInPin *pin = impl_from_IPin(&iface->IPin_iface);
+
+    if (IsEqualGUID(&mt->majortype, &MEDIATYPE_Stream))
+    {
+        pin->subType = mt->subtype;
+        return S_OK;
+    }
+    return S_FALSE;
+}
+
+static const BasePinFuncTable sink_ops =
+{
+    .pfnCheckMediaType = sink_CheckMediaType,
+    .pfnGetMediaType = BasePinImpl_GetMediaType,
+};
+
 IUnknown * CALLBACK QTSplitter_create(IUnknown *outer, HRESULT *phr)
 {
     QTSplitter *This;
@@ -318,6 +341,7 @@ IUnknown * CALLBACK QTSplitter_create(IUnknown *outer, HRESULT *phr)
     lstrcpynW(This->pInputPin.pin.name, wcsInputPinName, ARRAY_SIZE(This->pInputPin.pin.name));
     This->pInputPin.pin.IPin_iface.lpVtbl = &QT_InputPin_Vtbl;
     This->pInputPin.pin.pConnectedTo = NULL;
+    This->pInputPin.pin.pFuncsTable = &sink_ops;
 
     SourceSeeking_Init(&This->sourceSeeking, &QT_Seeking_Vtbl, QTSplitter_ChangeStop, QTSplitter_ChangeStart, QTSplitter_ChangeRate,  &This->filter.csFilter);
 
@@ -812,11 +836,6 @@ static HRESULT QT_RemoveOutputPins(QTSplitter *This)
     return S_OK;
 }
 
-static inline QTInPin *impl_from_IPin( IPin *iface )
-{
-    return CONTAINING_RECORD(iface, QTInPin, pin.IPin_iface);
-}
-
 static HRESULT QT_Process_Video_Track(QTSplitter* filter, Track trk)
 {
     AM_MEDIA_TYPE amt;
@@ -1154,20 +1173,6 @@ static HRESULT WINAPI QTInPin_Disconnect(IPin *iface)
     return hr;
 }
 
-static HRESULT WINAPI QTInPin_QueryAccept(IPin *iface, const AM_MEDIA_TYPE *pmt)
-{
-    QTInPin *This = impl_from_IPin(iface);
-
-    TRACE("(%p)->(%p)\n", This, pmt);
-
-    if (IsEqualIID(&pmt->majortype, &MEDIATYPE_Stream))
-    {
-        This->subType = pmt->subtype;
-        return S_OK;
-    }
-    return S_FALSE;
-}
-
 static HRESULT WINAPI QTInPin_EndOfStream(IPin *iface)
 {
     FIXME("iface %p, stub!\n", iface);
@@ -1219,15 +1224,6 @@ static HRESULT WINAPI QTInPin_QueryInterface(IPin * iface, REFIID riid, LPVOID *
     return E_NOINTERFACE;
 }
 
-static HRESULT WINAPI QTInPin_EnumMediaTypes(IPin *iface, IEnumMediaTypes **ppEnum)
-{
-    QTInPin *This = impl_from_IPin(iface);
-
-    TRACE("(%p/%p)->(%p)\n", This, iface, ppEnum);
-
-    return EnumMediaTypes_Construct(&This->pin, BasePinImpl_GetMediaType, BasePinImpl_GetMediaTypeVersion, ppEnum);
-}
-
 static const IPinVtbl QT_InputPin_Vtbl = {
     QTInPin_QueryInterface,
     BasePinImpl_AddRef,
@@ -1240,8 +1236,8 @@ static const IPinVtbl QT_InputPin_Vtbl = {
     BasePinImpl_QueryPinInfo,
     BasePinImpl_QueryDirection,
     BasePinImpl_QueryId,
-    QTInPin_QueryAccept,
-    QTInPin_EnumMediaTypes,
+    BasePinImpl_QueryAccept,
+    BasePinImpl_EnumMediaTypes,
     BasePinImpl_QueryInternalConnections,
     QTInPin_EndOfStream,
     QTInPin_BeginFlush,
-- 
2.23.0




More information about the wine-devel mailing list