summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile.am1
-rw-r--r--configure.ac54
-rw-r--r--ext/Makefile.am8
-rw-r--r--ext/gl/Makefile.am42
-rw-r--r--ext/gl/gstopengl.c23
-rw-r--r--ext/gl/meson.build22
-rw-r--r--ext/meson.build1
-rw-r--r--gst-libs/gst/Makefile.am26
-rw-r--r--gst-libs/gst/gl/Makefile.am9
-rw-r--r--gst-libs/gst/gl/meson.build10
-rw-r--r--gst-libs/gst/meson.build1
-rw-r--r--m4/gst-gl.m41087
-rw-r--r--meson_options.txt7
-rw-r--r--pkgconfig/Makefile.am4
-rw-r--r--pkgconfig/gstreamer-gl-uninstalled.pc.in2
-rw-r--r--pkgconfig/gstreamer-gl.pc.in2
-rw-r--r--pkgconfig/gstreamer-plugins-base-uninstalled.pc.in4
-rw-r--r--pkgconfig/gstreamer-plugins-base.pc.in2
-rw-r--r--pkgconfig/meson.build3
-rw-r--r--po/POTFILES.in1
-rw-r--r--tests/check/Makefile.am4
-rw-r--r--tests/examples/Makefile.am10
-rw-r--r--tests/examples/gl/Makefile.am2
-rw-r--r--tests/examples/gl/clutter/Makefile.am38
-rwxr-xr-xtests/examples/gl/cocoa/Makefile.am6
-rw-r--r--tests/examples/gl/generic/cube/Makefile.am6
-rw-r--r--tests/examples/gl/generic/cubeyuv/Makefile.am6
-rw-r--r--tests/examples/gl/generic/doublecube/Makefile.am6
-rw-r--r--tests/examples/gl/generic/recordgraphic/Makefile.am8
-rw-r--r--tests/examples/gl/gtk/3dvideo/Makefile.am12
-rw-r--r--tests/examples/gl/gtk/3dvideo/mviewwidget.h2
-rw-r--r--tests/examples/gl/gtk/Makefile.am2
-rw-r--r--tests/examples/gl/gtk/filternovideooverlay/Makefile.am9
-rw-r--r--tests/examples/gl/gtk/filtervideooverlay/Makefile.am11
-rw-r--r--tests/examples/gl/gtk/fxtest/Makefile.am16
-rw-r--r--tests/examples/gl/gtk/switchvideooverlay/Makefile.am9
-rw-r--r--tests/examples/gl/sdl/meson.build4
-rw-r--r--tests/examples/meson.build1
39 files changed, 1337 insertions, 125 deletions
diff --git a/.gitignore b/.gitignore
index 0027838f8..8ed46cad4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,6 +43,7 @@ Makefile
*.gir
*.typelib
*.gc??
+.dirstamp
/gst-libs/gst/pbutils/gstpluginsbaseversion.h
/gst-libs/gst/tag/mklangtables
diff --git a/Makefile.am b/Makefile.am
index f5d873eaf..020e2e647 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -40,6 +40,7 @@ EXTRA_DIST = \
gst-libs/gst/rtsp/rtsp_mkenum.py \
gst-libs/gst/tag/tag_mkenum.py \
gst-libs/gst/video/video_mkenum.py \
+ gst-libs/gst/gl/gstglconfig.h.meson \
meson_options.txt
DISTCLEANFILES = _stdint.h
diff --git a/configure.ac b/configure.ac
index 6e52dbb24..7e1dbc045 100644
--- a/configure.ac
+++ b/configure.ac
@@ -295,6 +295,8 @@ GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_API_VERSION`"
AC_SUBST(GLIB_PREFIX)
AC_SUBST(GST_PREFIX)
+AG_GST_GL_CHECKS
+
dnl GTK is optional and only used in examples
HAVE_GTK=no
HAVE_GTK_X11=no
@@ -359,6 +361,9 @@ fi
AM_CONDITIONAL(HAVE_QT, test "x$HAVE_QT" = "xyes")
AM_CONDITIONAL(HAVE_QT_MOC, test "x$HAVE_QT_MOC" != "xno")
+dnl Check for OpenGL example dependencies (clutter, sdl, etc.)
+AG_GST_GL_EXAMPLES_CHECKS
+
dnl chck for linux headers needed by the joystick seek example
AC_COMPILE_IFELSE(
[
@@ -420,10 +425,12 @@ AG_GST_CHECK_GST_DEBUG_DISABLED([NO_WARNINGS="-Wno-unused"], [NO_WARNINGS=""])
dnl define an ERROR_CFLAGS Makefile variable
dnl -Wformat-nonliteral - see ext/pango/gstclockoverlay.c and http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39438
+dnl -Waggregate-return - xcb_intern_atom() returns an aggregate value
+dnl FIXME: -Wformat-nonliteral triggers in gst-libs/gst/gl/gstglcolorconvert.c (should be fixable)
AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
-Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef
- -Wwrite-strings -Wformat-nonliteral -Wformat-security
- -Winit-self -Wmissing-include-dirs -Waddress -Waggregate-return
+ -Wwrite-strings -Wformat-security
+ -Winit-self -Wmissing-include-dirs -Waddress
-Wno-multichar -Wnested-externs $NO_WARNINGS])
dnl define an ERROR_CXXFLAGS Makefile variable
@@ -657,6 +664,18 @@ dnl FIXME : add second check somehow if that is necessary
dnl AC_CHECK_LIB(cdda_paranoia, paranoia_init, : , HAVE_CDPARANOIA=no, -lcdda_interface )
dnl AC_CHECK_HEADER(cdda_paranoia.h, :, HAVE_CDPARANOIA=no)
+dnl *** gl ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_GL, true)
+AG_GST_CHECK_FEATURE(GL, [gl elements], gl, [
+ HAVE_GL="no"
+
+ if test x"$USE_OPENGL" = x"yes" -o x"$USE_GLES2" = x"yes"; then
+ HAVE_GL="yes"
+ AG_GST_GL_PLUGIN_CHECKS
+ fi
+])
+
+
dnl *** ivorbis ***
dnl AM_PATH_IVORBIS only takes two options
translit(dnm, m, l) AM_CONDITIONAL(USE_IVORBIS, true)
@@ -759,6 +778,7 @@ dnl not building plugins with external dependencies,
dnl but we still need to set the conditionals
AM_CONDITIONAL(USE_ALSA, false)
AM_CONDITIONAL(USE_CDPARANOIA, false)
+AM_CONDITIONAL(USE_GL, false)
AM_CONDITIONAL(USE_IVORBIS, false)
AM_CONDITIONAL(USE_LIBVISUAL, false)
AM_CONDITIONAL(USE_OGG, false)
@@ -890,6 +910,7 @@ sys/xvimage/Makefile
ext/Makefile
ext/alsa/Makefile
ext/cdparanoia/Makefile
+ext/gl/Makefile
ext/libvisual/Makefile
ext/ogg/Makefile
ext/opus/Makefile
@@ -902,6 +923,17 @@ gst-libs/gst/allocators/Makefile
gst-libs/gst/audio/Makefile
gst-libs/gst/app/Makefile
gst-libs/gst/fft/Makefile
+gst-libs/gst/gl/Makefile
+gst-libs/gst/gl/android/Makefile
+gst-libs/gst/gl/cocoa/Makefile
+gst-libs/gst/gl/dispmanx/Makefile
+gst-libs/gst/gl/glprototypes/Makefile
+gst-libs/gst/gl/eagl/Makefile
+gst-libs/gst/gl/egl/Makefile
+gst-libs/gst/gl/wayland/Makefile
+gst-libs/gst/gl/win32/Makefile
+gst-libs/gst/gl/x11/Makefile
+gst-libs/gst/gl/viv-fb/Makefile
gst-libs/gst/riff/Makefile
gst-libs/gst/rtp/Makefile
gst-libs/gst/rtsp/Makefile
@@ -934,6 +966,8 @@ pkgconfig/gstreamer-tag.pc
pkgconfig/gstreamer-tag-uninstalled.pc
pkgconfig/gstreamer-video.pc
pkgconfig/gstreamer-video-uninstalled.pc
+pkgconfig/gstreamer-gl.pc
+pkgconfig/gstreamer-gl-uninstalled.pc
pkgconfig/gstreamer-plugins-base.pc
pkgconfig/gstreamer-plugins-base-uninstalled.pc
tests/Makefile
@@ -946,6 +980,22 @@ tests/examples/dynamic/Makefile
tests/examples/encoding/Makefile
tests/examples/fft/Makefile
tests/examples/gio/Makefile
+tests/examples/gl/Makefile
+tests/examples/gl/generic/Makefile
+tests/examples/gl/generic/cube/Makefile
+tests/examples/gl/generic/doublecube/Makefile
+tests/examples/gl/generic/recordgraphic/Makefile
+tests/examples/gl/generic/cubeyuv/Makefile
+tests/examples/gl/qt/Makefile
+tests/examples/gl/gtk/Makefile
+tests/examples/gl/gtk/fxtest/Makefile
+tests/examples/gl/gtk/3dvideo/Makefile
+tests/examples/gl/gtk/switchvideooverlay/Makefile
+tests/examples/gl/gtk/filternovideooverlay/Makefile
+tests/examples/gl/gtk/filtervideooverlay/Makefile
+tests/examples/gl/cocoa/Makefile
+tests/examples/gl/sdl/Makefile
+tests/examples/gl/clutter/Makefile
tests/examples/overlay/Makefile
tests/examples/seek/Makefile
tests/examples/snapshot/Makefile
diff --git a/ext/Makefile.am b/ext/Makefile.am
index 59fe8e656..c70b212d6 100644
--- a/ext/Makefile.am
+++ b/ext/Makefile.am
@@ -10,6 +10,12 @@ else
CDPARANOIA_DIR=
endif
+if USE_GL
+GL_DIR=gl
+else
+GL_DIR=
+endif
+
if USE_LIBVISUAL
LIBVISUAL_DIR=libvisual
else
@@ -57,6 +63,7 @@ endif
SUBDIRS = \
$(ALSA_DIR) \
$(CDPARANOIA_DIR) \
+ $(GL_DIR) \
$(LIBVISUAL_DIR) \
$(OGG_DIR) \
$(OPUS_DIR) \
@@ -67,6 +74,7 @@ SUBDIRS = \
DIST_SUBDIRS = \
alsa \
cdparanoia \
+ gl \
libvisual \
ogg \
opus \
diff --git a/ext/gl/Makefile.am b/ext/gl/Makefile.am
index adeadbf60..0430a89d5 100644
--- a/ext/gl/Makefile.am
+++ b/ext/gl/Makefile.am
@@ -1,8 +1,17 @@
plugin_LTLIBRARIES = libgstopengl.la
+# These have to stay in -bad until we can move GstVideoAggregator to -base
+# gstglbasemixer.c
+# gstglbasemixer.h
+# gstglmixer.c
+# gstglmixer.h
+# gstglstereomix.c
+# gstglstereomix.h
+# gstglvideomixer.c
+# gstglvideomixer.h
+
libgstopengl_la_SOURCES = \
gstopengl.c \
- gstglbasemixer.c \
gstgluploadelement.c \
gstgldownloadelement.c \
gstglcolorconvertelement.c \
@@ -34,20 +43,16 @@ libgstopengl_la_SOURCES = \
effects/gstgleffectlaplacian.c \
gstglcolorscale.c \
gstglcolorbalance.c \
- gstglmixer.c \
- gstglvideomixer.c \
gstglfiltershader.c \
gstglfilterapp.c \
gstglviewconvert.c \
gstglstereosplit.c \
gstgldeinterlace.c \
- gstglstereomix.c \
gltestsrc.c \
gstgltestsrc.c \
gstglutils.c
noinst_HEADERS = \
- gstglbasemixer.h \
gstgluploadelement.h \
gstgldownloadelement.h \
gstglcolorconvertelement.h \
@@ -61,12 +66,9 @@ noinst_HEADERS = \
effects/gstgleffectssources.h \
gstglcolorscale.h \
gstglcolorbalance.h \
- gstglmixer.h \
- gstglvideomixer.h \
gstglfiltershader.h \
gstglfilterapp.h \
gstglstereosplit.h \
- gstglstereomix.h \
gstgldeinterlace.h \
gstglviewconvert.h \
gltestsrc.h \
@@ -75,13 +77,13 @@ noinst_HEADERS = \
# full opengl required
if USE_OPENGL
+# gstglmosaic.c
libgstopengl_la_SOURCES += \
- gstglfilterglass.c \
- gstglmosaic.c
+ gstglfilterglass.c
+# gstglmosaic.h
noinst_HEADERS += \
gstglfilterglass.h \
- gstglmosaic.h \
effects/gstgleffectscurves.h \
effects/gstgleffectlumatocurve.h
@@ -123,35 +125,31 @@ noinst_HEADERS += \
endif
libgstopengl_la_OBJCFLAGS = \
- -I$(top_srcdir)/gst-libs \
- -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) \
-fobjc-arc \
$(GST_OBJCFLAGS) \
$(GST_BASE_CFLAGS) \
- $(GST_PLUGINS_BASE_CFLAGS) \
$(GST_CONTROLLER_CFLAGS) \
$(GL_OBJCFLAGS)
# check order of CFLAGS and LIBS, shouldn't the order be the other way around
# (like in AM_CFLAGS)?
libgstopengl_la_CFLAGS = \
- -I$(top_srcdir)/gst-libs \
- -I$(top_builddir)/gst-libs \
- $(GST_CFLAGS) \
- $(GST_BASE_CFLAGS) \
$(GST_PLUGINS_BASE_CFLAGS) \
+ $(GST_BASE_CFLAGS) \
$(GST_CONTROLLER_CFLAGS) \
+ $(GST_CFLAGS) \
$(GL_CFLAGS) \
$(LIBPNG_CFLAGS) \
$(GRAPHENE_CFLAGS)
libgstopengl_la_LIBADD = \
- $(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_API_VERSION).la \
- $(top_builddir)/gst-libs/gst/video/libgstbadvideo-$(GST_API_VERSION).la \
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(top_builddir)/gst-libs/gst/pbutils/libgstpbutils-@GST_API_VERSION@.la \
+ $(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
$(GST_BASE_LIBS) \
- $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
- -lgstpbutils-$(GST_API_VERSION) \
$(GST_CONTROLLER_LIBS) \
+ $(GST_LIBS) \
$(GL_LIBS) \
$(LIBPNG_LIBS) \
$(JPEG_LIBS) \
diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c
index 93a1473a9..683ec0136 100644
--- a/ext/gl/gstopengl.c
+++ b/ext/gl/gstopengl.c
@@ -43,6 +43,8 @@
#include "config.h"
#endif
+#undef HAVE_VIDEO_AGGREGATOR_IN_BASE
+
#include "gstglimagesink.h"
#include "gstgluploadelement.h"
#include "gstgldownloadelement.h"
@@ -51,16 +53,20 @@
#include "gstglfilterbin.h"
#include "gstglsinkbin.h"
#include "gstglsrcbin.h"
-#include "gstglmixerbin.h"
#include "gstglfiltercube.h"
#include "gstgleffects.h"
#include "gstglcolorscale.h"
+
+#ifdef HAVE_VIDEO_AGGREGATOR_IN_BASE
+#include "gstglmixerbin.h"
#include "gstglvideomixer.h"
+#include "gstglstereomix.h"
+#endif
+
#include "gstglfiltershader.h"
#include "gstglfilterapp.h"
#include "gstglstereosplit.h"
-#include "gstglstereomix.h"
#include "gstglviewconvert.h"
#include "gstgltestsrc.h"
#include "gstgldeinterlace.h"
@@ -76,7 +82,9 @@
#if GST_GL_HAVE_OPENGL
#include "gstglfilterglass.h"
/* #include "gstglfilterreflectedscreen.h" */
+#ifdef HAVE_VIDEO_AGGREGATOR_IN_BASE
#include "gstglmosaic.h"
+#endif
#if HAVE_PNG
#include "gstgldifferencematte.h"
/* #include "gstglbumper.h" */
@@ -159,11 +167,12 @@ plugin_init (GstPlugin * plugin)
GST_RANK_NONE, GST_TYPE_GL_SRC_BIN)) {
return FALSE;
}
-
+#ifdef HAVE_VIDEO_AGGREGATOR_IN_BASE
if (!gst_element_register (plugin, "glmixerbin",
GST_RANK_NONE, GST_TYPE_GL_MIXER_BIN)) {
return FALSE;
}
+#endif
if (!gst_element_register (plugin, "glfiltercube",
GST_RANK_NONE, GST_TYPE_GL_FILTER_CUBE)) {
@@ -189,7 +198,7 @@ plugin_init (GstPlugin * plugin)
GST_RANK_NONE, GST_TYPE_GL_COLORSCALE)) {
return FALSE;
}
-
+#ifdef HAVE_VIDEO_AGGREGATOR_IN_BASE
if (!gst_element_register (plugin, "glvideomixer",
GST_RANK_NONE, gst_gl_video_mixer_bin_get_type ())) {
return FALSE;
@@ -199,6 +208,7 @@ plugin_init (GstPlugin * plugin)
GST_RANK_NONE, gst_gl_video_mixer_get_type ())) {
return FALSE;
}
+#endif
if (!gst_element_register (plugin, "glshader",
GST_RANK_NONE, gst_gl_filtershader_get_type ())) {
@@ -219,11 +229,12 @@ plugin_init (GstPlugin * plugin)
GST_RANK_NONE, GST_TYPE_GL_STEREOSPLIT)) {
return FALSE;
}
-
+#ifdef HAVE_VIDEO_AGGREGATOR_IN_BASE
if (!gst_element_register (plugin, "glstereomix",
GST_RANK_NONE, GST_TYPE_GL_STEREO_MIX)) {
return FALSE;
}
+#endif
if (!gst_element_register (plugin, "gltestsrc",
GST_RANK_NONE, GST_TYPE_GL_TEST_SRC)) {
@@ -251,10 +262,12 @@ plugin_init (GstPlugin * plugin)
return FALSE;
}
#endif
+#ifdef HAVE_VIDEO_AGGREGATOR_IN_BASE
if (!gst_element_register (plugin, "glmosaic",
GST_RANK_NONE, GST_TYPE_GL_MOSAIC)) {
return FALSE;
}
+#endif
#if HAVE_PNG
if (!gst_element_register (plugin, "gldifferencematte",
GST_RANK_NONE, gst_gl_differencematte_get_type ())) {
diff --git a/ext/gl/meson.build b/ext/gl/meson.build
index e7775cb9e..f78a346da 100644
--- a/ext/gl/meson.build
+++ b/ext/gl/meson.build
@@ -1,11 +1,15 @@
+# These have to stay in -bad until we can move GstVideoAggregator to -base
+# 'gstglbasemixer.c',
+# 'gstglmixerbin.c',
+# 'gstglmixer.c',
+# 'gstglvideomixer.c',
+# 'gstglstereomix.c',
opengl_sources = [
'gstopengl.c',
- 'gstglbasemixer.c',
'gstgluploadelement.c',
'gstgldownloadelement.c',
'gstglcolorconvertelement.c',
'gstglfilterbin.c',
- 'gstglmixerbin.c',
'gstglsinkbin.c',
'gstglsrcbin.c',
'gstglimagesink.c',
@@ -32,14 +36,11 @@ opengl_sources = [
'effects/gstgleffectlaplacian.c',
'gstglcolorscale.c',
'gstglcolorbalance.c',
- 'gstglmixer.c',
- 'gstglvideomixer.c',
'gstglfiltershader.c',
'gstglfilterapp.c',
'gstglviewconvert.c',
'gstglstereosplit.c',
'gstgldeinterlace.c',
- 'gstglstereomix.c',
'gltestsrc.c',
'gstgltestsrc.c',
'gstglutils.c'
@@ -50,9 +51,10 @@ if build_gstgl and gstgl_dep.found()
opengl_defines = []
if gl_dep.found() # have desktop GL
+ # These have to stay in -bad until we can move GstVideoAggregator to -base
+ # 'gstglmosaic.c',
opengl_sources += [
'gstglfilterglass.c',
- 'gstglmosaic.c',
]
endif
@@ -103,16 +105,16 @@ if build_gstgl and gstgl_dep.found()
endif
if egl_dep.found() and cc.has_header('libdrm/drm_fourcc.h', required : false)
- optional_deps += gstallocators_dep
+ optional_deps += allocators_dep
endif
gstopengl = library('gstopengl',
opengl_sources,
- c_args : gst_plugins_bad_args + opengl_defines,
+ c_args : gst_plugins_base_args + opengl_defines,
link_args : noseh_link_args,
include_directories : [configinc],
- dependencies : [gstgl_dep, gstbadvideo_dep, gstvideo_dep,
- gstbase_dep, gstcontroller_dep, libm] + optional_deps,
+ dependencies : [gstgl_dep, video_dep,
+ gst_base_dep, gst_controller_dep, libm] + optional_deps,
install : true,
install_dir : plugins_install_dir,
)
diff --git a/ext/meson.build b/ext/meson.build
index 2a9879a84..31c016e15 100644
--- a/ext/meson.build
+++ b/ext/meson.build
@@ -1,5 +1,6 @@
subdir('alsa')
subdir('cdparanoia')
+subdir('gl')
if cc.get_id() != 'msvc'
# libvisual has MinGW-specific headers which are not compatible with MSVC
# If we want to build this with MSVC, we must build libvisual with it too
diff --git a/gst-libs/gst/Makefile.am b/gst-libs/gst/Makefile.am
index 55fefd818..416e42f20 100644
--- a/gst-libs/gst/Makefile.am
+++ b/gst-libs/gst/Makefile.am
@@ -1,3 +1,10 @@
+if USE_OPENGL
+GL_DIR = gl
+endif
+if USE_GLES2
+GL_DIR = gl
+endif
+
SUBDIRS = \
tag \
fft \
@@ -9,7 +16,22 @@ SUBDIRS = \
pbutils \
riff \
app \
- allocators
+ allocators \
+ $(GL_DIR)
+
+DIST_SUBDIRS = \
+ tag \
+ fft \
+ audio \
+ rtp \
+ sdp \
+ rtsp \
+ video \
+ pbutils \
+ riff \
+ app \
+ allocators \
+ gl
noinst_HEADERS = gettext.h gst-i18n-app.h gst-i18n-plugin.h glib-compat-private.h
@@ -26,6 +48,8 @@ rtp: audio
sdp: rtp
+gl: video allocators
+
INDEPENDENT_SUBDIRS = \
tag audio fft video app
diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am
index 325cde9b0..cb2d8dbb6 100644
--- a/gst-libs/gst/gl/Makefile.am
+++ b/gst-libs/gst/gl/Makefile.am
@@ -80,13 +80,12 @@ noinst_HEADERS = \
libgstgl_@GST_API_VERSION@_la_LIBADD = \
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(top_builddir)/gst-libs/gst/allocators/libgstallocators-@GST_API_VERSION@.la \
$(GMODULE_NO_EXPORT_LIBS) \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstvideo-$(GST_API_VERSION) \
$(GST_BASE_LIBS) \
$(GST_LIBS) \
- $(GL_LIBS) \
- $(top_builddir)/gst-libs/gst/allocators/libgstbadallocators-@GST_API_VERSION@.la
+ $(GL_LIBS)
if HAVE_WINDOW_WIN32
SUBDIRS += win32
@@ -139,8 +138,6 @@ nodist_configexecinclude_HEADERS = $(built_sys_header_configure)
libgstgl_@GST_API_VERSION@_la_CFLAGS = \
-DGST_EXPORTS \
- -I$(top_srcdir)/gst-libs \
- -I$(top_builddir)/gst-libs \
$(GST_PLUGINS_BASE_CFLAGS) \
$(GST_BASE_CFLAGS) \
$(GST_CFLAGS) \
diff --git a/gst-libs/gst/gl/meson.build b/gst-libs/gst/gl/meson.build
index adb223621..9762a09db 100644
--- a/gst-libs/gst/gl/meson.build
+++ b/gst-libs/gst/gl/meson.build
@@ -433,7 +433,7 @@ if need_platform_egl != 'no'
glconf.set10('GST_GL_HAVE_PLATFORM_EGL', 1)
if cc.has_header('libdrm/drm_fourcc.h', required : false)
- gl_misc_deps += gstallocators_dep
+ gl_misc_deps += allocators_dep
glconf.set10('GST_GL_HAVE_DMABUF', 1)
endif
@@ -669,12 +669,12 @@ if build_gstgl
gstgl = library('gstgl-' + api_version,
gl_sources,
- c_args : gst_plugins_bad_args + gl_cpp_args,
+ c_args : gst_plugins_base_args + gl_cpp_args,
include_directories : [configinc, libsinc],
version : libversion,
soversion : soversion,
install : true,
- dependencies : [gstbase_dep, gstvideo_dep, gstbadallocators_dep, gmodule_dep,
+ dependencies : [gst_base_dep, video_dep, allocators_dep, gmodule_dep,
gl_lib_deps, gl_platform_deps, gl_winsys_deps, gl_misc_deps])
gen_sources = []
if build_gir
@@ -688,7 +688,7 @@ if build_gstgl
includes : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0'],
install : true,
extra_args : gir_init_section + ['--c-include=gst/gl/gl.h'],
- dependencies : [gst_dep, gstbase_dep, gstvideo_dep]
+ dependencies : [video_dep, gst_dep, gst_base_dep]
)
gen_sources += gl_gir
endif
@@ -697,5 +697,5 @@ if build_gstgl
gstgl_dep = declare_dependency(link_with : gstgl,
include_directories : [libsinc],
sources: gen_sources,
- dependencies : [gstbase_dep, gstvideo_dep] + gl_winsys_deps)
+ dependencies : [video_dep, gst_base_dep] + gl_winsys_deps)
endif
diff --git a/gst-libs/gst/meson.build b/gst-libs/gst/meson.build
index dad943cce..c38fe7689 100644
--- a/gst-libs/gst/meson.build
+++ b/gst-libs/gst/meson.build
@@ -9,3 +9,4 @@ subdir('pbutils')
subdir('riff')
subdir('app')
subdir('allocators')
+subdir('gl')
diff --git a/m4/gst-gl.m4 b/m4/gst-gl.m4
new file mode 100644
index 000000000..25cedb388
--- /dev/null
+++ b/m4/gst-gl.m4
@@ -0,0 +1,1087 @@
+dnl --------------------------------------------------------------------------
+dnl GStreamer OpenGL library checks (gst-libs/gst/gl)
+dnl --------------------------------------------------------------------------
+AC_DEFUN([AG_GST_GL_CHECKS],
+[
+dnl define an ERROR_OBJCFLAGS Makefile variable
+dnl FIXME: make check conditional on Apple OS?
+AG_GST_SET_ERROR_OBJCFLAGS($FATAL_WARNINGS, [
+ -Wmissing-declarations -Wredundant-decls
+ -Wwrite-strings -Wformat-nonliteral -Wformat-security
+ -Winit-self -Wmissing-include-dirs -Wno-multichar $NO_WARNINGS])
+
+AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-])
+
+AM_CONDITIONAL(HAVE_IOS, test "x$HAVE_IOS" = "xyes")
+if test "x$HAVE_IOS" = "xyes"; then
+ AC_DEFINE(HAVE_IOS, 1, [Define if building for Apple iOS])
+fi
+
+dnl *** opengl ***
+AC_ARG_ENABLE([opengl],
+ [ --enable-opengl Enable Desktop OpenGL support @<:@default=auto@:>@],
+ [case "${enableval}" in
+ yes) NEED_GL=yes ;;
+ no) NEED_GL=no ;;
+ auto) NEED_GL=auto ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-opengl]) ;;
+ esac],[NEED_GL=auto])
+
+AC_ARG_WITH([opengl-module-name],
+ AS_HELP_STRING([--with-opengl-module-name],[library module name for OpenGL (default: libGL)]))
+if test x$with_opengl_module_name != x; then
+ AC_DEFINE_UNQUOTED(GST_GL_LIBGL_MODULE_NAME, "$with_opengl_module_name", [OpenGL module name])
+fi
+
+AC_ARG_ENABLE([gles2],
+ [ --enable-gles2 Enable OpenGL|ES 2.0 support @<:@default=auto@:>@],
+ [case "${enableval}" in
+ yes) NEED_GLES2=yes ;;
+ no) NEED_GLES2=no ;;
+ auto) NEED_GLES2=auto ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-gles2]) ;;
+ esac],[NEED_GLES2=auto])
+
+AC_ARG_WITH([gles2-module-name],
+ AS_HELP_STRING([--with-gles2-module-name],[library module name for GLES2 (default: libGLESv2)]))
+if test x$with_gles2_module_name != x; then
+ AC_DEFINE_UNQUOTED(GST_GL_LIBGLESV2_MODULE_NAME, "$with_gles2_module_name", [GLES2 module name])
+fi
+
+AC_ARG_ENABLE([egl],
+ [ --enable-egl Enable EGL support @<:@default=auto@:>@],
+ [case "${enableval}" in
+ yes) NEED_EGL=yes ;;
+ no) NEED_EGL=no ;;
+ auto) NEED_EGL=auto ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-egl]) ;;
+ esac],[NEED_EGL=auto])
+
+AC_ARG_WITH([egl-module-name],
+ AS_HELP_STRING([--with-egl-module-name],[library module name for EGL (default: libEGL)]))
+if test x$with_egl_module_name != x; then
+ AC_DEFINE_UNQUOTED(GST_GL_LIBEGL_MODULE_NAME, "$with_egl_module_name", [EGL module name])
+fi
+
+AC_ARG_ENABLE([wgl],
+ [ --enable-wgl Enable WGL support @<:@default=auto@:>@],
+ [case "${enableval}" in
+ yes) NEED_WGL=yes ;;
+ no) NEED_WGL=no ;;
+ auto) NEED_WGL=auto ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-wgl]) ;;
+ esac],[NEED_WGL=auto])
+
+AC_ARG_ENABLE([glx],
+ [ --enable-glx Enable GLX support @<:@default=auto@:>@],
+ [case "${enableval}" in
+ yes) NEED_GLX=yes ;;
+ no) NEED_GLX=no ;;
+ auto) NEED_GLX=auto ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-glx]) ;;
+ esac],[NEED_GLX=auto])
+
+AC_ARG_ENABLE([cocoa],
+ [ --enable-cocoa Enable Cocoa support @<:@default=auto@:>@],
+ [case "${enableval}" in
+ yes) NEED_COCOA=yes ;;
+ no) NEED_COCOA=no ;;
+ auto) NEED_COCOA=auto ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-cocoa]) ;;
+ esac],[NEED_COCOA=auto])
+
+AC_ARG_ENABLE([x11],
+ [ --enable-x11 Enable x11 support @<:@default=auto@:>@],
+ [case "${enableval}" in
+ yes) NEED_X11=yes ;;
+ no) NEED_X11=no ;;
+ auto) NEED_X11=auto ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-x11]) ;;
+ esac],[NEED_X11=auto])
+
+AC_ARG_ENABLE([wayland],
+ [ --enable-wayland Enable Wayland support (requires EGL) @<:@default=auto@:>@],
+ [case "${enableval}" in
+ yes) NEED_WAYLAND_EGL=yes ;;
+ no) NEED_WAYLAND_EGL=no ;;
+ auto) NEED_WAYLAND_EGL=auto ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-wayland]) ;;
+ esac],[NEED_WAYLAND_EGL=auto])
+
+AC_ARG_ENABLE([dispmanx],
+ [ --enable-dispmanx Enable Dispmanx support (requires EGL) @<:@default=auto@:>@],
+ [case "${enableval}" in
+ yes) NEED_DISPMANX=yes ;;
+ no) NEED_DISPMANX=no ;;
+ auto) NEED_DISPMANX=auto ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-dispmanx]) ;;
+ esac],[NEED_DISPMANX=auto])
+
+AG_GST_PKG_CHECK_MODULES(X11_XCB, x11-xcb)
+save_CPPFLAGS="$CPPFLAGS"
+save_LIBS="$LIBS"
+
+HAVE_GL=no
+HAVE_GLES2=no
+HAVE_GLES3_H=no
+HAVE_WAYLAND_EGL=no
+HAVE_VIV_FB_EGL=no
+HAVE_EGL_RPI=no
+
+case $host in
+ *-mingw32* )
+ LIBS="$LIBS -lgdi32"
+ AG_GST_CHECK_LIBHEADER(GL, opengl32, glTexImage2D,, GL/gl.h)
+ AC_CHECK_HEADER(GL/wglext.h, HAVE_WGLEXT="yes", HAVE_WGLEXT="no", [#include <GL/gl.h>])
+ if test "x$HAVE_WGLEXT" = "xyes"; then
+ HAVE_WGL=yes
+ HAVE_GL=yes
+ fi
+ ;;
+ *)
+ if test "x$NEED_GL" != "xno"; then
+ AG_GST_PKG_CHECK_MODULES(GL, gl)
+ if test "x$HAVE_GL" != "xyes"; then
+ AG_GST_CHECK_LIBHEADER(GL, GL, glTexImage2D,, GL/gl.h)
+ fi
+ fi
+ if test "x$NEED_GLES2" != "xno"; then
+ AG_GST_PKG_CHECK_MODULES(GLES2, glesv2)
+ if test "x$HAVE_GLES2" != "xyes"; then
+ AG_GST_CHECK_LIBHEADER(GLES2, GLESv2, glTexImage2D,, GLES2/gl2.h)
+ fi
+ AC_CHECK_HEADER([GLES3/gl3.h], [HAVE_GLES3_H=yes])
+ AS_IF([test "x$HAVE_GLES3_H" == "xyes"],
+ [
+ AC_CHECK_HEADER([GLES3/gl3ext.h], [HAVE_GLES3EXT3_H=yes], [HAVE_GLES3EXT3_H=no], [#include <GLES3/gl3.h>])
+ ])
+ fi
+ if test "x$NEED_EGL" != "xno"; then
+ AG_GST_PKG_CHECK_MODULES(EGL, egl)
+ if test "x$HAVE_EGL" != "xyes"; then
+ AG_GST_CHECK_LIBHEADER(EGL, EGL, eglGetError,, EGL/egl.h)
+ fi
+ fi
+
+ old_LIBS=$LIBS
+ old_CFLAGS=$CFLAGS
+
+ dnl imx6 / Vivante specifics
+ if test "x$HAVE_EGL" = "xyes"; then
+ AC_CHECK_LIB([EGL], [fbGetDisplay], [HAVE_VIV_FB_EGL=yes])
+ fi
+
+ dnl FIXME: Mali EGL depends on GLESv1 or GLESv2
+ AC_CHECK_HEADER([EGL/fbdev_window.h],
+ [
+ LIBS="$LIBS -lUMP"
+ AC_CHECK_LIB([Mali], [mali_image_create],
+ [
+ LIBS="$LIBS -lMali"
+ AC_CHECK_LIB([GLESv2], [glEnable],
+ [
+ AC_CHECK_HEADER([GLES2/gl2.h],
+ [
+ AC_CHECK_LIB([EGL], [eglGetProcAddress],
+ [
+ AC_CHECK_HEADER([EGL/egl.h],
+ [
+ HAVE_EGL=yes
+ HAVE_GLES2=yes
+ EGL_LIBS="-lMali -lUMP"
+ EGL_CFLAGS=""
+ AC_DEFINE(USE_EGL_MALI_FB, [1], [Use Mali FB EGL platform])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ])
+
+ dnl FIXME: EGL of RPi depends on GLESv1 or GLESv2
+ dnl FIXME: GLESv2 of RPi depends on EGL... WTF!
+ LIBS="$LIBS -lvcos -lvchiq_arm"
+ AC_CHECK_LIB([bcm_host], [bcm_host_init],
+ [
+ LIBS="$LIBS -lbcm_host"
+ AC_CHECK_HEADER(bcm_host.h,
+ [
+ LIBS="$LIBS -lGLESv2"
+ AC_CHECK_LIB([EGL], [eglGetProcAddress],
+ [
+ LIBS="$LIBS -lEGL"
+ AC_CHECK_HEADER([EGL/egl.h],
+ [
+ AC_CHECK_LIB([GLESv2], [glEnable],
+ [
+ AC_CHECK_HEADER([GLES2/gl2.h],
+ [
+ HAVE_EGL=yes
+ HAVE_GLES2=yes
+ HAVE_EGL_RPI=yes
+ EGL_LIBS="-lbcm_host -lvcos -lvchiq_arm"
+ EGL_CFLAGS=""
+ AC_DEFINE(USE_EGL_RPI, [1], [Use RPi platform])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ])
+
+ LIBS=$old_LIBS
+ CFLAGS=$old_CFLAGS
+
+ PKG_CHECK_MODULES(WAYLAND_EGL, wayland-client >= 1.0 wayland-cursor >= 1.0 wayland-egl >= 9.0, HAVE_WAYLAND_EGL=yes, HAVE_WAYLAND_EGL=no)
+
+ # OS X and iOS always have GL available
+ case $host in
+ *-darwin*)
+ if test "x$HAVE_IOS" = "xyes"; then
+ HAVE_GLES2=yes
+ else
+ HAVE_GL=yes
+ fi
+ ;;
+ esac
+ ;;
+esac
+
+CPPFLAGS="$save_CPPFLAGS"
+LIBS="$save_LIBS"
+
+USE_OPENGL=no
+USE_GLES2=no
+USE_GLX=no
+USE_COCOA=no
+USE_WGL=no
+USE_X11=no
+USE_EAGL=no
+GL_LIBS=
+GL_CFLAGS=
+GL_OBJCFLAGS=
+
+dnl Check for what the user asked for and what we could find
+if test "x$HAVE_EGL" = "xno"; then
+ if test "x$NEED_EGL" = "xyes"; then
+ AC_MSG_ERROR([Could not find the required EGL libraries])
+ fi
+fi
+
+if test "x$HAVE_GL" = "xno"; then
+ if test "x$NEED_GL" = "xyes"; then
+ AC_MSG_ERROR([Could not find the required OpenGL libraries])
+ fi
+fi
+
+if test "x$HAVE_GLES2" = "xno"; then
+ if test "x$NEED_GLES2" = "xyes"; then
+ AC_MSG_ERROR([Could not find the required OpenGL|ES 2.0 libraries])
+ fi
+fi
+
+dnl X, GLX and OpenGL
+if test "x$HAVE_X11_XCB" = "xno"; then
+ if test "x$NEED_GLX" = "xyes"; then
+ AC_MSG_ERROR([Building the GLX backend without X11 is unsupported])
+ fi
+ if test "x$NEED_X11" = "xyes"; then
+ AC_MSG_ERROR([Could not find X11 development libraries])
+ fi
+else
+ if test "x$NEED_GL" != "xno"; then
+ if test "x$HAVE_GL" = "xno"; then
+ if test "x$NEED_GLX" = "xyes"; then
+ AC_MSG_ERROR([Building the GLX backend without the OpenGL backend is unsupported])
+ fi
+ else dnl HAVE_GL=yes
+ USE_OPENGL=yes
+ if test "x$NEED_GLX" != "xno"; then
+ USE_GLX=yes
+ fi
+ fi
+ fi
+fi
+
+dnl check for DMABUF support
+HAVE_DRM_FOURCC_HEADER=no
+AC_CHECK_HEADER(libdrm/drm_fourcc.h,
+ HAVE_DRM_FOURCC_HEADER=yes, )
+
+HAVE_GST_ALLOCATORS=no
+PKG_CHECK_MODULES(GST_ALLOCATORS, gstreamer-allocators-1.0,
+ HAVE_GST_ALLOCATORS=yes, )
+
+GST_GL_HAVE_DMABUF=0
+if test "x$HAVE_DRM_FOURCC_HEADER" = "xyes" -a \
+ "x$HAVE_GST_ALLOCATORS" = "xyes" -a \
+ "x$HAVE_EGL" = "xyes"; then
+ GST_GL_HAVE_DMABUF=1
+fi
+
+dnl check for Vivante DirectVIV support
+AC_CHECK_LIB(GLESv2, glTexDirectVIV, [HAVE_VIV_DIRECTVIV=yes], [HAVE_VIV_DIRECTVIV=no])
+
+GST_GL_HAVE_VIV_DIRECTVIV=0
+if test "x$HAVE_VIV_DIRECTVIV" = "xyes"; then
+ GST_GL_HAVE_VIV_DIRECTVIV=1
+fi
+
+dnl check if we can include both GL and GLES2 at the same time
+if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLES2" = "xyes"; then
+ GLES3_H_DEFINE=0
+ GLES3EXT3_H_DEFINE=0
+ if test "x$HAVE_GLES3_H" == "xyes"; then
+ GLES3_H_DEFINE=1
+ fi
+ if test "x$HAVE_GLES3EXT3_H" == "xyes"; then
+ GLES3EXT3_H_DEFINE=1
+ fi
+ GL_INCLUDES="
+#ifdef __GNUC__
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored \"-Wredundant-decls\"
+#endif
+#ifndef GL_GLEXT_PROTOTYPES
+#define GL_GLEXT_PROTOTYPES 1
+#endif
+# ifdef HAVE_IOS
+# include <OpenGLES/ES2/gl.h>
+# include <OpenGLES/ES2/glext.h>
+# else
+# if $GLES3_H_DEFINE
+# include <GLES3/gl3.h>
+# if $GLES3EXT3_H_DEFINE
+# include <GLES3/gl3ext.h>
+# endif
+# include <GLES2/gl2ext.h>
+# else
+# include <GLES2/gl2.h>
+# include <GLES2/gl2ext.h>
+# endif
+# endif
+# ifdef __APPLE__
+# include <OpenGL/OpenGL.h>
+# include <OpenGL/gl.h>
+# if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
+# define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
+# include <OpenGL/gl3.h>
+# endif
+# else
+# include <GL/gl.h>
+# if __WIN32__ || _WIN32
+# include <GL/glext.h>
+# endif
+# endif
+int main (int argc, char **argv) { return 0; }
+"
+ AC_MSG_CHECKING([whether it is possible to include both GL and GLES2 headers])
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $GL_CFLAGS $GLES2_CFLAGS $WARNING_CFLAGS $ERROR_CFLAGS"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[$GL_INCLUDES]], [[
+ #if !defined(GL_FALSE)
+ #error Failed to include GL headers
+ #endif
+ ]])],[ AC_MSG_RESULT(yes)
+ ],[AC_MSG_RESULT(no)
+ if test "x$NEED_GLES2" = "xyes"; then
+ if test "x$NEED_GL" = "xyes"; then
+ AC_MSG_ERROR([Cannot seem to include both GL and GLES2 headers. Try disabling one API])
+ fi
+ AC_MSG_WARN([Disabling Desktop GL support])
+ HAVE_GL=no
+ USE_OPENGL=no
+ else
+ AC_MSG_WARN([Disabling GL|ES 2.0 support])
+ HAVE_GLES2=no
+ HAVE_GLES3_H=no
+ fi
+ ])
+ CFLAGS="$save_CFLAGS"
+fi
+
+#dnl Check for OpenGL
+echo host is $host
+case $host in
+ *-android*)
+ if test "x$NEED_WGL" = "xyes"; then
+ AC_MSG_ERROR([WGL is not available on Android])
+ fi
+ if test "x$NEED_GLX" = "xyes"; then
+ AC_MSG_ERROR([GLX is not available on Android])
+ fi
+ if test "x$NEED_GL" = "xyes"; then
+ AC_MSG_ERROR([GL is not available on Android])
+ fi
+ if test "x$NEED_X11" = "xyes"; then
+ AC_MSG_ERROR([X11 is not available on Android])
+ fi
+ if test "x$NEED_COCOA" = "xyes"; then
+ AC_MSG_ERROR([Cocoa is not available on Android])
+ fi
+
+ dnl OpenGL|ES 2.0
+ if test "x$HAVE_GLES2" = "xyes"; then
+ if test "x$NEED_GLES2" != "xno"; then
+ GL_LIBS="$GL_LIBS -lGLESv2"
+ USE_GLES2=yes
+ fi
+ fi
+
+ dnl EGL
+ if test "x$HAVE_EGL" = "xyes"; then
+ if test "x$NEED_EGL" != "xno"; then
+ GL_LIBS="$GL_LIBS -lEGL"
+ USE_EGL=yes
+ fi
+ fi
+
+ if test "x$USE_EGL" != "xyes"; then
+ AC_MSG_ERROR([Need EGL on Android])
+ fi
+
+ if test "x$USE_GLES2" != "xyes"; then
+ AC_MSG_ERROR([Need OpenGL|ES 2.0 on Android])
+ fi
+
+ HAVE_WINDOW_ANDROID=yes
+ ;;
+ *-linux* | *-cygwin* | *-solaris* | *-netbsd* | *-freebsd* | *-openbsd* | *-kfreebsd* | *-dragonflybsd* | *-gnu* )
+ if test "x$NEED_WGL" = "xyes"; then
+ AC_MSG_ERROR([WGL is not available on unix])
+ fi
+
+ if test "x$HAVE_X11_XCB" = "xno"; then
+ if test "x$HAVE_WAYLAND_EGL" = "xno"; then
+ AC_MSG_WARN([X or Wayland is required for OpenGL support])
+ fi
+ fi
+
+ dnl check Desktop OpenGL
+ if test "x$HAVE_GL" = "xyes"; then
+ if test "x$NEED_GL" != "xno"; then
+ GL_LIBS="$GL_LIBS -lGL"
+ fi
+ fi
+
+ dnl OpenGL|ES 2.0
+ if test "x$HAVE_GLES2" = "xyes"; then
+ if test "x$NEED_GLES2" != "xno"; then
+ GL_LIBS="$GL_LIBS -lGLESv2"
+ USE_GLES2=yes
+ fi
+ fi
+
+ if test "x$HAVE_X11_XCB" = "xyes" -a "x$HAVE_EGL_RPI" = "xno"; then
+ if test "x$NEED_X11" != "xno"; then
+ GL_LIBS="$GL_LIBS $X11_XCB_LIBS"
+ GL_CFLAGS="$GL_CFLAGS $X11_XCB_CFLAGS"
+ HAVE_WINDOW_X11=yes
+ fi
+ fi
+
+ if test "x$HAVE_WAYLAND_EGL" = "xyes"; then
+ if test "x$NEED_EGL" = "xno" -o "x$HAVE_EGL" = "xno"; then
+ AC_MSG_WARN([EGL is required by the Wayland backend for OpenGL support])
+ else
+ if test "x$NEED_WAYLAND_EGL" != "xno"; then
+ HAVE_WINDOW_WAYLAND=yes
+ GL_LIBS="$GL_LIBS $WAYLAND_EGL_LIBS"
+ GL_CFLAGS="$GL_CFLAGS $WAYLAND_EGL_CFLAGS"
+ fi
+ fi
+ fi
+
+ if test "x$HAVE_VIV_FB_EGL" = "xyes"; then
+ if test "x$NEED_EGL" = "xno" -o "x$HAVE_EGL" = "xno"; then
+ AC_MSG_WARN([EGL is required by the Vivante EGL FB backend])
+ else
+ HAVE_WINDOW_VIV_FB=yes
+ GL_LIBS="$GL_LIBS"
+ GL_CFLAGS="$GL_CFLAGS"
+ fi
+ fi
+
+ if test "x$HAVE_EGL_RPI" = "xyes"; then
+ if test "x$NEED_DISPMANX" != "xno"; then
+ HAVE_WINDOW_DISPMANX=yes
+ USE_EGL=yes
+ fi
+ fi
+
+ dnl EGL
+ if test "x$HAVE_EGL" = "xno"; then
+ if test "x$HAVE_GL" = "xno"; then
+ AC_MSG_WARN([Building requires either EGL or GLX for OpenGL support])
+ fi
+ else
+ if test "x$NEED_EGL" != "xno"; then
+ if test "x$HAVE_WINDOW_WAYLAND" = "xyes" -o "x$HAVE_WINDOW_X11" = "xyes" -o "x$HAVE_WINDOW_DISPMANX" = "xyes" -o "x$HAVE_WINDOW_VIV_FB" = "xyes"; then
+ GL_LIBS="$GL_LIBS -lEGL $EGL_LIBS"
+ GL_CFLAGS="$GL_CFLAGS $EGL_CFLAGS"
+ USE_EGL=yes
+ fi
+ fi
+ fi
+ ;;
+ *-darwin*)
+ if test "x$HAVE_IOS" = "xyes"; then
+ if test "x$NEED_WGL" = "xyes"; then
+ AC_MSG_ERROR([WGL is not available on iOS])
+ fi
+ if test "x$NEED_GLX" = "xyes"; then
+ AC_MSG_ERROR([GLX is not available on iOS])
+ fi
+ if test "x$NEED_GL" = "xyes"; then
+ AC_MSG_ERROR([GL is not available on iOS])
+ fi
+ if test "x$NEED_X11" = "xyes"; then
+ AC_MSG_ERROR([X11 is not available on iOS])
+ fi
+ if test "x$NEED_COCOA" = "xyes"; then
+ AC_MSG_ERROR([Cocoa is not available on iOS])
+ fi
+ if test "x$NEED_EGL" = "xyes"; then
+ AC_MSG_ERROR([EGL is not available on iOS])
+ fi
+
+ GL_LIBS="$LIBS -framework OpenGLES -framework QuartzCore -framework UIKit -framework CoreGraphics -framework CoreFoundation -framework Foundation"
+ GL_CFLAGS="$GL_CFLAGS"
+ USE_GLES2=yes
+ USE_EAGL=yes
+ HAVE_WINDOW_EAGL=yes
+
+ ac_cv_type_GLsizeiptr=yes
+ ac_cv_type_GLintptr=yes
+ ac_cv_type_GLchar=yes
+ else
+ dnl Only osx supports cocoa.
+ if test "x$NEED_WGL" = "xyes"; then
+ AC_MSG_ERROR([WGL is not available on Mac OS X])
+ fi
+
+ if test "x$NEED_COCOA" != "xno"; then
+ GL_LIBS="$LIBS -framework OpenGL -framework Cocoa -framework QuartzCore -framework CoreFoundation"
+ GL_CFLAGS="$GL_CFLAGS"
+ USE_COCOA=yes
+ HAVE_WINDOW_COCOA=yes
+ USE_OPENGL=yes
+ fi
+
+ if test "x$USE_GLX" = "xyes"; then
+ if test "x$HAVE_X11_XCB" = "xyes"; then
+ if test "x$NEED_X11" != "xno"; then
+ GL_LIBS="$GL_LIBS $X11_XCB_LIBS"
+ GL_CFLAGS="$GL_CFLAGS $X11_XCB_CFLAGS"
+ HAVE_WINDOW_X11=yes
+ fi
+ fi
+
+ if test "x$HAVE_GL" = "xyes"; then
+ if test "x$NEED_GL" != "xno"; then
+ GL_LIBS="$GL_LIBS -lGL"
+ fi
+ USE_OPENGL=yes
+ fi
+ fi
+
+ if test "x$HAVE_EGL" = "xyes"; then
+ if test "x$NEED_EGL" != "xno"; then
+ if test "x$HAVE_WINDOW_X11" = "xyes"; then
+ GL_LIBS="$GL_LIBS -lEGL $EGL_LIBS"
+ GL_CFLAGS="$GL_CFLAGS $EGL_CFLAGS"
+ USE_EGL=yes
+ fi
+ fi
+ fi
+
+ dnl OpenGL|ES 2.0
+ if test "x$HAVE_GLES2" = "xyes"; then
+ if test "x$NEED_GLES2" != "xno"; then
+ GL_LIBS="$GL_LIBS -lGLESv2"
+ USE_GLES2=yes
+ fi
+ fi
+ fi
+ ;;
+ *-mingw32*)
+ if test "x$NEED_GLX" = "xyes"; then
+ AC_MSG_ERROR([GLX is not available on Windows])
+ fi
+ if test "x$NEED_GLES2" = "xyes"; then
+ AC_MSG_ERROR([OpenGL|ES 2.0 is not supported on your platform yet])
+ fi
+
+ if test "x$HAVE_GL" = "xyes"; then
+ if test "x$NEED_GL" != "xno"; then
+ if test "x$HAVE_WGL" = "xyes"; then
+ if test "$NEED_WGL" != "xno"; then
+ GL_LIBS="$GL_LIBS -lgdi32 -lopengl32"
+ HAVE_WINDOW_WIN32=yes
+ USE_OPENGL=yes
+ USE_WGL=yes
+ fi
+ fi
+ fi
+ fi
+ ;;
+ *)
+ AC_MSG_WARN([Don't know how to check for OpenGL on your platform.])
+ ;;
+esac
+
+GL_PLATFORMS=
+GL_WINDOWS=
+GL_APIS=
+GL_CONFIG_DEFINES=
+
+dnl APIs
+
+GST_GL_HAVE_OPENGL=0
+GST_GL_HAVE_GLES2=0
+GST_GL_HAVE_GLES3=0
+GST_GL_HAVE_GLES3EXT3_H=0
+
+if test "x$USE_OPENGL" = "xyes"; then
+ GL_APIS="gl $GL_APIS"
+ GST_GL_HAVE_OPENGL=1
+fi
+if test "x$USE_GLES2" = "xyes"; then
+ GL_APIS="gles2 $GL_APIS"
+ GST_GL_HAVE_GLES2=1
+ if test "x$HAVE_GLES3_H" = "xyes"; then
+ GST_GL_HAVE_GLES3=1
+ if test "x$HAVE_GLES3EXT3_H" = "xyes"; then
+ GST_GL_HAVE_GLES3EXT3_H=1
+ fi
+ fi
+fi
+
+GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_OPENGL $GST_GL_HAVE_OPENGL
+#define GST_GL_HAVE_GLES2 $GST_GL_HAVE_GLES2
+#define GST_GL_HAVE_GLES3 $GST_GL_HAVE_GLES3
+#define GST_GL_HAVE_GLES3EXT3_H $GST_GL_HAVE_GLES3EXT3_H
+"
+
+dnl WINDOW's
+
+GST_GL_HAVE_WINDOW_X11=0
+GST_GL_HAVE_WINDOW_COCOA=0
+GST_GL_HAVE_WINDOW_WIN32=0
+GST_GL_HAVE_WINDOW_WAYLAND=0
+GST_GL_HAVE_WINDOW_ANDROID=0
+GST_GL_HAVE_WINDOW_DISPMANX=0
+GST_GL_HAVE_WINDOW_EAGL=0
+GST_GL_HAVE_WINDOW_VIV_FB=0
+
+if test "x$HAVE_WINDOW_X11" = "xyes"; then
+ GL_WINDOWS="x11 $GL_WINDOWS"
+ GST_GL_HAVE_WINDOW_X11=1
+fi
+if test "x$HAVE_WINDOW_COCOA" = "xyes"; then
+ GL_WINDOWS="cocoa $GL_WINDOWS"
+ GST_GL_HAVE_WINDOW_COCOA=1
+fi
+if test "x$HAVE_WINDOW_WIN32" = "xyes"; then
+ GL_WINDOWS="win32 $GL_WINDOWS"
+ GST_GL_HAVE_WINDOW_WIN32=1
+fi
+if test "x$HAVE_WINDOW_WAYLAND" = "xyes"; then
+ GL_WINDOWS="wayland $GL_WINDOWS"
+ GST_GL_HAVE_WINDOW_WAYLAND=1
+fi
+if test "x$HAVE_WINDOW_ANDROID" = "xyes"; then
+ GL_WINDOWS="android $GL_WINDOWS"
+ GST_GL_HAVE_WINDOW_ANDROID=1
+fi
+if test "x$HAVE_WINDOW_DISPMANX" = "xyes"; then
+ GL_WINDOWS="dispmanx $GL_WINDOWS"
+ GST_GL_HAVE_WINDOW_DISPMANX=1
+fi
+if test "x$HAVE_WINDOW_EAGL" = "xyes"; then
+ GL_WINDOWS="eagl $GL_WINDOWS"
+ GST_GL_HAVE_WINDOW_EAGL=1
+fi
+if test "x$HAVE_WINDOW_VIV_FB" = "xyes"; then
+ GL_WINDOWS="viv-fb $GL_WINDOWS"
+ GST_GL_HAVE_WINDOW_VIV_FB=1
+fi
+
+GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_WINDOW_X11 $GST_GL_HAVE_WINDOW_X11
+#define GST_GL_HAVE_WINDOW_COCOA $GST_GL_HAVE_WINDOW_COCOA
+#define GST_GL_HAVE_WINDOW_WIN32 $GST_GL_HAVE_WINDOW_WIN32
+#define GST_GL_HAVE_WINDOW_WAYLAND $GST_GL_HAVE_WINDOW_WAYLAND
+#define GST_GL_HAVE_WINDOW_ANDROID $GST_GL_HAVE_WINDOW_ANDROID
+#define GST_GL_HAVE_WINDOW_DISPMANX $GST_GL_HAVE_WINDOW_DISPMANX
+#define GST_GL_HAVE_WINDOW_EAGL $GST_GL_HAVE_WINDOW_EAGL
+#define GST_GL_HAVE_WINDOW_VIV_FB $GST_GL_HAVE_WINDOW_VIV_FB
+"
+
+dnl PLATFORM's
+
+GST_GL_HAVE_PLATFORM_EGL=0
+GST_GL_HAVE_PLATFORM_GLX=0
+GST_GL_HAVE_PLATFORM_WGL=0
+GST_GL_HAVE_PLATFORM_CGL=0
+GST_GL_HAVE_PLATFORM_EAGL=0
+
+if test "x$USE_EGL" = "xyes"; then
+ GL_PLATFORMS="egl $GL_PLATFORMS"
+ GST_GL_HAVE_PLATFORM_EGL=1
+fi
+if test "x$USE_GLX" = "xyes"; then
+ GL_PLATFORMS="glx $GL_PLATFORMS"
+ GST_GL_HAVE_PLATFORM_GLX=1
+fi
+if test "x$USE_WGL" = "xyes"; then
+ GL_PLATFORMS="wgl $GL_PLATFORMS"
+ GST_GL_HAVE_PLATFORM_WGL=1
+fi
+if test "x$USE_COCOA" = "xyes"; then
+ GL_PLATFORMS="cgl $GL_PLATFORMS"
+ GST_GL_HAVE_PLATFORM_CGL=1
+fi
+if test "x$USE_EAGL" = "xyes"; then
+ GL_PLATFORMS="eagl $GL_PLATFORMS"
+ GST_GL_HAVE_PLATFORM_EAGL=1
+fi
+
+GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_PLATFORM_EGL $GST_GL_HAVE_PLATFORM_EGL
+#define GST_GL_HAVE_PLATFORM_GLX $GST_GL_HAVE_PLATFORM_GLX
+#define GST_GL_HAVE_PLATFORM_WGL $GST_GL_HAVE_PLATFORM_WGL
+#define GST_GL_HAVE_PLATFORM_CGL $GST_GL_HAVE_PLATFORM_CGL
+#define GST_GL_HAVE_PLATFORM_EAGL $GST_GL_HAVE_PLATFORM_EAGL
+"
+
+GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_DMABUF $GST_GL_HAVE_DMABUF
+#define GST_GL_HAVE_VIV_DIRECTVIV $GST_GL_HAVE_VIV_DIRECTVIV
+"
+
+dnl Check for no platforms/window systems
+if test "x$GL_APIS" = "x"; then
+ AC_MSG_WARN([Either OpenGL or OpenGL|ES is required for OpenGL support])
+fi
+if test "x$GL_PLATFORMS" = "x"; then
+ AC_MSG_WARN([Could not find any OpenGL platforms to use such as CGL, WGL or GLX])
+fi
+if test "x$GL_WINDOWS" = "x"; then
+ AC_MSG_WARN([Could not find any window systems to use such as Cocoa, Win32API or X11])
+fi
+
+if test "x$GL_APIS" = "x" -o "x$GL_PLATFORMS" = "x" -o "x$GL_WINDOWS" = "x"; then
+ GL_LIBS=
+ GL_CFLAGS=
+ GL_OBJCFLAGS=
+ USE_OPENGL=no
+ USE_GLES2=no
+ USE_GLX=no
+ USE_EGL=no
+ USE_WGL=no
+ USE_COCOA=no
+ USE_EGL_MALI=no
+ USE_EGL_RPI=no
+ USE_EAGL=no
+
+ HAVE_WINDOW_X11=no
+ HAVE_WINDOW_WIN32=no
+ HAVE_WINDOW_DISPMANX=no
+ HAVE_WINDOW_WAYLAND=no
+ HAVE_WINDOW_ANDROID=no
+ HAVE_WINDOW_COCOA=no
+ HAVE_WINDOW_EAGL=no
+ HAVE_WINDOW_VIV_FB=no
+fi
+
+AC_SUBST(GL_APIS)
+AC_SUBST(GL_PLATFORMS)
+AC_SUBST(GL_WINDOWS)
+AC_SUBST(GL_LIBS)
+AC_SUBST(GL_CFLAGS)
+AC_SUBST(GL_OBJCFLAGS)
+AC_SUBST(USE_OPENGL)
+AC_SUBST(USE_GLES2)
+
+AM_CONDITIONAL(HAVE_WINDOW_X11, test "x$HAVE_WINDOW_X11" = "xyes")
+AM_CONDITIONAL(HAVE_WINDOW_COCOA, test "x$HAVE_WINDOW_COCOA" = "xyes")
+AM_CONDITIONAL(HAVE_WINDOW_WIN32, test "x$HAVE_WINDOW_WIN32" = "xyes")
+AM_CONDITIONAL(HAVE_WINDOW_DISPMANX, test "x$HAVE_WINDOW_DISPMANX" = "xyes")
+AM_CONDITIONAL(HAVE_WINDOW_WAYLAND, test "x$HAVE_WINDOW_WAYLAND" = "xyes")
+AM_CONDITIONAL(HAVE_WINDOW_ANDROID, test "x$HAVE_WINDOW_ANDROID" = "xyes")
+AM_CONDITIONAL(HAVE_WINDOW_EAGL, test "x$HAVE_WINDOW_EAGL" = "xyes")
+AM_CONDITIONAL(HAVE_WINDOW_VIV_FB, test "x$HAVE_WINDOW_VIV_FB" = "xyes")
+
+AM_CONDITIONAL(USE_OPENGL, test "x$USE_OPENGL" = "xyes")
+AM_CONDITIONAL(USE_GLES2, test "x$USE_GLES2" = "xyes")
+AM_CONDITIONAL(USE_GLX, test "x$USE_GLX" = "xyes")
+AM_CONDITIONAL(USE_EGL, test "x$USE_EGL" = "xyes")
+AM_CONDITIONAL(USE_WGL, test "x$USE_WGL" = "xyes")
+AM_CONDITIONAL(USE_COCOA, test "x$USE_COCOA" = "xyes")
+AM_CONDITIONAL(USE_EGL_MALI, test "x$USE_EGL_MALI" = "xyes")
+AM_CONDITIONAL(USE_EGL_RPI, test "x$USE_EGL_RPI" = "xyes")
+AM_CONDITIONAL(USE_EAGL, test "x$USE_EAGL" = "xyes")
+
+AM_CONDITIONAL(HAVE_GST_GL, test "x$USE_OPENGL" = "xyes" -o "x$USE_GLES2" = "xyes")
+
+dnl Check for some types that are not always present
+GL_INCLUDES=""
+if test "x$USE_GLES2" = "xyes"; then
+ GL_INCLUDES="$GL_INCLUDES
+#ifndef GL_GLEXT_PROTOTYPES
+#define GL_GLEXT_PROTOTYPES 1
+#endif
+# ifdef HAVE_IOS
+# include <OpenGLES/ES2/gl.h>
+# include <OpenGLES/ES2/glext.h>
+# else
+# if $GST_GL_HAVE_GLES3
+# include <GLES3/gl3.h>
+# if $GST_GL_HAVE_GLES3EXT3_H
+# include <GLES3/gl3ext.h>
+# endif
+# include <GLES2/gl2ext.h>
+# else
+# include <GLES2/gl2.h>
+# include <GLES2/gl2ext.h>
+# endif
+# endif
+"
+fi
+
+if test "x$USE_OPENGL" = "xyes"; then
+ GL_INCLUDES="$GL_INCLUDES
+# ifdef __APPLE__
+# include <OpenGL/OpenGL.h>
+# include <OpenGL/gl.h>
+# else
+# include <GL/gl.h>
+# if __WIN32__ || _WIN32
+# include <GL/glext.h>
+# endif
+# endif
+"
+fi
+
+GST_GL_HAVE_GLEGLIMAGEOES=0
+GST_GL_HAVE_GLCHAR=0
+GST_GL_HAVE_GLSIZEIPTR=0
+GST_GL_HAVE_GLINTPTR=0
+GST_GL_HAVE_GLSYNC=0
+GST_GL_HAVE_GLUINT64=0
+GST_GL_HAVE_GLINT64=0
+GST_GL_HAVE_EGLATTRIB=0
+
+old_CFLAGS=$CFLAGS
+CFLAGS="$GL_CFLAGS $CFLAGS"
+
+AC_CHECK_TYPES(GLeglImageOES, [], [], [[$GL_INCLUDES]])
+if test "x$ac_cv_type_GLeglImageOES" = "xyes"; then
+ GST_GL_HAVE_GLEGLIMAGEOES=1
+fi
+
+AC_CHECK_TYPES(GLchar, [], [], [[$GL_INCLUDES]])
+if test "x$ac_cv_type_GLchar" = "xyes"; then
+ GST_GL_HAVE_GLCHAR=1
+fi
+
+AC_CHECK_TYPES(GLsizeiptr, [], [], [[$GL_INCLUDES]])
+if test "x$ac_cv_type_GLsizeiptr" = "xyes"; then
+ GST_GL_HAVE_GLSIZEIPTR=1
+fi
+
+AC_CHECK_TYPES(GLintptr, [], [], [[$GL_INCLUDES]])
+if test "x$ac_cv_type_GLintptr" = "xyes"; then
+ GST_GL_HAVE_GLINTPTR=1
+fi
+
+AC_CHECK_TYPES(GLsync, [], [], [[$GL_INCLUDES]])
+if test "x$ac_cv_type_GLsync" = "xyes"; then
+ GST_GL_HAVE_GLSYNC=1
+fi
+
+AC_CHECK_TYPES(GLuint64, [], [], [[$GL_INCLUDES]])
+if test "x$ac_cv_type_GLuint64" = "xyes"; then
+ GST_GL_HAVE_GLUINT64=1
+fi
+
+AC_CHECK_TYPES(GLint64, [], [], [[$GL_INCLUDES]])
+if test "x$ac_cv_type_GLint64" = "xyes"; then
+ GST_GL_HAVE_GLINT64=1
+fi
+
+if test "x$USE_EGL" = "xyes"; then
+ EGL_INCLUDES="$GL_INCLUDES
+ #include <EGL/egl.h>
+ #include <EGL/eglext.h>
+ "
+ AC_CHECK_TYPES(EGLAttrib, [], [], [[$EGL_INCLUDES]])
+ if test "x$ac_cv_type_EGLAttrib" = "xyes"; then
+ GST_GL_HAVE_EGLATTRIB=1
+ fi
+fi
+
+CFLAGS=$old_CFLAGS
+
+GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_GLEGLIMAGEOES $GST_GL_HAVE_GLEGLIMAGEOES
+#define GST_GL_HAVE_GLCHAR $GST_GL_HAVE_GLCHAR
+#define GST_GL_HAVE_GLSIZEIPTR $GST_GL_HAVE_GLSIZEIPTR
+#define GST_GL_HAVE_GLINTPTR $GST_GL_HAVE_GLINTPTR
+#define GST_GL_HAVE_GLSYNC $GST_GL_HAVE_GLSYNC
+#define GST_GL_HAVE_GLUINT64 $GST_GL_HAVE_GLUINT64
+#define GST_GL_HAVE_GLINT64 $GST_GL_HAVE_GLINT64
+#define GST_GL_HAVE_EGLATTRIB $GST_GL_HAVE_EGLATTRIB
+"
+
+AC_CONFIG_COMMANDS([gst-libs/gst/gl/gstglconfig.h], [
+ outfile=gstglconfig.h-tmp
+ cat > $outfile <<\_______EOF
+/* gstglconfig.h
+ *
+ * This is a generated file. Please modify `configure.ac'
+ */
+
+#ifndef __GST_GL_CONFIG_H__
+#define __GST_GL_CONFIG_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+_______EOF
+
+ cat >>$outfile <<_______EOF
+$gl_config_defines
+_______EOF
+
+ cat >>$outfile <<_______EOF
+
+G_END_DECLS
+
+#endif /* __GST_GL_CONFIG_H__ */
+_______EOF
+
+
+ if cmp -s $outfile gst-libs/gst/gl/gstglconfig.h; then
+ AC_MSG_NOTICE([gst-libs/gst/gl/gstglconfig.h is unchanged])
+ rm -f $outfile
+ else
+ mv $outfile gst-libs/gst/gl/gstglconfig.h
+ fi
+],[
+gl_config_defines='$GL_CONFIG_DEFINES'
+])
+
+])
+
+dnl --------------------------------------------------------------------------
+dnl GStreamer OpenGL plugin-related checks (ext/opengl)
+dnl --------------------------------------------------------------------------
+dnl FIXME: make these checks conditional to the opengl plugin being enabled
+
+AC_DEFUN([AG_GST_GL_PLUGIN_CHECKS],
+[
+
+dnl graphene-1.0 is optional and used in gltransformation
+HAVE_GRAPHENE=NO
+PKG_CHECK_MODULES(GRAPHENE, graphene-1.0 >= 1.4.0, HAVE_GRAPHENE=yes, HAVE_GRAPHENE=no)
+if test "x$HAVE_GRAPHENE" = "xyes"; then
+ AC_DEFINE(HAVE_GRAPHENE, [1] , [Use graphene])
+fi
+AC_SUBST(HAVE_GRAPHENE)
+AC_SUBST(GRAPHENE_LIBS)
+AC_SUBST(GRAPHENE_CFLAGS)
+AM_CONDITIONAL(HAVE_GRAPHENE, test "x$HAVE_GRAPHENE" = "xyes")
+
+dnl Needed by plugins that use g_module_*() API
+dnl FIXME: probably not needed because AG_GST_CHECK_GLIB already includes it?
+PKG_CHECK_MODULES(GMODULE_NO_EXPORT, gmodule-no-export-2.0)
+
+dnl libpng is optional
+PKG_CHECK_MODULES(LIBPNG, libpng >= 1.0, HAVE_PNG=yes, HAVE_PNG=no)
+if test "x$HAVE_PNG" = "xyes"; then
+ AC_DEFINE(HAVE_PNG, [1] , [Use libpng])
+fi
+AC_SUBST(HAVE_PNG)
+AC_SUBST(LIBPNG_LIBS)
+AC_SUBST(LIBPNG_CFLAGS)
+AM_CONDITIONAL(HAVE_PNG, test "x$HAVE_PNG" = "xyes")
+
+dnl libjpeg is optional
+AC_ARG_WITH(jpeg-mmx, [ --with-jpeg-mmx, path to MMX'ified JPEG library])
+OLD_LIBS="$LIBS"
+if test x$with_jpeg_mmx != x; then
+ LIBS="$LIBS -L$with_jpeg_mmx"
+fi
+AC_CHECK_LIB(jpeg-mmx, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
+JPEG_LIBS="$LIBS -ljpeg-mmx"
+LIBS="$OLD_LIBS"
+if test x$HAVE_JPEG != xyes; then
+ JPEG_LIBS="-ljpeg"
+ AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
+fi
+
+if test x$HAVE_JPEG = xyes; then
+ AC_DEFINE(HAVE_JPEG, [1], [Use libjpeg])
+else
+ AC_DEFINE(HAVE_JPEG, [0], [Use libjpeg])
+ JPEG_LIBS=
+fi
+AC_SUBST(JPEG_LIBS)
+AC_SUBST(HAVE_JPEG)
+AM_CONDITIONAL(HAVE_JPEG, test "x$HAVE_JPEG" = "xyes")
+])
+
+dnl --------------------------------------------------------------------------
+dnl GStreamer OpenGL examples-related checks (tests/examples/gl)
+dnl --------------------------------------------------------------------------
+
+AC_DEFUN([AG_GST_GL_EXAMPLES_CHECKS],
+[
+
+dnl clutter is optional and used in examples
+HAVE_CLUTTER=no
+HAVE_CLUTTER_X11=no
+HAVE_CLUTTER_GLX=no
+if test "x$BUILD_EXAMPLES" = "xyes"; then
+ PKG_CHECK_MODULES(CLUTTER, clutter-1.0 >= 1.8, HAVE_CLUTTER=yes, HAVE_CLUTTER=no)
+ AC_SUBST(CLUTTER_LIBS)
+ AC_SUBST(CLUTTER_CFLAGS)
+ AC_SUBST(HAVE_CLUTTER)
+
+ PKG_CHECK_MODULES(CLUTTER_GLX, clutter-glx-1.0 >= 1.8, HAVE_CLUTTER_GLX=yes, HAVE_CLUTTER_GLX=no)
+ AC_SUBST(CLUTTER_GLX_LIBS)
+ AC_SUBST(CLUTTER_GLX_CFLAGS)
+ AC_SUBST(HAVE_CLUTTER_GLX)
+
+ PKG_CHECK_MODULES(CLUTTER_X11, clutter-x11-1.0 >= 1.8, HAVE_CLUTTER_X11=yes, HAVE_CLUTTER_X11=no)
+ AC_SUBST(CLUTTER_X11_LIBS)
+ AC_SUBST(CLUTTER_X11_CFLAGS)
+ AC_SUBST(HAVE_CLUTTER_X11)
+fi
+AM_CONDITIONAL(HAVE_CLUTTER, test "x$HAVE_CLUTTER" = "xyes")
+AM_CONDITIONAL(HAVE_CLUTTER_GLX, test "x$HAVE_CLUTTER_GLX" = "xyes")
+AM_CONDITIONAL(HAVE_CLUTTER_X11, test "x$HAVE_CLUTTER_X11" = "xyes")
+
+dnl used in the gl/clutteractor example
+if test "x$BUILD_EXAMPLES" = "xyes"; then
+ PKG_CHECK_MODULES(XCOMPOSITE, xcomposite, HAVE_XCOMPOSITE=yes, HAVE_XCOMPOSITE=no)
+ AC_SUBST(XCOMPOSITE_CFLAGS)
+ AC_SUBST(XCOMPOSITE_LIBS)
+fi
+AM_CONDITIONAL(HAVE_XCOMPOSITE, test "x$HAVE_XCOMPOSITE" = "xyes")
+
+dnl sdl is optional and used in examples
+HAVE_SDL=NO
+if test "x$BUILD_EXAMPLES" = "xyes"; then
+ PKG_CHECK_MODULES(SDL, sdl >= 1.2.0, HAVE_SDL=yes, HAVE_SDL=no)
+ AC_SUBST(SDL_LIBS)
+ AC_SUBST(SDL_CFLAGS)
+ AC_SUBST(SDL_CLUTTER)
+fi
+AM_CONDITIONAL(HAVE_SDL, test "x$HAVE_SDL" = "xyes")
+
+])
diff --git a/meson_options.txt b/meson_options.txt
index 90cecd6b5..6bdda4cfd 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -9,3 +9,10 @@ option('with-package-name', type : 'string',
description : 'package name to use in plugins')
option('with-package-origin', type : 'string', value : 'Unknown package origin',
description : 'package origin URL to use in plugins')
+option('with_gl_api', type : 'string', value : 'auto', description : 'A comma separated list of opengl APIs to enable building against. Supported values are opengl and gles2.')
+option('with_gl_platform', type : 'string', value : 'auto', description : 'A comma separated list of opengl platforms to enable building against. Supported values are glx, egl, cgl, wgl and eagl')
+option('with_gl_winsys', type : 'string', value : 'auto', description : 'A comma separated list of opengl windows systems to enable building against. Supported values are x11, wayland, win32, cocoa, and dispmanx')
+option('with_egl_module_name', type : 'string', value : '', description : 'The file to pass to g_module_open to open the libEGL.so library (default: libEGL.so)')
+option('with_opengl_module_name', type : 'string', value : '', description : 'The file to pass to g_module_open to open the libGL.so library (default: libGL.so)')
+option('with_gles2_module_name', type : 'string', value : '', description : 'The file to pass to g_module_open to open the libGLESv2.so library (default: libGLESv2.so)')
+
diff --git a/pkgconfig/Makefile.am b/pkgconfig/Makefile.am
index 7fa2365cd..804a8fde1 100644
--- a/pkgconfig/Makefile.am
+++ b/pkgconfig/Makefile.am
@@ -11,6 +11,7 @@ pcverfiles = \
gstreamer-sdp-@GST_API_VERSION@.pc \
gstreamer-tag-@GST_API_VERSION@.pc \
gstreamer-video-@GST_API_VERSION@.pc \
+ gstreamer-gl-@GST_API_VERSION@.pc \
gstreamer-plugins-base-@GST_API_VERSION@.pc
pcverfiles_uninstalled = \
gstreamer-allocators-@GST_API_VERSION@-uninstalled.pc \
@@ -24,6 +25,7 @@ pcverfiles_uninstalled = \
gstreamer-sdp-@GST_API_VERSION@-uninstalled.pc \
gstreamer-tag-@GST_API_VERSION@-uninstalled.pc \
gstreamer-video-@GST_API_VERSION@-uninstalled.pc \
+ gstreamer-gl-@GST_API_VERSION@-uninstalled.pc \
gstreamer-plugins-base-@GST_API_VERSION@-uninstalled.pc
all-local: $(pcverfiles) $(pcverfiles_uninstalled)
@@ -50,6 +52,7 @@ cp_verbose_0 = @echo " CP $@";
-e "s|[@]sdplibdir[@]|$(abs_top_builddir)/gst-libs/gst/sdp/.libs|" \
-e "s|[@]taglibdir[@]|$(abs_top_builddir)/gst-libs/gst/tag/.libs|" \
-e "s|[@]videolibdir[@]|$(abs_top_builddir)/gst-libs/gst/video/.libs|" \
+ -e "s|[@]gllibdir[@]|$(abs_top_builddir)/gst-libs/gst/gl/.libs|" \
$< > $@.tmp && mv $@.tmp $@
pkgconfigdir = $(libdir)/pkgconfig
@@ -68,6 +71,7 @@ pcinfiles = \
gstreamer-sdp.pc.in gstreamer-sdp-uninstalled.pc.in \
gstreamer-tag.pc.in gstreamer-tag-uninstalled.pc.in \
gstreamer-video.pc.in gstreamer-video-uninstalled.pc.in \
+ gstreamer-gl.pc.in gstreamer-gl-uninstalled.pc.in \
gstreamer-plugins-base.pc.in gstreamer-plugins-base-uninstalled.pc.in
DISTCLEANFILES = $(pcinfiles:.in=)
diff --git a/pkgconfig/gstreamer-gl-uninstalled.pc.in b/pkgconfig/gstreamer-gl-uninstalled.pc.in
index a426eb4d8..69e37e3de 100644
--- a/pkgconfig/gstreamer-gl-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-gl-uninstalled.pc.in
@@ -11,7 +11,7 @@ gl_apis=@GL_APIS@
Name: GStreamer OpenGL Plugins Libraries, Uninstalled
Description: Streaming media framework, OpenGL plugins libraries, uninstalled
Version: @VERSION@
-Requires: gstreamer-base-@GST_API_VERSION@ gstreamer-@GST_API_VERSION@
+Requires: gstreamer-video-@GST_API_VERSION@ gstreamer-base-@GST_API_VERSION@ gstreamer-@GST_API_VERSION@
Libs: -L${libdir} -lgstgl-@GST_API_VERSION@
Cflags: -I@abs_top_srcdir@/gst-libs -I@abs_top_builddir@/gst-libs @GL_CFLAGS@
diff --git a/pkgconfig/gstreamer-gl.pc.in b/pkgconfig/gstreamer-gl.pc.in
index 8e7a3039d..dc672a97b 100644
--- a/pkgconfig/gstreamer-gl.pc.in
+++ b/pkgconfig/gstreamer-gl.pc.in
@@ -10,7 +10,7 @@ gl_apis=@GL_APIS@
Name: GStreamer OpenGL Plugins Libraries
Description: Streaming media framework, OpenGL plugins libraries
Version: @VERSION@
-Requires: gstreamer-base-@GST_API_VERSION@ gstreamer-@GST_API_VERSION@
+Requires: gstreamer-video-@GST_API_VERSION@ gstreamer-base-@GST_API_VERSION@ gstreamer-@GST_API_VERSION@
Libs: -L${libdir} -lgstgl-@GST_API_VERSION@
Cflags: -I${includedir} -I${libdir}/gstreamer-@GST_API_VERSION@/include @GL_CFLAGS@
diff --git a/pkgconfig/gstreamer-plugins-base-uninstalled.pc.in b/pkgconfig/gstreamer-plugins-base-uninstalled.pc.in
index d9ff53605..34c61814b 100644
--- a/pkgconfig/gstreamer-plugins-base-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-plugins-base-uninstalled.pc.in
@@ -10,7 +10,7 @@ Name: GStreamer Base Plugins Libraries, Uninstalled
Description: Streaming media framework, base plugins libraries, uninstalled
Version: @VERSION@
Requires: gstreamer-@GST_API_VERSION@
-Libs: -L@allocatorslibdir@ -L@applibdir@ -L@audiolibdir@ -L@fftlibdir@ -L@pbutilslibdir@ -L@rifflibdir@ -L@rtplibdir@ -L@rtsplibdir@ -L@sdplibdir@ -L@taglibdir@ -L@videolibdir@
+Libs: -L@allocatorslibdir@ -L@applibdir@ -L@audiolibdir@ -L@fftlibdir@ -L@pbutilslibdir@ -L@rifflibdir@ -L@rtplibdir@ -L@rtsplibdir@ -L@sdplibdir@ -L@taglibdir@ -L@videolibdir@ -L@gllibdir@
Cflags: -I@abs_top_srcdir@/gst-libs -I@abs_top_builddir@/gst-libs
-libraries=allocators app audio fft pbutils riff rtp rtsp sdp tag video
+libraries=allocators app audio fft pbutils riff rtp rtsp sdp tag video gl
diff --git a/pkgconfig/gstreamer-plugins-base.pc.in b/pkgconfig/gstreamer-plugins-base.pc.in
index e81774665..a0f15beda 100644
--- a/pkgconfig/gstreamer-plugins-base.pc.in
+++ b/pkgconfig/gstreamer-plugins-base.pc.in
@@ -11,4 +11,4 @@ Version: @VERSION@
Libs: -L${libdir}
Cflags: -I${includedir}
-libraries=allocators app audio fft pbutils riff rtp rtsp sdp tag video
+libraries=allocators app audio fft pbutils riff rtp rtsp sdp tag video gl
diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build
index e878ad8d5..7e8dff84a 100644
--- a/pkgconfig/meson.build
+++ b/pkgconfig/meson.build
@@ -22,6 +22,7 @@ pkgconf.set('rtsplibdir', join_paths(meson.build_root(), gst_rtsp.outdir()))
pkgconf.set('sdplibdir', join_paths(meson.build_root(), gstsdp.outdir()))
pkgconf.set('taglibdir', join_paths(meson.build_root(), gsttag.outdir()))
pkgconf.set('videolibdir', join_paths(meson.build_root(), gstvideo.outdir()))
+pkgconf.set('gllibdir', join_paths(meson.build_root(), gstgl.outdir()))
pkg_install_dir = '@0@/pkgconfig'.format(get_option('libdir'))
@@ -38,9 +39,9 @@ pkg_files = [
'gstreamer-sdp',
'gstreamer-tag',
'gstreamer-video',
+ 'gstreamer-gl',
]
-# FIXME: -uninstalled.pc files (if still needed?)
foreach p : pkg_files
infile = p + '.pc.in'
outfile = p + '-1.0.pc'
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 98690d933..8300e60d1 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,6 +1,7 @@
ext/alsa/gstalsasink.c
ext/alsa/gstalsasrc.c
ext/cdparanoia/gstcdparanoiasrc.c
+ext/gl/gstgltestsrc.c
ext/ogg/gstoggdemux.c
gst/encoding/gstencodebin.c
gst/playback/gstdecodebin2.c
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index 532922659..9d5061b98 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -674,8 +674,8 @@ GIO_UNIX_2_0_DEFINED=-DHAVE_GIO_UNIX_2_0=1
endif
pipelines_tcp_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_NET_CFLAGS) $(GIO_CFLAGS) $(GIO_UNIX_2_0_CFLAGS) $(GIO_UNIX_2_0_DEFINED) $(AM_CFLAGS)
-pipelines_tcp_LDADD = $(GST_PLUGINS_BASE_LIBS) $(GST_NET_LIBS) $(GIO_LIBS) $(LDADD) \
- $(GIO_UNIX_2_0_LIBS) $(top_builddir)/gst-libs/gst/app/libgstapp-@GST_API_VERSION@.la
+pipelines_tcp_LDADD = $(top_builddir)/gst-libs/gst/app/libgstapp-@GST_API_VERSION@.la \
+ $(GST_NET_LIBS) $(GIO_LIBS) $(GIO_UNIX_2_0_LIBS) $(LDADD)
pipelines_gio_CFLAGS = $(GIO_CFLAGS) $(AM_CFLAGS)
pipelines_gio_LDADD = $(GIO_LIBS) $(LDADD)
diff --git a/tests/examples/Makefile.am b/tests/examples/Makefile.am
index 330ea8f46..2ee7eb3f2 100644
--- a/tests/examples/Makefile.am
+++ b/tests/examples/Makefile.am
@@ -2,8 +2,14 @@ if HAVE_GTK
GTK_SUBDIRS = playback seek snapshot
endif
-SUBDIRS = app audio decodebin_next dynamic fft $(GTK_SUBDIRS) gio overlay playrec encoding
-DIST_SUBDIRS = app audio dynamic decodebin_next fft gio playback overlay seek snapshot playrec encoding
+if USE_OPENGL
+GL_DIR=gl
+else
+GL_DIR=
+endif
+
+SUBDIRS = app audio decodebin_next dynamic fft gio $(GL_DIR) $(GTK_SUBDIRS) overlay playrec encoding
+DIST_SUBDIRS = app audio dynamic decodebin_next fft gio gl playback overlay seek snapshot playrec encoding
include $(top_srcdir)/common/parallel-subdirs.mak
diff --git a/tests/examples/gl/Makefile.am b/tests/examples/gl/Makefile.am
index b48d59221..3acca8fdc 100644
--- a/tests/examples/gl/Makefile.am
+++ b/tests/examples/gl/Makefile.am
@@ -17,7 +17,7 @@ if HAVE_SDL
SUBDIRS += sdl
endif
-if HAVE_GTK3
+if HAVE_GTK
SUBDIRS += gtk
endif
diff --git a/tests/examples/gl/clutter/Makefile.am b/tests/examples/gl/clutter/Makefile.am
index a8e31159a..347458f57 100644
--- a/tests/examples/gl/clutter/Makefile.am
+++ b/tests/examples/gl/clutter/Makefile.am
@@ -7,13 +7,13 @@ noinst_PROGRAMS += cluttershare
cluttershare_SOURCES = cluttershare.c
-cluttershare_CFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
- $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
- $(GST_CFLAGS) $(GL_CFLAGS) $(CLUTTER_CFLAGS)
-cluttershare_LDADD=$(CLUTTER_LIBS) $(GST_PLUGINS_BASE_LIBS) \
- $(GST_LIBS) $(GL_LIBS) \
- -lgstvideo-$(GST_API_VERSION) $(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la
-
+cluttershare_CFLAGS= \
+ $(GST_PLUGINS_BASE_CFLAGS) \
+ $(GST_CFLAGS) $(GL_CFLAGS) $(CLUTTER_CFLAGS)
+cluttershare_LDADD= \
+ $(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS) $(CLUTTER_LIBS)
endif
@@ -25,23 +25,27 @@ noinst_PROGRAMS += clutteractor clutteractortee
clutteractor_SOURCES = clutteractor.c
-clutteractor_CFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
- $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+clutteractor_CFLAGS= \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
$(GL_CFLAGS) $(CLUTTER_CFLAGS) \
$(CLUTTER_GLX_CFLAGS) $(CLUTTER_X11_CFLAGS) $(XCOMPOSITE_CFLAGS)
-clutteractor_LDADD=$(CLUTTER_LIBS) $(CLUTTER_GLX_LIBS) $(CLUTTER_X11_LIBS) \
- $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) $(XCOMPOSITE_LIBS) -lgstvideo-$(GST_API_VERSION)
+clutteractor_LDADD= \
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS) \
+ $(CLUTTER_LIBS) $(CLUTTER_GLX_LIBS) $(CLUTTER_X11_LIBS) \
+ $(XCOMPOSITE_LIBS)
clutteractortee_SOURCES = clutteractortee.c
-clutteractortee_CFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
- $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+clutteractortee_CFLAGS= \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
$(GL_CFLAGS) $(CLUTTER_CFLAGS) \
$(CLUTTER_GLX_CFLAGS) $(CLUTTER_X11_CFLAGS) $(XCOMPOSITE_CFLAGS)
-clutteractortee_LDADD=$(CLUTTER_LIBS) $(CLUTTER_GLX_LIBS) $(CLUTTER_X11_LIBS) \
- $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) $(XCOMPOSITE_LIBS) -lgstvideo-$(GST_API_VERSION)
+clutteractortee_LDADD= \
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS) \
+ $(CLUTTER_LIBS) $(CLUTTER_GLX_LIBS) $(CLUTTER_X11_LIBS) \
+ $(XCOMPOSITE_LIBS)
endif
endif
diff --git a/tests/examples/gl/cocoa/Makefile.am b/tests/examples/gl/cocoa/Makefile.am
index 9148f8a4a..539bece84 100755
--- a/tests/examples/gl/cocoa/Makefile.am
+++ b/tests/examples/gl/cocoa/Makefile.am
@@ -6,11 +6,11 @@ cocoa_videooverlay_SOURCES = cocoa-videooverlay.m
cocoa_videooverlay_OBJCFLAGS=-Wno-error=unused-command-line-argument \
-fobjc-arc \
- -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
$(GL_CFLAGS) $(GL_OBJCFLAGS)
-cocoa_videooverlay_LDADD=$(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
+cocoa_videooverlay_LDADD= \
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS)
endif
diff --git a/tests/examples/gl/generic/cube/Makefile.am b/tests/examples/gl/generic/cube/Makefile.am
index e1b0cef6f..a715260bd 100644
--- a/tests/examples/gl/generic/cube/Makefile.am
+++ b/tests/examples/gl/generic/cube/Makefile.am
@@ -3,7 +3,9 @@ noinst_PROGRAMS = cube
cube_SOURCES = main.cpp
-cube_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+cube_CXXFLAGS=\
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) $(GL_CFLAGS)
-cube_LDADD=$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) $(GST_LIBS) $(GL_LIBS)
+cube_LDADD=\
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS)
diff --git a/tests/examples/gl/generic/cubeyuv/Makefile.am b/tests/examples/gl/generic/cubeyuv/Makefile.am
index b23287127..3b2de1d04 100644
--- a/tests/examples/gl/generic/cubeyuv/Makefile.am
+++ b/tests/examples/gl/generic/cubeyuv/Makefile.am
@@ -3,6 +3,8 @@ noinst_PROGRAMS = cubeyuv
cubeyuv_SOURCES = main.cpp
-cubeyuv_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+cubeyuv_CXXFLAGS=\
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) $(GL_CFLAGS)
-cubeyuv_LDADD=$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) $(GST_LIBS) $(GL_LIBS)
+cubeyuv_LDADD=\
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS)
diff --git a/tests/examples/gl/generic/doublecube/Makefile.am b/tests/examples/gl/generic/doublecube/Makefile.am
index 7f1489561..be888564e 100644
--- a/tests/examples/gl/generic/doublecube/Makefile.am
+++ b/tests/examples/gl/generic/doublecube/Makefile.am
@@ -3,7 +3,9 @@ noinst_PROGRAMS = doublecube
doublecube_SOURCES = main.cpp
-doublecube_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+doublecube_CXXFLAGS=\
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) $(GL_CFLAGS)
-doublecube_LDADD=$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) $(GST_LIBS) $(GL_LIBS)
+doublecube_LDADD=\
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS)
diff --git a/tests/examples/gl/generic/recordgraphic/Makefile.am b/tests/examples/gl/generic/recordgraphic/Makefile.am
index 6a25c281f..23029b52a 100644
--- a/tests/examples/gl/generic/recordgraphic/Makefile.am
+++ b/tests/examples/gl/generic/recordgraphic/Makefile.am
@@ -3,7 +3,9 @@ noinst_PROGRAMS = recordgraphic
recordgraphic_SOURCES = main.cpp
-recordgraphic_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
- $(GST_CXXFLAGS) $(GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
-recordgraphic_LDADD=$(GST_PLUGINS_BASE_LIBS) -lgstvideo-@GST_API_VERSION@ $(GST_LIBS) $(GL_LIBS)
+recordgraphic_CXXFLAGS=\
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) $(GL_CFLAGS)
+recordgraphic_LDADD=\
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS)
diff --git a/tests/examples/gl/gtk/3dvideo/Makefile.am b/tests/examples/gl/gtk/3dvideo/Makefile.am
index 94c8d1619..5738e84cd 100644
--- a/tests/examples/gl/gtk/3dvideo/Makefile.am
+++ b/tests/examples/gl/gtk/3dvideo/Makefile.am
@@ -5,12 +5,12 @@ noinst_HEADERS = mviewwidget.h
3dvideo_SOURCES = mviewwidget.c main.cpp
3dvideo_CXXFLAGS=$(GST_CXXFLAGS)
+3dvideo_CFLAGS=$(GST_CFLAGS)
-3dvideo_CPPFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+3dvideo_CPPFLAGS=\
$(GST_PLUGINS_BASE_CFLAGS) \
- $(GL_CFLAGS) $(GTK3_CFLAGS)
+ $(GL_CFLAGS) $(GTK_CFLAGS)
3dvideo_LDADD=../libgstgtkhelper.la \
- $(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_API_VERSION).la \
- $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
-
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS) $(GTK_LIBS)
diff --git a/tests/examples/gl/gtk/3dvideo/mviewwidget.h b/tests/examples/gl/gtk/3dvideo/mviewwidget.h
index 81e16a6b2..7436c3b58 100644
--- a/tests/examples/gl/gtk/3dvideo/mviewwidget.h
+++ b/tests/examples/gl/gtk/3dvideo/mviewwidget.h
@@ -70,7 +70,7 @@ struct _GstMViewWidgetClass {
GtkGridClass parent;
};
-GType gst_mview_widget_get_type ();
+GType gst_mview_widget_get_type (void);
GtkWidget *gst_mview_widget_new (gboolean is_output);
G_END_DECLS
diff --git a/tests/examples/gl/gtk/Makefile.am b/tests/examples/gl/gtk/Makefile.am
index 572890523..96c6619f4 100644
--- a/tests/examples/gl/gtk/Makefile.am
+++ b/tests/examples/gl/gtk/Makefile.am
@@ -5,7 +5,7 @@ noinst_LTLIBRARIES = libgstgtkhelper.la
libgstgtkhelper_la_SOURCES = gstgtk.c gstgtk.h
libgstgtkhelper_la_CFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
- $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GTK3_CFLAGS)
+ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GTK_CFLAGS)
if HAVE_WINDOW_COCOA
libgstgtkhelper_la_CFLAGS += -x objective-c
diff --git a/tests/examples/gl/gtk/filternovideooverlay/Makefile.am b/tests/examples/gl/gtk/filternovideooverlay/Makefile.am
index 61526c544..57147747e 100644
--- a/tests/examples/gl/gtk/filternovideooverlay/Makefile.am
+++ b/tests/examples/gl/gtk/filternovideooverlay/Makefile.am
@@ -3,16 +3,13 @@ noinst_PROGRAMS = filternovideooverlay
filternovideooverlay_SOURCES = main.cpp
filternovideooverlay_CXXFLAGS= \
- -I$(top_srcdir)/gst-libs \
- -I$(top_builddir)/gst-libs \
$(GST_PLUGINS_BASE_CFLAGS) \
$(GST_CXXFLAGS) \
$(GL_CFLAGS) \
- $(GTK3_CFLAGS)
+ $(GTK_CFLAGS)
filternovideooverlay_LDADD= \
- $(GTK3_LIBS) \
- $(GST_PLUGINS_BASE_LIBS) \
$(GST_LIBS) \
- $(GL_LIBS)
+ $(GL_LIBS) \
+ $(GTK_LIBS)
diff --git a/tests/examples/gl/gtk/filtervideooverlay/Makefile.am b/tests/examples/gl/gtk/filtervideooverlay/Makefile.am
index 301b2aae6..975359d4f 100644
--- a/tests/examples/gl/gtk/filtervideooverlay/Makefile.am
+++ b/tests/examples/gl/gtk/filtervideooverlay/Makefile.am
@@ -2,10 +2,9 @@ noinst_PROGRAMS = filtervideooverlay
filtervideooverlay_SOURCES = main.cpp
-filtervideooverlay_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
- $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
- $(GL_CFLAGS) $(GTK3_CFLAGS) $(X11_CFLAGS)
+filtervideooverlay_CXXFLAGS=\
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
+ $(GL_CFLAGS) $(GTK_CFLAGS) $(X11_CFLAGS)
filtervideooverlay_LDADD=../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
-
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS) $(GTK_LIBS) $(X11_LIBS)
diff --git a/tests/examples/gl/gtk/fxtest/Makefile.am b/tests/examples/gl/gtk/fxtest/Makefile.am
index e078906f5..ff0d3f6de 100644
--- a/tests/examples/gl/gtk/fxtest/Makefile.am
+++ b/tests/examples/gl/gtk/fxtest/Makefile.am
@@ -3,18 +3,18 @@ noinst_PROGRAMS += pixbufdrop
fxtest_SOURCES = fxtest.c
-fxtest_CFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+fxtest_CFLAGS=\
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
- $(GL_CFLAGS) $(GTK3_CFLAGS) $(X11_CFLAGS)
+ $(GL_CFLAGS) $(GTK_CFLAGS) $(X11_CFLAGS)
fxtest_LDADD=../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS) $(GTK_LIBS) $(X11_LIBS)
pixbufdrop_SOURCES = pixbufdrop.c
-pixbufdrop_CFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+pixbufdrop_CFLAGS=\
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
- $(GL_CFLAGS) $(GTK3_CFLAGS) $(X11_CFLAGS)
+ $(GL_CFLAGS) $(GTK_CFLAGS) $(X11_CFLAGS)
pixbufdrop_LDADD=../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS) $(GTK_LIBS) $(X11_LIBS)
diff --git a/tests/examples/gl/gtk/switchvideooverlay/Makefile.am b/tests/examples/gl/gtk/switchvideooverlay/Makefile.am
index e6ebf70bf..94017c355 100644
--- a/tests/examples/gl/gtk/switchvideooverlay/Makefile.am
+++ b/tests/examples/gl/gtk/switchvideooverlay/Makefile.am
@@ -2,10 +2,11 @@ noinst_PROGRAMS = switchvideooverlay
switchvideooverlay_SOURCES = main.cpp
-switchvideooverlay_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+switchvideooverlay_CXXFLAGS=\
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
- $(GL_CFLAGS) $(GTK3_CFLAGS) $(X_CFLAGS)
+ $(GL_CFLAGS) $(GTK_CFLAGS) $(X_CFLAGS)
switchvideooverlay_LDADD=../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X_LIBS)
+ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+ $(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
+ $(GST_LIBS) $(GL_LIBS) $(GTK_LIBS) $(X_LIBS)
diff --git a/tests/examples/gl/sdl/meson.build b/tests/examples/gl/sdl/meson.build
index 49f8ea0ce..4262210da 100644
--- a/tests/examples/gl/sdl/meson.build
+++ b/tests/examples/gl/sdl/meson.build
@@ -3,10 +3,10 @@ if sdl_dep.found() and build_gstgl
executable('sdlshare',
'sdlshare.c',
install: false,
- dependencies : [gstbase_dep, gstgl_dep, sdl_dep, gl_dep])
+ dependencies : [gst_base_dep, gstgl_dep, sdl_dep, gl_dep])
executable('sdlshare2',
'sdlshare2.c',
install: false,
- dependencies : [gstbase_dep, gstgl_dep, sdl_dep, gl_dep])
+ dependencies : [gst_base_dep, gstgl_dep, sdl_dep, gl_dep])
endif
diff --git a/tests/examples/meson.build b/tests/examples/meson.build
index 58a512d8e..a3f3f0b3a 100644
--- a/tests/examples/meson.build
+++ b/tests/examples/meson.build
@@ -11,6 +11,7 @@ subdir('decodebin_next')
subdir('encoding')
subdir('fft')
subdir('gio')
+subdir('gl')
subdir('overlay')
subdir('playback')
subdir('playrec')