Zebediah Figura : evr: Consistently use base renderer methods.
Alexandre Julliard
julliard at winehq.org
Wed Aug 28 18:23:20 CDT 2019
Module: wine
Branch: master
Commit: d06ec99a0cc6bb441c09e84dd2c498dd6137efff
URL: https://source.winehq.org/git/wine.git/?a=commit;h=d06ec99a0cc6bb441c09e84dd2c498dd6137efff
Author: Zebediah Figura <z.figura12 at gmail.com>
Date: Tue Aug 27 20:45:17 2019 -0500
evr: Consistently use base renderer methods.
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
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 690741e..94f88ff 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 cd88ec1..81ad621 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);
More information about the wine-cvs
mailing list