summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Waters <matthew@centricular.com>2018-10-05 00:48:58 +1000
committerMatthew Waters <matthew@centricular.com>2018-10-05 00:48:58 +1000
commit6e591403a77282a7bef24d5d5c671a6d0d788c16 (patch)
tree954bf1ab3ace82a9c02aae526f567b085b5227bc
parent452d90a88c6e68a3daa38e02213782836788236a (diff)
downloadgst-plugins-base-6e591403a77282a7bef24d5d5c671a6d0d788c16.tar.gz
gst-plugins-base-6e591403a77282a7bef24d5d5c671a6d0d788c16.tar.xz
glimagesink: make multiview none equivalent to mono
Fixes the internal viewconvert to not scale buffers for output with the following pipeline: gltestsrc ! glimagesink It also fixes overlay composition with a resized output with an OpenGL upstream: gltestsrc ! timeoverlay ! glimagesink
-rw-r--r--ext/gl/gstglimagesink.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/ext/gl/gstglimagesink.c b/ext/gl/gstglimagesink.c
index c70cd5510..30062d07e 100644
--- a/ext/gl/gstglimagesink.c
+++ b/ext/gl/gstglimagesink.c
@@ -1378,6 +1378,19 @@ configure_display_from_info (GstGLImageSink * glimage_sink,
return TRUE;
}
+static gboolean
+_mview_modes_are_equal (GstVideoMultiviewMode a, GstVideoMultiviewMode b)
+{
+ if (a == b)
+ return TRUE;
+ if (a == GST_VIDEO_MULTIVIEW_MODE_NONE && b == GST_VIDEO_MULTIVIEW_MODE_MONO)
+ return TRUE;
+ if (a == GST_VIDEO_MULTIVIEW_MODE_MONO && b == GST_VIDEO_MULTIVIEW_MODE_NONE)
+ return TRUE;
+
+ return FALSE;
+}
+
/* Called with GST_GLIMAGE_SINK lock held, to
* copy in_info to out_info and update out_caps */
static gboolean
@@ -1397,7 +1410,7 @@ update_output_format (GstGLImageSink * glimage_sink)
mv_mode = GST_VIDEO_INFO_MULTIVIEW_MODE (&glimage_sink->in_info);
- if (glimage_sink->mview_output_mode != mv_mode) {
+ if (!_mview_modes_are_equal (glimage_sink->mview_output_mode, mv_mode)) {
/* Input is multiview, and output wants a conversion - configure 3d converter now,
* otherwise defer it until either the caps or the 3D output mode changes */
gst_video_multiview_video_info_change_mode (out_info,