From 736478d2a76caee872acd7980f593fe0c9b0b599 Mon Sep 17 00:00:00 2001 From: Hyunjun Ko Date: Wed, 5 Jul 2017 15:32:43 +0900 Subject: [PATCH] vaapisink: fail if surface display is different Replacing GstVaapiDisplay during rendering might be hiding problems at some cases, even though it's safe currently since we use cache of GstVaapidisplay. Play safe by failing if this happens. https://bugzilla.gnome.org/show_bug.cgi?id=766704 --- gst/vaapi/gstvaapisink.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gst/vaapi/gstvaapisink.c b/gst/vaapi/gstvaapisink.c index d01c727..96ca674 100644 --- a/gst/vaapi/gstvaapisink.c +++ b/gst/vaapi/gstvaapisink.c @@ -1408,8 +1408,9 @@ gst_vaapisink_show_frame_unlocked (GstVaapiSink * sink, GstBuffer * src_buffer) return ret; meta = gst_buffer_get_vaapi_video_meta (buffer); - GST_VAAPI_PLUGIN_BASE_DISPLAY_REPLACE (sink, - gst_vaapi_video_meta_get_display (meta)); + if (gst_vaapi_video_meta_get_display (meta) != + GST_VAAPI_PLUGIN_BASE_DISPLAY (sink)) + goto different_display; proxy = gst_vaapi_video_meta_get_surface_proxy (meta); if (!proxy) @@ -1491,6 +1492,13 @@ no_surface: ret = GST_FLOW_ERROR; goto done; } + +different_display: + { + GST_WARNING_OBJECT (sink, "incoming surface has different VAAPI Display"); + ret = GST_FLOW_ERROR; + goto done; + } } static GstFlowReturn -- 2.7.4