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",
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;
"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;