[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