[PATCH 2/5] quartz/videorenderer: Set the source rect at connection time.

Zebediah Figura z.figura12 at gmail.com
Tue May 5 19:03:42 CDT 2020


Filter state should not be modified in IPin::QueryAccept().

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/quartz/videorenderer.c | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c
index 77afc9fcef5..15a7d59eb1e 100644
--- a/dlls/quartz/videorenderer.c
+++ b/dlls/quartz/videorenderer.c
@@ -193,9 +193,6 @@ static HRESULT WINAPI VideoRenderer_DoRenderSample(struct strmbase_renderer *ifa
 
 static HRESULT WINAPI VideoRenderer_CheckMediaType(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
 {
-    struct video_renderer *filter = impl_from_strmbase_renderer(iface);
-    const BITMAPINFOHEADER *bitmap_header;
-
     if (!IsEqualGUID(&mt->majortype, &MEDIATYPE_Video))
         return S_FALSE;
 
@@ -209,12 +206,6 @@ static HRESULT WINAPI VideoRenderer_CheckMediaType(struct strmbase_renderer *ifa
             && !IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo2))
         return S_FALSE;
 
-    bitmap_header = get_bitmap_header(mt);
-
-    filter->VideoWidth = bitmap_header->biWidth;
-    filter->VideoHeight = abs(bitmap_header->biHeight);
-    SetRect(&filter->SourceRect, 0, 0, filter->VideoWidth, filter->VideoHeight);
-
     return S_OK;
 }
 
@@ -285,6 +276,18 @@ static void video_renderer_init_stream(struct strmbase_renderer *iface)
     VideoRenderer_AutoShowWindow(filter);
 }
 
+static HRESULT video_renderer_connect(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
+{
+    struct video_renderer *filter = impl_from_strmbase_renderer(iface);
+    const BITMAPINFOHEADER *bitmap_header = get_bitmap_header(mt);
+
+    filter->VideoWidth = bitmap_header->biWidth;
+    filter->VideoHeight = abs(bitmap_header->biHeight);
+    SetRect(&filter->SourceRect, 0, 0, filter->VideoWidth, filter->VideoHeight);
+
+    return S_OK;
+}
+
 static RECT video_renderer_get_default_rect(struct video_window *iface)
 {
     struct video_renderer *This = impl_from_video_window(iface);
@@ -321,6 +324,7 @@ static const struct strmbase_renderer_ops renderer_ops =
     .renderer_destroy = video_renderer_destroy,
     .renderer_query_interface = video_renderer_query_interface,
     .renderer_pin_query_interface = video_renderer_pin_query_interface,
+    .renderer_connect = video_renderer_connect,
 };
 
 static const struct video_window_ops window_ops =
-- 
2.26.2




More information about the wine-devel mailing list