Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/evr/evr.c | 4 ++-- dlls/qcap/audiorecord.c | 3 +-- dlls/qcap/avico.c | 3 +-- dlls/qcap/avimux.c | 3 +-- dlls/qcap/smartteefilter.c | 3 +-- dlls/qcap/vfwcapture.c | 3 +-- dlls/qedit/nullrenderer.c | 3 +-- dlls/qedit/samplegrabber.c | 3 +-- dlls/quartz/dsoundrender.c | 3 +-- dlls/quartz/filesource.c | 3 +-- dlls/quartz/parser.c | 3 +-- dlls/quartz/videorenderer.c | 3 +-- dlls/quartz/vmr9.c | 10 +--------- dlls/strmbase/filter.c | 4 ++-- dlls/strmbase/renderer.c | 4 ++-- dlls/strmbase/transform.c | 3 +-- dlls/winegstreamer/gstdemux.c | 3 +-- dlls/wineqtdecoder/qtsplitter.c | 3 +-- include/wine/strmbase.h | 4 ++-- 19 files changed, 23 insertions(+), 45 deletions(-)
diff --git a/dlls/evr/evr.c b/dlls/evr/evr.c index 655ca79b0d7..690741ee748 100644 --- a/dlls/evr/evr.c +++ b/dlls/evr/evr.c @@ -90,8 +90,8 @@ HRESULT evr_filter_create(IUnknown *outer, void **out) if (!object) return E_OUTOFMEMORY;
- strmbase_filter_init(&object->filter, &basefilter_vtbl, outer, &CLSID_EnhancedVideoRenderer, - (DWORD_PTR)(__FILE__ ": EVR.csFilter"), &basefilter_functable); + strmbase_filter_init(&object->filter, &basefilter_vtbl, outer, + &CLSID_EnhancedVideoRenderer, &basefilter_functable);
*out = &object->filter.IUnknown_inner;
diff --git a/dlls/qcap/audiorecord.c b/dlls/qcap/audiorecord.c index e002bb2d691..de2d271aa53 100644 --- a/dlls/qcap/audiorecord.c +++ b/dlls/qcap/audiorecord.c @@ -213,8 +213,7 @@ IUnknown* WINAPI QCAP_createAudioCaptureFilter(IUnknown *outer, HRESULT *phr) memset(This, 0, sizeof(*This)); This->IPersistPropertyBag_iface.lpVtbl = &PersistPropertyBagVtbl;
- strmbase_filter_init(&This->filter, &AudioRecordVtbl, outer, &CLSID_AudioRecord, - (DWORD_PTR)(__FILE__ ": AudioRecord.csFilter"), &AudioRecordFuncs); + strmbase_filter_init(&This->filter, &AudioRecordVtbl, outer, &CLSID_AudioRecord, &AudioRecordFuncs);
*phr = S_OK; return &This->filter.IUnknown_inner; diff --git a/dlls/qcap/avico.c b/dlls/qcap/avico.c index bcfdc6b0876..7ef7b51b11d 100644 --- a/dlls/qcap/avico.c +++ b/dlls/qcap/avico.c @@ -600,8 +600,7 @@ IUnknown* WINAPI QCAP_createAVICompressor(IUnknown *outer, HRESULT *phr) return NULL; }
- strmbase_filter_init(&compressor->filter, &AVICompressorVtbl, outer, &CLSID_AVICo, - (DWORD_PTR)(__FILE__ ": AVICompressor.csFilter"), &filter_func_table); + strmbase_filter_init(&compressor->filter, &AVICompressorVtbl, outer, &CLSID_AVICo, &filter_func_table);
compressor->IPersistPropertyBag_iface.lpVtbl = &PersistPropertyBagVtbl;
diff --git a/dlls/qcap/avimux.c b/dlls/qcap/avimux.c index d2475eedb02..fb0ae4188e7 100644 --- a/dlls/qcap/avimux.c +++ b/dlls/qcap/avimux.c @@ -2251,8 +2251,7 @@ IUnknown * WINAPI QCAP_createAVIMux(IUnknown *outer, HRESULT *phr) return NULL; }
- strmbase_filter_init(&avimux->filter, &AviMuxVtbl, outer, &CLSID_AviDest, - (DWORD_PTR)(__FILE__ ": AviMux.csFilter"), &filter_func_table); + strmbase_filter_init(&avimux->filter, &AviMuxVtbl, outer, &CLSID_AviDest, &filter_func_table); avimux->IConfigAviMux_iface.lpVtbl = &ConfigAviMuxVtbl; avimux->IConfigInterleaving_iface.lpVtbl = &ConfigInterleavingVtbl; avimux->IMediaSeeking_iface.lpVtbl = &MediaSeekingVtbl; diff --git a/dlls/qcap/smartteefilter.c b/dlls/qcap/smartteefilter.c index caaaaab43ba..b93b3324d75 100644 --- a/dlls/qcap/smartteefilter.c +++ b/dlls/qcap/smartteefilter.c @@ -483,8 +483,7 @@ IUnknown* WINAPI QCAP_createSmartTeeFilter(IUnknown *outer, HRESULT *phr) } memset(This, 0, sizeof(*This));
- strmbase_filter_init(&This->filter, &SmartTeeFilterVtbl, outer, &CLSID_SmartTee, - (DWORD_PTR)(__FILE__ ": SmartTeeFilter.csFilter"), &SmartTeeFilterFuncs); + strmbase_filter_init(&This->filter, &SmartTeeFilterVtbl, outer, &CLSID_SmartTee, &SmartTeeFilterFuncs);
inputPinInfo.pFilter = &This->filter.IBaseFilter_iface; strmbase_sink_init(&This->sink, &SmartTeeFilterInputVtbl, &inputPinInfo, diff --git a/dlls/qcap/vfwcapture.c b/dlls/qcap/vfwcapture.c index 519543e1478..e194bbf010e 100644 --- a/dlls/qcap/vfwcapture.c +++ b/dlls/qcap/vfwcapture.c @@ -642,8 +642,7 @@ IUnknown * WINAPI QCAP_createVFWCaptureFilter(IUnknown *outer, HRESULT *phr) return NULL; }
- strmbase_filter_init(&object->filter, &VfwCapture_Vtbl, outer, &CLSID_VfwCapture, - (DWORD_PTR)(__FILE__ ": VfwCapture.csFilter"), &BaseFuncTable); + strmbase_filter_init(&object->filter, &VfwCapture_Vtbl, outer, &CLSID_VfwCapture, &BaseFuncTable);
object->IAMStreamConfig_iface.lpVtbl = &IAMStreamConfig_VTable; object->IAMVideoProcAmp_iface.lpVtbl = &IAMVideoProcAmp_VTable; diff --git a/dlls/qedit/nullrenderer.c b/dlls/qedit/nullrenderer.c index aeae6be85b2..2c9aff8bc0f 100644 --- a/dlls/qedit/nullrenderer.c +++ b/dlls/qedit/nullrenderer.c @@ -93,8 +93,7 @@ HRESULT NullRenderer_create(IUnknown *outer, void **out) pNullRenderer = CoTaskMemAlloc(sizeof(NullRendererImpl));
hr = strmbase_renderer_init(&pNullRenderer->renderer, &NullRenderer_Vtbl, outer, - &CLSID_NullRenderer, sink_name, - (DWORD_PTR)(__FILE__ ": NullRendererImpl.csFilter"), &RendererFuncTable); + &CLSID_NullRenderer, sink_name, &RendererFuncTable);
if (FAILED(hr)) CoTaskMemFree(pNullRenderer); diff --git a/dlls/qedit/samplegrabber.c b/dlls/qedit/samplegrabber.c index 9836d9e3740..20525401335 100644 --- a/dlls/qedit/samplegrabber.c +++ b/dlls/qedit/samplegrabber.c @@ -1154,8 +1154,7 @@ HRESULT SampleGrabber_create(IUnknown *outer, void **out) } ZeroMemory(obj, sizeof(SG_Impl));
- strmbase_filter_init(&obj->filter, &IBaseFilter_VTable, outer, &CLSID_SampleGrabber, - (DWORD_PTR)(__FILE__ ": SG_Impl.csFilter"), &basefunc_vtbl); + strmbase_filter_init(&obj->filter, &IBaseFilter_VTable, outer, &CLSID_SampleGrabber, &basefunc_vtbl); obj->ISampleGrabber_iface.lpVtbl = &ISampleGrabber_VTable; obj->IMemInputPin_iface.lpVtbl = &IMemInputPin_VTable; obj->pin_in.IPin_iface.lpVtbl = &IPin_In_VTable; diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c index ae4bdf8239b..6451f85b5ad 100644 --- a/dlls/quartz/dsoundrender.c +++ b/dlls/quartz/dsoundrender.c @@ -629,8 +629,7 @@ HRESULT DSoundRender_create(IUnknown *outer, void **out) ZeroMemory(pDSoundRender, sizeof(DSoundRenderImpl));
hr = strmbase_renderer_init(&pDSoundRender->renderer, &DSoundRender_Vtbl, - outer, &CLSID_DSoundRender, sink_name, - (DWORD_PTR)(__FILE__ ": DSoundRenderImpl.csFilter"), &BaseFuncTable); + outer, &CLSID_DSoundRender, sink_name, &BaseFuncTable);
pDSoundRender->IBasicAudio_iface.lpVtbl = &IBasicAudio_Vtbl; pDSoundRender->IReferenceClock_iface.lpVtbl = &IReferenceClock_Vtbl; diff --git a/dlls/quartz/filesource.c b/dlls/quartz/filesource.c index 05c453a1f61..d93375e1e9c 100644 --- a/dlls/quartz/filesource.c +++ b/dlls/quartz/filesource.c @@ -409,8 +409,7 @@ HRESULT AsyncReader_create(IUnknown *outer, void **out) if (!pAsyncRead) return E_OUTOFMEMORY;
- strmbase_filter_init(&pAsyncRead->filter, &AsyncReader_Vtbl, outer, &CLSID_AsyncReader, - (DWORD_PTR)(__FILE__ ": AsyncReader.csFilter"), &BaseFuncTable); + strmbase_filter_init(&pAsyncRead->filter, &AsyncReader_Vtbl, outer, &CLSID_AsyncReader, &BaseFuncTable);
pAsyncRead->IFileSourceFilter_iface.lpVtbl = &FileSource_Vtbl;
diff --git a/dlls/quartz/parser.c b/dlls/quartz/parser.c index 3c0f4d55f4c..ee6a4a57938 100644 --- a/dlls/quartz/parser.c +++ b/dlls/quartz/parser.c @@ -82,8 +82,7 @@ HRESULT Parser_Create(ParserImpl *pParser, const IBaseFilterVtbl *vtbl, IUnknown HRESULT hr; PIN_INFO piInput;
- strmbase_filter_init(&pParser->filter, vtbl, outer, clsid, - (DWORD_PTR)(__FILE__ ": ParserImpl.csFilter"), func_table); + strmbase_filter_init(&pParser->filter, vtbl, outer, clsid, func_table);
pParser->fnDisconnect = fnDisconnect;
diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c index d541cca6c41..26bb05f8d92 100644 --- a/dlls/quartz/videorenderer.c +++ b/dlls/quartz/videorenderer.c @@ -801,8 +801,7 @@ HRESULT VideoRenderer_create(IUnknown *outer, void **out) pVideoRenderer->FullScreenMode = OAFALSE;
hr = strmbase_renderer_init(&pVideoRenderer->renderer, &VideoRenderer_Vtbl, - outer, &CLSID_VideoRenderer, sink_name, - (DWORD_PTR)(__FILE__ ": VideoRendererImpl.csFilter"), &BaseFuncTable); + outer, &CLSID_VideoRenderer, sink_name, &BaseFuncTable);
if (FAILED(hr)) goto fail; diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c index dd060e1466c..184937b0385 100644 --- a/dlls/quartz/vmr9.c +++ b/dlls/quartz/vmr9.c @@ -2155,15 +2155,7 @@ static HRESULT vmr_create(IUnknown *outer, void **out, const CLSID *clsid) pVMR->IVMRWindowlessControl_iface.lpVtbl = &VMR7_WindowlessControl_Vtbl; pVMR->IVMRWindowlessControl9_iface.lpVtbl = &VMR9_WindowlessControl_Vtbl;
- if (IsEqualGUID(clsid, &CLSID_VideoMixingRenderer)) - hr = strmbase_renderer_init(&pVMR->renderer, &VMR_Vtbl, outer, - &CLSID_VideoMixingRenderer, sink_name, - (DWORD_PTR)(__FILE__ ": VMR7Impl.csFilter"), &BaseFuncTable); - else - hr = strmbase_renderer_init(&pVMR->renderer, &VMR_Vtbl, outer, - &CLSID_VideoMixingRenderer9, sink_name, - (DWORD_PTR)(__FILE__ ": VMR9Impl.csFilter"), &BaseFuncTable); - + hr = strmbase_renderer_init(&pVMR->renderer, &VMR_Vtbl, outer, clsid, sink_name, &BaseFuncTable); if (FAILED(hr)) goto fail;
diff --git a/dlls/strmbase/filter.c b/dlls/strmbase/filter.c index 9ed588cf803..b1c955825d3 100644 --- a/dlls/strmbase/filter.c +++ b/dlls/strmbase/filter.c @@ -292,7 +292,7 @@ VOID WINAPI BaseFilterImpl_IncrementPinVersion(BaseFilter *filter) }
void strmbase_filter_init(BaseFilter *filter, const IBaseFilterVtbl *vtbl, IUnknown *outer, - const CLSID *clsid, DWORD_PTR debug_info, const BaseFilterFuncTable *func_table) + const CLSID *clsid, const BaseFilterFuncTable *func_table) { memset(filter, 0, sizeof(*filter));
@@ -302,8 +302,8 @@ void strmbase_filter_init(BaseFilter *filter, const IBaseFilterVtbl *vtbl, IUnkn filter->refcount = 1;
InitializeCriticalSection(&filter->csFilter); + filter->csFilter.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": BaseFilter.csFilter"); filter->clsid = *clsid; - filter->csFilter.DebugInfo->Spare[0] = debug_info; filter->pin_version = 1; filter->pFuncsTable = func_table; } diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index e823e6bc7c1..0972f499c5a 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -232,13 +232,13 @@ static const BaseInputPinFuncTable input_BaseInputFuncTable = {
HRESULT WINAPI strmbase_renderer_init(BaseRenderer *filter, const IBaseFilterVtbl *vtbl, - IUnknown *outer, const CLSID *clsid, const WCHAR *sink_name, DWORD_PTR debug_info, + IUnknown *outer, const CLSID *clsid, const WCHAR *sink_name, const BaseRendererFuncTable *pBaseFuncsTable) { PIN_INFO piInput; HRESULT hr;
- strmbase_filter_init(&filter->filter, vtbl, outer, clsid, debug_info, &RendererBaseFilterFuncTable); + strmbase_filter_init(&filter->filter, vtbl, outer, clsid, &RendererBaseFilterFuncTable);
filter->pFuncsTable = pBaseFuncsTable;
diff --git a/dlls/strmbase/transform.c b/dlls/strmbase/transform.c index 39b601af4eb..c14142fcf4d 100644 --- a/dlls/strmbase/transform.c +++ b/dlls/strmbase/transform.c @@ -277,8 +277,7 @@ static HRESULT strmbase_transform_init(IUnknown *outer, const CLSID *clsid, PIN_INFO piInput; PIN_INFO piOutput;
- strmbase_filter_init(&filter->filter, &transform_vtbl, outer, clsid, - (DWORD_PTR)(__FILE__ ": TransformFilter.csFilter"), &tfBaseFuncTable); + strmbase_filter_init(&filter->filter, &transform_vtbl, outer, clsid, &tfBaseFuncTable);
InitializeCriticalSection(&filter->csReceive); filter->csReceive.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__": TransformFilter.csReceive"); diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c index 5e44c92e31c..0ce64e2b9a8 100644 --- a/dlls/winegstreamer/gstdemux.c +++ b/dlls/winegstreamer/gstdemux.c @@ -1267,8 +1267,7 @@ IUnknown * CALLBACK Gstreamer_Splitter_create(IUnknown *outer, HRESULT *phr) } memset(This, 0, sizeof(*This));
- strmbase_filter_init(&This->filter, &GST_Vtbl, outer, &CLSID_Gstreamer_Splitter, - (DWORD_PTR)(__FILE__ ": GSTImpl.csFilter"), &BaseFuncTable); + strmbase_filter_init(&This->filter, &GST_Vtbl, outer, &CLSID_Gstreamer_Splitter, &BaseFuncTable);
This->cStreams = 0; This->ppPins = NULL; diff --git a/dlls/wineqtdecoder/qtsplitter.c b/dlls/wineqtdecoder/qtsplitter.c index c5d3efa6b08..fb85d576dbd 100644 --- a/dlls/wineqtdecoder/qtsplitter.c +++ b/dlls/wineqtdecoder/qtsplitter.c @@ -301,8 +301,7 @@ IUnknown * CALLBACK QTSplitter_create(IUnknown *outer, HRESULT *phr) } ZeroMemory(This,sizeof(*This));
- strmbase_filter_init(&This->filter, &QT_Vtbl, outer, &CLSID_QTSplitter, - (DWORD_PTR)(__FILE__ ": QTSplitter.csFilter"), &BaseFuncTable); + strmbase_filter_init(&This->filter, &QT_Vtbl, outer, &CLSID_QTSplitter, &BaseFuncTable);
InitializeCriticalSection(&This->csReceive); This->csReceive.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__": QTSplitter.csReceive"); diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h index 0c2c9db8744..b1483fc26c9 100644 --- a/include/wine/strmbase.h +++ b/include/wine/strmbase.h @@ -200,7 +200,7 @@ HRESULT WINAPI BaseFilterImpl_QueryVendorInfo(IBaseFilter * iface, LPWSTR *pVend VOID WINAPI BaseFilterImpl_IncrementPinVersion(BaseFilter* This);
void strmbase_filter_init(BaseFilter *filter, const IBaseFilterVtbl *vtbl, IUnknown *outer, - const CLSID *clsid, DWORD_PTR debug_info, const BaseFilterFuncTable *func_table); + const CLSID *clsid, const BaseFilterFuncTable *func_table); void strmbase_filter_cleanup(BaseFilter *filter);
/* Enums */ @@ -600,7 +600,7 @@ HRESULT WINAPI BaseRendererImpl_EndFlush(BaseRenderer* iface); HRESULT WINAPI BaseRendererImpl_ClearPendingSample(BaseRenderer *iface);
HRESULT WINAPI strmbase_renderer_init(BaseRenderer *filter, const IBaseFilterVtbl *vtbl, - IUnknown *outer, const CLSID *clsid, const WCHAR *sink_name, DWORD_PTR debug_info, + IUnknown *outer, const CLSID *clsid, const WCHAR *sink_name, const BaseRendererFuncTable *func_table); void strmbase_renderer_cleanup(BaseRenderer *filter);
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/strmbase/renderer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index 0972f499c5a..0d53934af2d 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -238,6 +238,7 @@ HRESULT WINAPI strmbase_renderer_init(BaseRenderer *filter, const IBaseFilterVtb PIN_INFO piInput; HRESULT hr;
+ memset(filter, 0, sizeof(*filter)); strmbase_filter_init(&filter->filter, vtbl, outer, clsid, &RendererBaseFilterFuncTable);
filter->pFuncsTable = pBaseFuncsTable; @@ -264,7 +265,6 @@ HRESULT WINAPI strmbase_renderer_init(BaseRenderer *filter, const IBaseFilterVtb filter->state_event = CreateEventW(NULL, TRUE, TRUE, NULL); filter->advise_event = CreateEventW(NULL, FALSE, FALSE, NULL); filter->flush_event = CreateEventW(NULL, TRUE, TRUE, NULL); - filter->pMediaSample = NULL;
QualityControlImpl_Create(&filter->sink.pin.IPin_iface, &filter->filter.IBaseFilter_iface, &filter->qcimpl); filter->qcimpl->IQualityControl_iface.lpVtbl = &Renderer_QualityControl_Vtbl;
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/evr/evr.c | 40 ++++++++++++++++++++++++---------------- dlls/evr/tests/evr.c | 4 ++-- 2 files changed, 26 insertions(+), 18 deletions(-)
diff --git a/dlls/evr/evr.c b/dlls/evr/evr.c index 690741ee748..94f88ffecaa 100644 --- a/dlls/evr/evr.c +++ b/dlls/evr/evr.c @@ -33,7 +33,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(evr);
typedef struct { - BaseFilter filter; + BaseRenderer renderer; } evr_filter;
static const IBaseFilterVtbl basefilter_vtbl = @@ -55,33 +55,41 @@ static const IBaseFilterVtbl basefilter_vtbl = BaseFilterImpl_QueryVendorInfo };
-static inline evr_filter *impl_from_BaseFilter(BaseFilter *iface) +static inline evr_filter *impl_from_BaseRenderer(BaseRenderer *iface) { - return CONTAINING_RECORD(iface, evr_filter, filter); + return CONTAINING_RECORD(iface, evr_filter, renderer); }
-static IPin *evr_get_pin(BaseFilter *iface, unsigned int index) +static void evr_destroy(BaseRenderer *iface) { - FIXME("iface %p, index %u, stub!\n", iface, index); - return NULL; + evr_filter *filter = impl_from_BaseRenderer(iface); + + strmbase_renderer_cleanup(&filter->renderer); + CoTaskMemFree(filter); }
-static void evr_destroy(BaseFilter *iface) +static HRESULT WINAPI evr_DoRenderSample(BaseRenderer *iface, IMediaSample *sample) { - evr_filter *filter = impl_from_BaseFilter(iface); + FIXME("Not implemented.\n"); + return E_NOTIMPL; +}
- strmbase_filter_cleanup(&filter->filter); - CoTaskMemFree(filter); +static HRESULT WINAPI evr_CheckMediaType(BaseRenderer *iface, const AM_MEDIA_TYPE *mt) +{ + FIXME("Not implemented.\n"); + return E_NOTIMPL; }
-static const BaseFilterFuncTable basefilter_functable = +static const BaseRendererFuncTable renderer_ops = { - .filter_get_pin = evr_get_pin, - .filter_destroy = evr_destroy, + .pfnCheckMediaType = evr_CheckMediaType, + .pfnDoRenderSample = evr_DoRenderSample, + .renderer_destroy = evr_destroy, };
HRESULT evr_filter_create(IUnknown *outer, void **out) { + static const WCHAR sink_name[] = {'E','V','R',' ','I','n','p','u','t','0',0}; evr_filter *object;
*out = NULL; @@ -90,10 +98,10 @@ HRESULT evr_filter_create(IUnknown *outer, void **out) if (!object) return E_OUTOFMEMORY;
- strmbase_filter_init(&object->filter, &basefilter_vtbl, outer, - &CLSID_EnhancedVideoRenderer, &basefilter_functable); + strmbase_renderer_init(&object->renderer, &basefilter_vtbl, outer, + &CLSID_EnhancedVideoRenderer, sink_name, &renderer_ops);
- *out = &object->filter.IUnknown_inner; + *out = &object->renderer.filter.IUnknown_inner;
return S_OK; } diff --git a/dlls/evr/tests/evr.c b/dlls/evr/tests/evr.c index cd88ec12392..81ad621d0f2 100644 --- a/dlls/evr/tests/evr.c +++ b/dlls/evr/tests/evr.c @@ -158,8 +158,8 @@ static void test_interfaces(void) todo_wine check_interface(filter, &IID_IAMFilterMiscFlags, TRUE); check_interface(filter, &IID_IBaseFilter, TRUE); check_interface(filter, &IID_IMediaFilter, TRUE); - todo_wine check_interface(filter, &IID_IMediaPosition, TRUE); - todo_wine check_interface(filter, &IID_IMediaSeeking, TRUE); + check_interface(filter, &IID_IMediaPosition, TRUE); + check_interface(filter, &IID_IMediaSeeking, TRUE); check_interface(filter, &IID_IPersist, TRUE); check_interface(filter, &IID_IUnknown, TRUE);
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/evr/tests/evr.c | 91 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+)
diff --git a/dlls/evr/tests/evr.c b/dlls/evr/tests/evr.c index 81ad621d0f2..d5ccb27d02c 100644 --- a/dlls/evr/tests/evr.c +++ b/dlls/evr/tests/evr.c @@ -176,12 +176,103 @@ static void test_interfaces(void) ok(!ref, "Got unexpected refcount %d.\n", ref); }
+static void test_enum_pins(void) +{ + IBaseFilter *filter = create_evr(); + IEnumPins *enum1, *enum2; + ULONG count, ref; + IPin *pins[2]; + HRESULT hr; + + ref = get_refcount(filter); + ok(ref == 1, "Got unexpected refcount %d.\n", ref); + + hr = IBaseFilter_EnumPins(filter, NULL); + ok(hr == E_POINTER, "Got hr %#x.\n", hr); + + hr = IBaseFilter_EnumPins(filter, &enum1); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ref = get_refcount(filter); + ok(ref == 2, "Got unexpected refcount %d.\n", ref); + ref = get_refcount(enum1); + ok(ref == 1, "Got unexpected refcount %d.\n", ref); + + hr = IEnumPins_Next(enum1, 1, NULL, NULL); + ok(hr == E_POINTER, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum1, 1, pins, NULL); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ref = get_refcount(filter); + ok(ref == 3, "Got unexpected refcount %d.\n", ref); + ref = get_refcount(pins[0]); + ok(ref == 3, "Got unexpected refcount %d.\n", ref); + ref = get_refcount(enum1); + ok(ref == 1, "Got unexpected refcount %d.\n", ref); + IPin_Release(pins[0]); + ref = get_refcount(filter); + ok(ref == 2, "Got unexpected refcount %d.\n", ref); + + hr = IEnumPins_Next(enum1, 1, pins, NULL); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + hr = IEnumPins_Reset(enum1); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum1, 1, pins, &count); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(count == 1, "Got count %u.\n", count); + IPin_Release(pins[0]); + + hr = IEnumPins_Next(enum1, 1, pins, &count); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + ok(!count, "Got count %u.\n", count); + + hr = IEnumPins_Reset(enum1); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum1, 2, pins, NULL); + ok(hr == E_INVALIDARG, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum1, 2, pins, &count); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + ok(count == 1, "Got count %u.\n", count); + IPin_Release(pins[0]); + + hr = IEnumPins_Reset(enum1); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumPins_Clone(enum1, &enum2); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumPins_Skip(enum1, 2); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + hr = IEnumPins_Skip(enum1, 1); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumPins_Skip(enum1, 1); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum1, 1, pins, NULL); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum2, 1, pins, NULL); + ok(hr == S_OK, "Got hr %#x.\n", hr); + IPin_Release(pins[0]); + + IEnumPins_Release(enum2); + IEnumPins_Release(enum1); + ref = IBaseFilter_Release(filter); + ok(!ref, "Got outstanding refcount %d.\n", ref); +} + START_TEST(evr) { CoInitialize(NULL);
test_aggregation(); test_interfaces(); + test_enum_pins();
CoUninitialize(); }
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/evr/tests/evr.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)
diff --git a/dlls/evr/tests/evr.c b/dlls/evr/tests/evr.c index d5ccb27d02c..49b5b534e17 100644 --- a/dlls/evr/tests/evr.c +++ b/dlls/evr/tests/evr.c @@ -25,6 +25,8 @@ #include "initguid.h" #include "dxva2api.h"
+static const WCHAR sink_id[] = {'E','V','R',' ','I','n','p','u','t','0',0}; + static IBaseFilter *create_evr(void) { IBaseFilter *filter = NULL; @@ -266,6 +268,30 @@ static void test_enum_pins(void) ok(!ref, "Got outstanding refcount %d.\n", ref); }
+static void test_find_pin(void) +{ + IBaseFilter *filter = create_evr(); + IEnumPins *enum_pins; + IPin *pin, *pin2; + HRESULT hr; + ULONG ref; + + hr = IBaseFilter_EnumPins(filter, &enum_pins); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IBaseFilter_FindPin(filter, sink_id, &pin); + ok(hr == S_OK, "Got hr %#x.\n", hr); + hr = IEnumPins_Next(enum_pins, 1, &pin2, NULL); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(pin2 == pin, "Expected pin %p, got %p.\n", pin, pin2); + IPin_Release(pin2); + IPin_Release(pin); + + IEnumPins_Release(enum_pins); + ref = IBaseFilter_Release(filter); + ok(!ref, "Got outstanding refcount %d.\n", ref); +} + START_TEST(evr) { CoInitialize(NULL); @@ -273,6 +299,7 @@ START_TEST(evr) test_aggregation(); test_interfaces(); test_enum_pins(); + test_find_pin();
CoUninitialize(); }
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/evr/tests/evr.c | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+)
diff --git a/dlls/evr/tests/evr.c b/dlls/evr/tests/evr.c index 49b5b534e17..489b7b949db 100644 --- a/dlls/evr/tests/evr.c +++ b/dlls/evr/tests/evr.c @@ -292,6 +292,51 @@ static void test_find_pin(void) ok(!ref, "Got outstanding refcount %d.\n", ref); }
+static void test_pin_info(void) +{ + IBaseFilter *filter = create_evr(); + PIN_DIRECTION dir; + PIN_INFO info; + HRESULT hr; + WCHAR *id; + ULONG ref; + IPin *pin; + + hr = IBaseFilter_FindPin(filter, sink_id, &pin); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ref = get_refcount(filter); + ok(ref == 2, "Got unexpected refcount %d.\n", ref); + ref = get_refcount(pin); + ok(ref == 2, "Got unexpected refcount %d.\n", ref); + + hr = IPin_QueryPinInfo(pin, &info); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(info.pFilter == filter, "Expected filter %p, got %p.\n", filter, info.pFilter); + ok(info.dir == PINDIR_INPUT, "Got direction %d.\n", info.dir); + ok(!lstrcmpW(info.achName, sink_id), "Got name %s.\n", wine_dbgstr_w(info.achName)); + ref = get_refcount(filter); + ok(ref == 3, "Got unexpected refcount %d.\n", ref); + ref = get_refcount(pin); + ok(ref == 3, "Got unexpected refcount %d.\n", ref); + IBaseFilter_Release(info.pFilter); + + hr = IPin_QueryDirection(pin, &dir); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(dir == PINDIR_INPUT, "Got direction %d.\n", dir); + + hr = IPin_QueryId(pin, &id); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(!lstrcmpW(id, sink_id), "Got id %s.\n", wine_dbgstr_w(id)); + CoTaskMemFree(id); + + hr = IPin_QueryInternalConnections(pin, NULL, NULL); + ok(hr == E_NOTIMPL, "Got hr %#x.\n", hr); + + IPin_Release(pin); + ref = IBaseFilter_Release(filter); + ok(!ref, "Got outstanding refcount %d.\n", ref); +} + START_TEST(evr) { CoInitialize(NULL); @@ -300,6 +345,7 @@ START_TEST(evr) test_interfaces(); test_enum_pins(); test_find_pin(); + test_pin_info();
CoUninitialize(); }