summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Waters <matthew@centricular.com>2015-10-26 17:36:21 +1100
committerMatthew Waters <matthew@centricular.com>2015-10-26 18:24:59 +1100
commit09976e021b8d222daf96e1b1328fde4a00b5c05f (patch)
tree37e1cd6b1d623a83c4973cb23b9b6c378d02e266
parent41ca1e48a0baa53354d3c9d0dd8679fab5fcfbb3 (diff)
glviewconvert: expose the element on gles2 platforms
We can do everything with gles3 however gles2 restricts us not allowing separated or frame-by-frame multiview modes due to multiple draw buffers.
-rw-r--r--ext/gl/gstopengl.c10
-rw-r--r--gst-libs/gst/gl/gstglviewconvert.c11
2 files changed, 16 insertions, 5 deletions
diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c
index 1fad0a239..7784f0ae3 100644
--- a/ext/gl/gstopengl.c
+++ b/ext/gl/gstopengl.c
@@ -199,6 +199,11 @@ plugin_init (GstPlugin * plugin)
GST_RANK_NONE, GST_TYPE_GL_FILTER_APP)) {
return FALSE;
}
+
+ if (!gst_element_register (plugin, "glviewconvert",
+ GST_RANK_NONE, GST_TYPE_GL_VIEW_CONVERT_ELEMENT)) {
+ return FALSE;
+ }
#if HAVE_JPEG
#if HAVE_PNG
if (!gst_element_register (plugin, "gloverlay",
@@ -228,11 +233,6 @@ plugin_init (GstPlugin * plugin)
return FALSE;
}
- if (!gst_element_register (plugin, "glviewconvert",
- GST_RANK_NONE, GST_TYPE_GL_VIEW_CONVERT_ELEMENT)) {
- return FALSE;
- }
-
if (!gst_element_register (plugin, "glmosaic",
GST_RANK_NONE, GST_TYPE_GL_MOSAIC)) {
return FALSE;
diff --git a/gst-libs/gst/gl/gstglviewconvert.c b/gst-libs/gst/gl/gstglviewconvert.c
index ef348f0bf..149273a77 100644
--- a/gst-libs/gst/gl/gstglviewconvert.c
+++ b/gst-libs/gst/gl/gstglviewconvert.c
@@ -1449,6 +1449,17 @@ _init_view_convert (GstGLViewConvert * viewconvert)
"Cannot perform multiview conversion without OpenGL shaders");
goto error;
}
+
+ if (out_mode == GST_VIDEO_MULTIVIEW_MODE_SEPARATED
+ || out_mode == GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME) {
+ if (!gl->DrawBuffers) {
+ GST_ERROR_OBJECT (viewconvert,
+ "Separate texture output mode requested however the current "
+ "OpenGL API does not support drawing to multiple buffers");
+ goto error;
+ }
+ }
+
if ((in_flags & GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST) ==
(out_flags & GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST)) {
l_index = 0;