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