From: Hyunjun Ko Date: Wed, 5 Jul 2017 06:32:43 +0000 (+0900) Subject: vaapisink: fail if surface display is different X-Git-Tag: 1.19.3~503^2~935 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=736478d2a76caee872acd7980f593fe0c9b0b599;p=platform%2Fupstream%2Fgstreamer.git 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 --- 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