summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac673
-rw-r--r--docs/libs/Makefile.am1
-rw-r--r--docs/libs/gst-plugins-bad-libs-docs.sgml26
-rw-r--r--docs/libs/gst-plugins-bad-libs-sections.txt505
-rw-r--r--docs/libs/gst-plugins-bad-libs.types15
-rw-r--r--ext/Makefile.am15
-rw-r--r--gst-libs/gst/Makefile.am11
-rw-r--r--tests/check/Makefile.am36
-rw-r--r--tests/check/libs/.gitignore3
9 files changed, 1281 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac
index ac063c9cb..c9d76cb17 100644
--- a/configure.ac
+++ b/configure.ac
@@ -348,7 +348,7 @@ GST_PLUGINS_NONPORTED=" cdxaparse \
gsettings \
musepack nas sdl timidity \
directdraw acm wininet \
- xvid lv2 teletextdec sndio osx_video quicktime"
+ xvid lv2 teletextdec sndio osx_video quicktime libvisual"
AC_SUBST(GST_PLUGINS_NONPORTED)
dnl these are all the gst plug-ins, compilable without additional libs
@@ -615,6 +615,639 @@ AC_SUBST(EGL_LIBS)
AC_SUBST(EGL_CFLAGS)
AM_CONDITIONAL(HAVE_EGL, test x"$HAVE_EGL" = x"yes")
+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_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_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_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 (using GNUstep on non OS X platforms) @<:@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])
+
+save_CPPFLAGS="$CPPFLAGS"
+save_LIBS="$LIBS"
+
+HAVE_GL=no
+HAVE_GLES2=no
+HAVE_GLU=no
+HAVE_GNUSTEP_COCOA=no
+HAVE_WAYLAND_EGL=no
+HAVE_EGL_RPI=no
+
+case $host in
+ *-mingw32* )
+ LIBS="$LIBS -lgdi32"
+ AG_GST_CHECK_LIBHEADER(GL, opengl32, glTexImage2D,, GL/gl.h)
+ AG_GST_CHECK_LIBHEADER(GLU, glu32, gluSphere,, GL/glu.h)
+ HAVE_GL=yes
+ HAVE_GLU=yes
+ ;;
+ *)
+ AG_GST_CHECK_X
+ AG_GST_CHECK_LIBHEADER(GL, GL, glTexImage2D,, GL/gl.h)
+ AG_GST_CHECK_LIBHEADER(GLU, GLU, gluSphere,, GL/glu.h)
+ AG_GST_CHECK_LIBHEADER(GLES2, GLESv2, glTexImage2D,, GLES2/gl2.h)
+
+ 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)
+ ;;
+esac
+
+case $host in
+ *-darwin* ) ;;
+ *)
+ AC_PATH_PROG([GNUSTEP_CONFIG],[gnustep-config])
+ if test "x$GNUSTEP_CONFIG" != "x"; then
+ GNUSTEP_HOST="`$GNUSTEP_CONFIG --variable=GNUSTEP_HOST`"
+ case $host in
+ *-mingw* )
+ case $GNUSTEP_HOST in
+ *-mingw* )
+ HAVE_GNUSTEP_COCOA=yes
+ ;;
+ esac
+ ;;
+ * )
+ HAVE_GNUSTEP_COCOA=yes
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+AC_MSG_CHECKING([for GNUstep])
+if test "x$HAVE_GNUSTEP_COCOA" = "xyes" ; then
+ AC_MSG_RESULT([yes])
+else
+ AC_MSG_RESULT([no])
+fi
+
+CPPFLAGS="$save_CPPFLAGS"
+LIBS="$save_LIBS"
+
+AC_SUBST(HAVE_GL)
+AC_SUBST(HAVE_GLU)
+AC_SUBST(HAVE_GLES2)
+
+USE_OPENGL=no
+USE_GLES2=no
+USE_GLX=no
+USE_COCOA=no
+USE_WGL=no
+USE_X11=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$NEED_GLES2" = "xno"; then
+ if test "x$NEED_GL" = "xno"; then
+ AC_MSG_ERROR([Either OpenGL or OpenGL|ES is required])
+ 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_X" = "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
+ if test "x$HAVE_GLU" = "xno"; then
+ if test "x$NEED_GL" = "xyes"; then
+ AC_MSG_ERROR([GLU is required with OpenGL support])
+ else
+ AC_MSG_WARN([GLU is required with OpenGL support])
+ fi
+ else dnl HAVE_GLU=yes
+ USE_OPENGL=yes
+ if test "x$NEED_GLX" != "xno"; then
+ USE_GLX=yes
+ fi
+ fi
+ fi
+ fi
+fi
+
+#dnl Check for OpenGL, GLU
+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_X" = "xno"; then
+ if test "x$HAVE_WAYLAND_EGL" = "xno"; then
+ AC_MSG_ERROR([X or Wayland is required])
+ 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
+ if test "x$HAVE_GLU" = "xyes"; then
+ GL_LIBS="$GL_LIBS -lGLU"
+ 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_X" = "xyes" -a "x$HAVE_EGL_RPI" = "xno"; then
+ if test "x$NEED_X11" != "xno"; then
+ GL_LIBS="$GL_LIBS $X_LIBS"
+ GL_CFLAGS="$GL_CFLAGS $X_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])
+ 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_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_ERROR([Building requires either EGL or GLX])
+ 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"; then
+ GL_LIBS="$GL_LIBS -lEGL"
+ USE_EGL=yes
+ fi
+ fi
+ fi
+
+ dnl GNUstep provides the Cocoa API on unix
+ if test "x$NEED_COCOA" != "xno"; then
+ if test "x$HAVE_GNUSTEP_COCOA" = "xyes" ; then
+ GNUSTEP_OBJCFLAGS="`$GNUSTEP_CONFIG --objc-flags`"
+ GNUSTEP_LIBS="`$GNUSTEP_CONFIG --gui-libs`"
+ GL_LIBS="$GL_LIBS $GNUSTEP_LIBS -lgnustep-gui -lgnustep-base"
+ GL_OBJCFLAGS="$GL_OBJCFLAGS $GNUSTEP_OBJCFLAGS"
+
+ USE_COCOA=yes
+ HAVE_WINDOW_COCOA=yes
+ fi
+ fi
+ ;;
+ *-darwin*)
+ if test "x$NEED_WGL" = "xyes"; then
+ AC_MSG_ERROR([WGL is not available on Mac OS X])
+ fi
+ if test "x$NEED_EGL" = "xyes"; then
+ AC_MSG_ERROR([EGL is not available on Mac OS X])
+ fi
+ if test "x$NEED_GLES2" = "xyes"; then
+ AC_MSG_ERROR([OpenGL|ES 2.0 is not supported on your platform yet])
+ fi
+
+ GL_LIBS="$LIBS -framework OpenGL -framework Cocoa"
+ GL_CFLAGS="$GL_CFLAGS"
+ USE_COCOA=yes
+ HAVE_WINDOW_COCOA=yes
+ USE_OPENGL=yes
+
+ if test "x$USE_GLX" = "xyes"; then
+ if test "x$HAVE_X" = "xyes"; then
+ if test "x$NEED_X11" != "xno"; then
+ GL_LIBS="$GL_LIBS $X_LIBS"
+ GL_CFLAGS="$GL_CFLAGS $X_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
+ if test "x$HAVE_GLU" = "xyes"; then
+ GL_LIBS="$GL_LIBS -lGLU"
+ 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
+
+ GL_LIBS="$GL_LIBS -lgdi32 -lopengl32 -lglu32"
+ HAVE_WINDOW_WIN32=yes
+ USE_OPENGL=yes
+ USE_WGL=yes
+
+ dnl GNUstep provides the Cocoa API on win32
+ if test "x$HAVE_GNUSTEP_COCOA" = "xyes" ; then
+ GNUSTEP_CFLAGS="`$GNUSTEP_CONFIG --objc-flags`"
+ GNUSTEP_LIBS="`$GNUSTEP_CONFIG --gui-libs`"
+ GL_LIBS="$GL_LIBS $GNUSTEP_LIBS -lgnustep-gui -lgnustep-base"
+ GL_OBJCFLAGS="$OBJCFLAGS $GNUSTEP_CFLAGS"
+
+ USE_COCOA=yes
+ HAVE_WINDOW_COCOA=yes
+ fi
+ ;;
+ *)
+ AC_MSG_ERROR([Don't know how to check for OpenGL on your platform.])
+ exit 1
+ ;;
+esac
+
+GL_PLATFORMS=
+GL_WINDOWS=
+GL_APIS=
+GL_CONFIG_DEFINES=
+
+dnl APIs
+if test "x$USE_OPENGL" = "xyes"; then
+ GL_APIS="gl $GL_APIS"
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_OPENGL 1"
+fi
+if test "x$USE_GLES2" = "xyes"; then
+ GL_APIS="gles2 $GL_APIS"
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_GLES2 1"
+fi
+
+dnl WINDOW's
+if test "x$HAVE_WINDOW_X11" = "xyes"; then
+ GL_WINDOWS="x11 $GL_WINDOWS"
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_WINDOW_X11 1"
+fi
+if test "x$HAVE_WINDOW_COCOA" = "xyes"; then
+ GL_WINDOWS="cocoa $GL_WINDOWS"
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_WINDOW_COCOA 1"
+fi
+if test "x$HAVE_WINDOW_WIN32" = "xyes"; then
+ GL_WINDOWS="win32 $GL_WINDOWS"
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_WINDOW_WIN32 1"
+fi
+if test "x$HAVE_WINDOW_WAYLAND" = "xyes"; then
+ GL_WINDOWS="wayland $GL_WINDOWS"
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_WINDOW_WAYLAND 1"
+fi
+if test "x$HAVE_WINDOW_ANDROID" = "xyes"; then
+ GL_WINDOWS="android $GL_WINDOWS"
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_WINDOW_ANDROID 1"
+fi
+if test "x$HAVE_WINDOW_DISPMANX" = "xyes"; then
+ GL_WINDOWS="dispmanx $GL_WINDOWS"
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_WINDOW_DISPMANX 1"
+fi
+
+dnl PLATFORM's
+if test "x$USE_EGL" = "xyes"; then
+ GL_PLATFORMS="egl $GL_PLATFORMS"
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_PLATFORM_EGL 1"
+fi
+if test "x$USE_GLX" = "xyes"; then
+ GL_PLATFORMS="glx $GL_PLATFORMS"
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_PLATFORM_GLX 1"
+fi
+if test "x$USE_WGL" = "xyes"; then
+ GL_PLATFORMS="wgl $GL_PLATFORMS"
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_PLATFORM_WGL 1"
+fi
+if test "x$USE_COCOA" = "xyes"; then
+ GL_PLATFORMS="cocoa $GL_PLATFORMS"
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_PLATFORM_COCOA 1"
+fi
+
+dnl Check for no platforms/window systems
+if test "x$GL_APIS" = "x"; then
+ AC_MSG_ERROR([Either OpenGL or OpenGL|ES is required])
+fi
+if test "x$GL_PLATFORMS" = "x"; then
+ AC_MSG_ERROR([Could not find any OpenGL platforms to use such as Cocoa, WGL or GLX])
+fi
+if test "x$GL_WINDOWS" = "x"; then
+ AC_MSG_ERROR([Could not find any window systems to use such as Cocoa, Win32API or X11])
+fi
+
+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_X11ES2, test "x$HAVE_WINDOW_X11ES2" = "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(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_PRI, test "x$USE_EGL_RPI" = "xyes")
+
+dnl Check for some types that are not always present
+GL_INCLUDES=""
+if test "x$USE_GLES2" = "xyes"; then
+ GL_INCLUDES="$GL_INCLUDES
+# include <GLES2/gl2.h>
+# include <GLES2/gl2ext.h>
+"
+fi
+
+if test "x$USE_OPENGL" = "xyes"; then
+ GL_INCLUDES="$GL_INCLUDES
+# if __APPLE__
+# include <OpenGL/OpenGL.h>
+# include <OpenGL/gl.h>
+# else
+# include <GL/glu.h>
+# include <GL/gl.h>
+# if __WIN32__ || _WIN32
+# include <GL/glext.h>
+# endif
+# endif
+"
+fi
+
+AC_CHECK_TYPES(GLeglImageOES, [], [], [[$GL_INCLUDES]])
+if test "x$ac_cv_type_GLeglImageOES" = "xyes"; then
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_GLEGLIMAGEOES 1"
+fi
+
+AC_CHECK_TYPES(GLchar, [], [], [[$GL_INCLUDES]])
+if test "x$ac_cv_type_GLchar" = "xyes"; then
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_GLCHAR 1"
+fi
+
+AC_CHECK_TYPES(GLsizeiptr, [], [], [[$GL_INCLUDES]])
+if test "x$ac_cv_type_GLsizeiptr" = "xyes"; then
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_GLSIZEIPTR 1"
+fi
+
+AC_CHECK_TYPES(GLintptr, [], [], [[$GL_INCLUDES]])
+if test "x$ac_cv_type_GLintptr" = "xyes"; then
+ GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
+#define GST_GL_HAVE_GLINTPTR 1"
+fi
+
+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 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 *** sys plug-ins ***
dnl DirectSound
@@ -1880,6 +2513,31 @@ AG_GST_CHECK_FEATURE(EGLGLES, [eglgles sink], eglgles, [
AC_SUBST(EGLGLES_LIBS)
])
+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"$HAVE_OPENGL" = x"yes" -o x"$HAVE_GLES2" = x"yes"; then
+ HAVE_GL="yes"
+ fi
+])
+
+dnl *** libvisual ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_LIBVISUAL, true)
+AG_GST_CHECK_FEATURE(LIBVISUAL, [libvisual visualization library], libvisual, [
+ AG_GST_PKG_CHECK_MODULES(LIBVISUAL, libvisual-0.4 >= 0.4.0)
+ if test x$HAVE_LIBVISUAL = xyes; then
+ LIBVIS_PLUGINSDIR="`$PKG_CONFIG --variable=pluginsbasedir libvisual-0.4`"
+ fi
+ AC_MSG_NOTICE([libvisual pluginsdir: $LIBVIS_PLUGINSDIR])
+ if test x$LIBVIS_PLUGINSDIR != x; then
+ AC_DEFINE_UNQUOTED(LIBVISUAL_PLUGINSBASEDIR,
+ "$LIBVIS_PLUGINSDIR",
+ [directory in which the detected libvisual's plugins are located])
+ fi
+])
+
dnl *** timidity ***
translit(dnm, m, l) AM_CONDITIONAL(USE_TIMIDITY, true)
AG_GST_CHECK_FEATURE(TIMIDITY, [timidity midi soft synth plugin], timidity, [
@@ -2281,6 +2939,7 @@ AM_CONDITIONAL(USE_OPUS, false)
AM_CONDITIONAL(USE_PVR, false)
AM_CONDITIONAL(USE_RSVG, false)
AM_CONDITIONAL(USE_EGLGLES, false)
+AM_CONDITIONAL(USE_LIBVISUAL, false)
AM_CONDITIONAL(USE_TIMIDITY, false)
AM_CONDITIONAL(USE_WILDMIDI, false)
AM_CONDITIONAL(USE_SDL, false)
@@ -2460,6 +3119,14 @@ gst-libs/Makefile
gst-libs/gst/Makefile
gst-libs/gst/basecamerabinsrc/Makefile
gst-libs/gst/egl/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/wayland/Makefile
+gst-libs/gst/gl/win32/Makefile
+gst-libs/gst/gl/x11/Makefile
gst-libs/gst/insertbin/Makefile
gst-libs/gst/interfaces/Makefile
gst-libs/gst/codecparsers/Makefile
@@ -2521,6 +3188,7 @@ ext/wayland/Makefile
ext/daala/Makefile
ext/dts/Makefile
ext/eglgles/Makefile
+ext/gl/Makefile
ext/faac/Makefile
ext/faad/Makefile
ext/flite/Makefile
@@ -2531,6 +3199,7 @@ ext/kate/Makefile
ext/ladspa/Makefile
ext/lv2/Makefile
ext/libmms/Makefile
+ext/libvisual/Makefile
ext/Makefile
ext/modplug/Makefile
ext/mpeg2enc/Makefile
@@ -2583,6 +3252,8 @@ pkgconfig/gstreamer-insertbin.pc
pkgconfig/gstreamer-insertbin-uninstalled.pc
pkgconfig/gstreamer-egl.pc
pkgconfig/gstreamer-egl-uninstalled.pc
+pkgconfig/gstreamer-gl.pc
+pkgconfig/gstreamer-gl-uninstalled.pc
pkgconfig/gstreamer-mpegts.pc
pkgconfig/gstreamer-mpegts-uninstalled.pc
tools/Makefile
diff --git a/docs/libs/Makefile.am b/docs/libs/Makefile.am
index 390886e83..5c6c919a3 100644
--- a/docs/libs/Makefile.am
+++ b/docs/libs/Makefile.am
@@ -57,6 +57,7 @@ GTKDOC_LIBS = \
$(top_builddir)/gst-libs/gst/insertbin/libgstinsertbin-@GST_API_VERSION@.la \
$(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-@GST_API_VERSION@.la \
$(top_builddir)/gst-libs/gst/mpegts/libgstmpegts-@GST_API_VERSION@.la \
+ $(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
$(GST_BASE_LIBS)
GTKDOC_CC=$(LIBTOOL) --tag=CC --mode=compile $(CC)
diff --git a/docs/libs/gst-plugins-bad-libs-docs.sgml b/docs/libs/gst-plugins-bad-libs-docs.sgml
index 66c4dee6a..c00718c98 100644
--- a/docs/libs/gst-plugins-bad-libs-docs.sgml
+++ b/docs/libs/gst-plugins-bad-libs-docs.sgml
@@ -56,6 +56,32 @@
<title>Useful elements</title>
<xi:include href="xml/gstinsertbin.xml" />
</chapter>
+
+ <chapter id="gl">
+ <title>OpenGL Helper Library</title>
+ <xi:include href="xml/gstglapi.xml"/>
+ <xi:include href="xml/gstglbufferpool.xml"/>
+ <xi:include href="xml/gstglcontext.xml"/>
+ <xi:include href="xml/gstglcontextcocoa.xml"/>
+ <xi:include href="xml/gstglcontextegl.xml"/>
+ <xi:include href="xml/gstglcontextglx.xml"/>
+ <xi:include href="xml/gstglcontextwgl.xml"/>
+ <xi:include href="xml/gstgldisplay.xml"/>
+ <xi:include href="xml/gstgldownload.xml"/>
+ <xi:include href="xml/gstglfilter.xml"/>
+ <xi:include href="xml/gstglmemory.xml"/>
+ <xi:include href="xml/gstglmixer.xml"/>
+ <xi:include href="xml/gstglshader.xml"/>
+ <xi:include href="xml/gstglupload.xml"/>
+ <xi:include href="xml/gstglutils.xml"/>
+ <xi:include href="xml/gstglwindow.xml"/>
+ <xi:include href="xml/gstglwindowandroid.xml"/>
+ <xi:include href="xml/gstglwindowcocoa.xml"/>
+ <xi:include href="xml/gstglwindowdispmanx.xml"/>
+ <xi:include href="xml/gstglwindowwayland.xml"/>
+ <xi:include href="xml/gstglwindowwin32.xml"/>
+ <xi:include href="xml/gstglwindowx11.xml"/>
+ </chapter>
</part>
<part id="gstreamer-libs-hierarchy">
diff --git a/docs/libs/gst-plugins-bad-libs-sections.txt b/docs/libs/gst-plugins-bad-libs-sections.txt
index adf4a7d2f..db90493a5 100644
--- a/docs/libs/gst-plugins-bad-libs-sections.txt
+++ b/docs/libs/gst-plugins-bad-libs-sections.txt
@@ -633,3 +633,508 @@ gst_insert_bin_get_type
<SUBSECTION Private>
GstInsertBinPrivate
</SECTION>
+
+<SECTION>
+<FILE>gstglapi</FILE>
+<TITLE>GstGLAPI</TITLE>
+GstGLAPI
+gst_gl_api_string
+gst_gl_check_extension
+GST_GL_CHECK_GL_VERSION
+<SUBSECTION Private>
+GSTGLAPI
+GST_GL_EXT_BEGIN
+GST_GL_EXT_END
+GST_GL_EXT_FUNCTION
+GstGLFeatureData
+GstGLFeatureFunction
+</SECTION>
+
+<SECTION>
+<FILE>gstglbufferpool</FILE>
+<TITLE>GstGLBufferPool</TITLE>
+GstGLBufferPool
+GstGLBufferPoolClass
+gst_gl_buffer_pool_new
+<SUBSECTION Standard>
+GstGLBufferPoolPrivate
+GST_GL_BUFFER_POOL
+GST_GL_BUFFER_POOL_CAST
+gst_gl_buffer_pool_get_type
+GST_IS_GL_BUFFER_POOL
+GST_TYPE_GL_BUFFER_POOL
+</SECTION>
+
+<SECTION>
+<FILE>gstglcontext</FILE>
+<TITLE>GstGLContext</TITLE>
+GST_GL_CONTEXT_ERROR
+gst_gl_context_error_quark
+GstGLContextError
+GstGLContextThreadFunc
+GstGLContext
+gst_gl_context_new
+gst_gl_context_create
+gst_gl_context_activate
+gst_gl_context_default_get_proc_address
+gst_gl_context_get_proc_address
+gst_gl_context_get_window
+gst_gl_context_set_window
+gst_gl_context_thread_add
+gst_gl_context_get_display
+gst_gl_context_get_gl_api
+gst_gl_context_get_gl_context
+gst_gl_context_get_platform
+<SUBSECTION Standard>
+GST_GL_CONTEXT
+GST_GL_IS_CONTEXT
+GST_GL_TYPE_CONTEXT
+GST_GL_CONTEXT_CLASS
+GST_GL_CONTEXT_GET_CLASS
+GST_GL_IS_CONTEXT_CLASS
+GST_GL_CONTEXT_CAST
+GstGLContextPrivate
+gst_gl_context_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gstglcontextcocoa</FILE>
+<TITLE>GstGLContextCocoa</TITLE>
+GstGLContextCocoa
+gst_gl_context_cocoa_new
+<SUBSECTION Standard>
+GST_GL_CONTEXT_COCOA
+GST_GL_IS_CONTEXT_COCOA
+GST_GL_TYPE_CONTEXT_COCOA
+GST_GL_CONTEXT_COCOA_CLASS
+GST_GL_CONTEXT_COCOA_GET_CLASS
+GST_GL_IS_CONTEXT_COCOA_CLASS
+GST_GL_CONTEXT_COCOA_CAST
+GstGLContextCocoaPrivate
+gst_gl_context_cocoa_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gstglcontextegl</FILE>
+<TITLE>GstGLContextEGL</TITLE>
+GstGLContextEGL
+gst_gl_context_egl_new
+<SUBSECTION Standard>
+GST_GL_CONTEXT_EGL
+GST_GL_IS_CONTEXT_EGL
+GST_GL_TYPE_CONTEXT_EGL
+GST_GL_CONTEXT_EGL_CLASS
+GST_GL_CONTEXT_EGL_GET_CLASS
+GST_GL_IS_CONTEXT_EGL_CLASS
+GST_GL_CONTEXT_EGL_CAST
+GstGLContextEGLPrivate
+gst_gl_context_egl_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gstglcontextglx</FILE>
+<TITLE>GstGLContextGLX</TITLE>
+GstGLContextGLX
+gst_gl_context_glx_new
+<SUBSECTION Standard>
+GST_GL_CONTEXT_GLX
+GST_GL_IS_CONTEXT_GLX
+GST_GL_TYPE_CONTEXT_GLX
+GST_GL_CONTEXT_GLX_CLASS
+GST_GL_CONTEXT_GLX_GET_CLASS
+GST_GL_IS_CONTEXT_GLX_CLASS
+GST_GL_CONTEXT_GLX_CAST
+GstGLContextGLXPrivate
+gst_gl_context_glx_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gstglcontextwgl</FILE>
+<TITLE>GstGLContextWGL</TITLE>
+GstGLContextWGL
+gst_gl_context_wgl_new
+<SUBSECTION Standard>
+GST_GL_CONTEXT_WGL
+GST_GL_IS_CONTEXT_WGL
+GST_GL_TYPE_CONTEXT_WGL
+GST_GL_CONTEXT_WGL_CLASS
+GST_GL_CONTEXT_WGL_GET_CLASS
+GST_GL_IS_CONTEXT_WGL_CLASS
+GST_GL_CONTEXT_WGL_CAST
+GstGLContextWGLPrivate
+gst_gl_context_wgl_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gstgldisplay</FILE>
+<TITLE>GstGLDisplay</TITLE>
+GstGLDisplay
+gst_gl_display_new
+gst_context_get_gl_display
+gst_context_set_gl_display
+<SUBSECTION Standard>
+GST_GL_DISPLAY
+GST_IS_GL_DISPLAY
+GST_TYPE_GL_DISPLAY
+GST_GL_DISPLAY_CLASS
+GST_IS_GL_DISPLAY_CLASS
+GST_GL_DISPLAY_CAST
+GstGLDisplayPrivate
+gst_gl_display_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gstgldownload</FILE>
+GST_GL_DOWNLOAD_FORMATS
+GST_GL_DOWNLOAD_VIDEO_CAPS
+<TITLE>GstGLDownload</TITLE>
+GstGLDownload
+gst_gl_download_new
+gst_gl_download_init_format
+gst_gl_download_perform_with_data
+gst_gl_download_perform_with_memory
+<SUBSECTION Standard>
+GST_GL_DOWNLOAD
+GST_GL_DOWNLOAD_CAST
+GST_GL_DOWNLOAD_CLASS
+GST_GL_DOWNLOAD_GET_CLASS
+gst_gl_download_get_type
+GST_IS_GL_DOWNLOAD
+GST_IS_GL_DOWNLOAD_CLASS
+GST_TYPE_GL_DOWNLOAD
+GstGLDownloadPrivate
+</SECTION>
+
+<SECTION>
+<FILE>gstglfilter</FILE>
+<TITLE>GstGLFilter</TITLE>
+GstGLFilter
+GstGLFilterClass
+gst_gl_filter_draw_texture
+gst_gl_filter_render_to_target
+gst_gl_filter_render_to_target_with_shader
+gst_gl_filter_filter_texture
+<SUBSECTION Standard>
+GST_GL_FILTER
+GST_IS_GL_FILTER
+GST_TYPE_GL_FILTER
+gst_gl_filter_get_type
+GST_GL_FILTER_CLASS
+GST_IS_GL_FILTER_CLASS
+GST_GL_FILTER_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gstglmemory</FILE>
+GstGLAllocator
+GstGLAllocatorClass
+GST_MAP_GL
+GST_GL_MEMORY_ALLOCATOR
+GstGLMemoryFlags
+GST_GL_MEMORY_FLAGS
+GST_GL_MEMORY_FLAG_IS_SET
+GST_GL_MEMORY_FLAG_SET
+GST_GL_MEMORY_FLAG_UNSET
+<TITLE>GstGLMemory</TITLE>
+GstGLMemory
+gst_gl_memory_init
+gst_gl_memory_alloc
+gst_gl_memory_wrapped
+gst_gl_memory_copy_into_texture
+gst_is_gl_memory
+<SUBSECTION Standard>
+GST_GL_ALLOCATOR
+GST_GL_ALLOCATOR_CAST
+GST_GL_ALLOCATOR_CLASS
+GST_GL_ALLOCATOR_GET_CLASS
+gst_gl_allocator_get_type
+GST_IS_GL_ALLOCATOR
+GST_IS_GL_ALLOCATOR_CLASS
+GST_TYPE_GL_ALLOCATOR
+</SECTION>
+
+<SECTION>
+<FILE>gstglmixer</FILE>
+GstGLMixerPad
+GstGLMixerPadClass
+GstGLMixerCollect
+<TITLE>GstGLMixer</TITLE>
+GstGLMixer
+GstGLMixerClass
+GstGLMixerProcessFunc
+GstGLMixerSetCaps
+GstGLMixerReset
+GstGLMixerProcessTextures
+GstGLMixerFrameData
+gst_gl_mixer_process_textures
+<SUBSECTION Standard>
+GstGLMixerPrivate
+GST_GL_MIXER
+GST_GL_MIXER_CLASS
+GST_GL_MIXER_GET_CLASS
+GST_GL_MIXER_PAD
+GST_GL_MIXER_PAD_CLASS
+gst_gl_mixer_get_type
+gst_gl_mixer_pad_get_type
+GST_IS_GL_MIXER
+GST_IS_GL_MIXER_CLASS
+GST_IS_GL_MIXER_PAD
+GST_IS_GL_MIXER_PAD_CLASS
+GST_TYPE_GL_MIXER
+GST_TYPE_GL_MIXER_PAD
+</SECTION>
+
+<SECTION>
+<FILE>gstglshader</FILE>
+gst_gl_shader_error_quark
+GST_GL_SHADER_ERROR
+GstGLShaderError
+GstGLShaderSourceType
+gst_gl_shadervariable_desc
+gst_gl_shadervariable_set
+gst_gl_shadervariables_parse
+<TITLE>GstGLShader</TITLE>
+GstGLShader
+gst_gl_shader_new
+gst_gl_shader_set_vertex_source
+gst_gl_shader_set_fragment_source
+gst_gl_shader_get_vertex_source
+gst_gl_shader_get_fragment_source
+gst_gl_shader_set_active
+gst_gl_shader_is_compiled
+gst_gl_shader_compile
+gst_gl_shader_compile_and_check
+gst_gl_shader_release
+gst_gl_shader_use
+gst_gl_shader_set_uniform_1i
+gst_gl_shader_set_uniform_1f
+gst_gl_shader_set_uniform_1fv
+gst_gl_shader_set_uniform_1iv
+gst_gl_shader_set_uniform_2f
+gst_gl_shader_set_uniform_2fv
+gst_gl_shader_set_uniform_2i
+gst_gl_shader_set_uniform_2iv
+gst_gl_shader_set_uniform_3f
+gst_gl_shader_set_uniform_3fv
+gst_gl_shader_set_uniform_3i
+gst_gl_shader_set_uniform_3iv
+gst_gl_shader_set_uniform_4f
+gst_gl_shader_set_uniform_4fv
+gst_gl_shader_set_uniform_4i
+gst_gl_shader_set_uniform_4iv
+gst_gl_shader_set_uniform_matrix_2fv
+gst_gl_shader_set_uniform_matrix_2x3fv
+gst_gl_shader_set_uniform_matrix_2x4fv
+gst_gl_shader_set_uniform_matrix_3fv
+gst_gl_shader_set_uniform_matrix_3x2fv
+gst_gl_shader_set_uniform_matrix_3x4fv
+gst_gl_shader_set_uniform_matrix_4fv
+gst_gl_shader_set_uniform_matrix_4x2fv
+gst_gl_shader_set_uniform_matrix_4x3fv
+gst_gl_shader_get_attribute_location
+gst_gl_shader_bind_attribute_location
+<SUBSECTION Standard>
+GstGLShaderPrivate
+GST_GL_SHADER
+GST_GL_IS_SHADER
+GST_GL_TYPE_SHADER
+gst_gl_shader_get_type
+GST_GL_SHADER_CLASS
+GST_GL_IS_SHADER_CLASS
+GST_GL_SHADER_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gstglupload</FILE>
+GST_GL_UPLOAD_FORMATS
+GST_GL_UPLOAD_VIDEO_CAPS
+<TITLE>GstGLUpload</TITLE>
+GstGLUpload
+gst_gl_upload_new
+gst_gl_upload_init_format
+gst_gl_upload_add_video_gl_texture_upload_meta
+gst_gl_upload_perform_with_data
+gst_gl_upload_perform_with_memory
+gst_gl_upload_perform_with_gl_texture_upload_meta
+gst_gl_upload_perform_with_buffer
+gst_gl_upload_release_buffer
+<SUBSECTION Standard>
+GST_GL_UPLOAD
+GST_GL_UPLOAD_CAST
+GST_GL_UPLOAD_CLASS
+GST_GL_UPLOAD_GET_CLASS
+gst_gl_upload_get_type
+GST_IS_GL_UPLOAD
+GST_IS_GL_UPLOAD_CLASS
+GST_TYPE_GL_UPLOAD
+GstGLUploadPrivate
+</SECTION>
+
+<SECTION>
+<FILE>gstglutils</FILE>
+<TITLE>Utilities</TITLE>
+GLCB
+GLCB_V2
+CRCB
+CDCB
+GstGLDisplayProjection
+gst_gl_ensure_display
+gst_gl_handle_set_context
+gst_gl_handle_context_query
+gst_gl_context_gen_texture
+gst_gl_context_del_texture
+gst_gl_context_gen_fbo
+gst_gl_context_del_fbo
+gst_gl_context_use_fbo
+gst_gl_context_use_fbo_v2
+gst_gl_context_gen_shader
+gst_gl_context_del_shader
+gst_gl_context_check_framebuffer_status
+gst_gl_context_set_error
+gst_gl_context_get_error
+gst_gl_context_clear_shader
+</SECTION>
+
+<SECTION>
+<FILE>gstglwindow</FILE>
+<TITLE>GstGLWindow</TITLE>
+GstGLWindowError
+gst_gl_window_error_quark
+GST_GL_WINDOW_ERROR
+GstGLWindowResizeCB
+GST_GL_WINDOW_RESIZE_CB
+GstGLWindowCB
+GST_GL_WINDOW_CB
+GstGLWindow
+GstGLWindowClass
+gst_gl_window_new
+gst_gl_window_draw
+gst_gl_window_draw_unlocked
+gst_gl_window_is_running
+gst_gl_window_quit
+gst_gl_window_run
+gst_gl_window_get_context
+gst_gl_window_get_display
+gst_gl_window_send_message
+gst_gl_window_send_message_async
+gst_gl_window_set_close_callback
+gst_gl_window_set_draw_callback
+gst_gl_window_set_resize_callback
+gst_gl_window_set_window_handle
+gst_gl_window_get_window_handle
+<SUBSECTION Standard>
+GST_GL_IS_WINDOW
+GST_GL_IS_WINDOW_CLASS
+GST_GL_TYPE_WINDOW
+GST_GL_WINDOW
+GST_GL_WINDOW_CLASS
+GST_GL_WINDOW_GET_CLASS
+gst_gl_window_get_type
+GstGLWindowPrivate
+</SECTION>
+
+<SECTION>
+<FILE>gstglwindowandroid</FILE>
+<TITLE>GstGLWindowAndroid</TITLE>
+GstGLWindowAndroidEGL
+GstGLWindowAndroidEGLClass
+gst_gl_window_android_egl_new
+<SUBSECTION Standard>
+GST_GL_IS_WINDOW_ANDROID_EGL
+GST_GL_IS_WINDOW_ANDROID_EGL_CLASS
+GST_GL_TYPE_WINDOW_ANDROID_EGL
+GST_GL_WINDOW_ANDROID_EGL
+GST_GL_WINDOW_ANDROID_EGL_CLASS
+GST_GL_WINDOW_ANDROID_EGL_GET_CLASS
+gst_gl_window_android_egl_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gstglwindowcocoa</FILE>
+<TITLE>GstGLWindowCocoa</TITLE>
+GstGLWindowCocoa
+GstGLWindowCocoaClass
+gst_gl_window_cocoa_new
+gst_gl_window_cocoa_create_window
+<SUBSECTION Standard>
+GST_GL_IS_WINDOW_COCOA
+GST_GL_IS_WINDOW_COCOA_CLASS
+GST_GL_TYPE_WINDOW_COCOA
+GST_GL_WINDOW_COCOA
+GST_GL_WINDOW_COCOA_CLASS
+GST_GL_WINDOW_COCOA_GET_CLASS
+gst_gl_window_cocoa_get_type
+GstGLWindowCocoaPrivate
+</SECTION>
+
+<SECTION>
+<FILE>gstglwindowdispmanx</FILE>
+<TITLE>GstGLWindowDispmanx</TITLE>
+GstGLWindowDispmanxEGL
+GstGLWindowDispmanxEGLClass
+gst_gl_window_dispmanx_egl_new
+<SUBSECTION Standard>
+GST_GL_IS_WINDOW_DISPMANX_EGL
+GST_GL_IS_WINDOW_DISPMANX_EGL_CLASS
+GST_GL_TYPE_WINDOW_DISPMANX_EGL
+GST_GL_WINDOW_DISPMANX_EGL
+GST_GL_WINDOW_DISPMANX_EGL_CLASS
+GST_GL_WINDOW_DISPMANX_EGL_GET_CLASS
+gst_gl_window_dispmanx_egl_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gstglwindowwayland</FILE>
+<TITLE>GstGLWindowWayland</TITLE>
+GstGLWindowWaylandEGL
+GstGLWindowWaylandEGLClass
+gst_gl_window_wayland_egl_new
+<SUBSECTION Standard>
+GST_GL_IS_WINDOW_WAYLAND_EGL
+GST_GL_IS_WINDOW_WAYLAND_EGL_CLASS
+GST_GL_TYPE_WINDOW_WAYLAND_EGL
+GST_GL_WINDOW_WAYLAND_EGL
+GST_GL_WINDOW_WAYLAND_EGL_CLASS
+GST_GL_WINDOW_WAYLAND_EGL_GET_CLASS
+gst_gl_window_wayland_egl_get_type
+wayland_event_source_new
+</SECTION>
+
+<SECTION>
+<FILE>gstglwindowwin32</FILE>
+<TITLE>GstGLWindowWin32</TITLE>
+GstGLWindowWin32
+GstGLWindowWin32Class
+gst_gl_window_win32_new
+gst_gl_window_win32_create_window
+<SUBSECTION Standard>
+GST_GL_IS_WINDOW_WIN32
+GST_GL_IS_WINDOW_WIN32_CLASS
+GST_GL_TYPE_WINDOW_WIN32
+GST_GL_WINDOW_WIN32
+GST_GL_WINDOW_WIN32_CLASS
+GST_GL_WINDOW_WIN32_GET_CLASS
+gst_gl_window_win32_get_type
+GstGLWindowWin32Private
+</SECTION>
+
+<SECTION>
+<FILE>gstglwindowx11</FILE>
+<TITLE>GstGLWindowX11</TITLE>
+GstGLWindowX11
+GstGLWindowX11Class
+gst_gl_window_x11_new
+gst_gl_window_x11_create_window
+gst_gl_window_x11_trap_x_errors
+gst_gl_window_x11_untrap_x_errors
+<SUBSECTION Standard>
+GST_GL_IS_WINDOW_X11
+GST_GL_IS_WINDOW_X11_CLASS
+GST_GL_TYPE_WINDOW_X11
+GST_GL_WINDOW_X11
+GST_GL_WINDOW_X11_CLASS
+GST_GL_WINDOW_X11_GET_CLASS
+gst_gl_window_x11_get_type
+GstGLWindowX11Private
+x11_event_source_new
+</SECTION>
diff --git a/docs/libs/gst-plugins-bad-libs.types b/docs/libs/gst-plugins-bad-libs.types
index 2d78fac23..4b87dded1 100644
--- a/docs/libs/gst-plugins-bad-libs.types
+++ b/docs/libs/gst-plugins-bad-libs.types
@@ -4,6 +4,7 @@
#include <gst/codecparsers/gstmpegvideoparser.h>
#include <gst/insertbin/gstinsertbin.h>
#include <gst/mpegts/mpegts.h>
+#include <gst/gl/gl.h>
gst_mpegts_section_get_type
gst_mpeg_ts_section_type_get_type
@@ -22,4 +23,16 @@ gst_mpeg_ts_dvb_service_type_get_type
gst_mpeg_ts_stream_type_get_type
-gst_insert_bin_get_type \ No newline at end of file
+gst_insert_bin_get_type
+
+
+gst_gl_upload_get_type
+gst_gl_download_get_type
+gst_gl_display_get_type
+gst_gl_context_get_type
+gst_gl_filter_get_type
+gst_gl_shader_get_type
+gst_gl_mixer_get_type
+gst_gl_buffer_pool_get_type
+gst_gl_allocator_get_type
+gst_gl_window_get_type
diff --git a/ext/Makefile.am b/ext/Makefile.am
index 951d2d512..2c38742b2 100644
--- a/ext/Makefile.am
+++ b/ext/Makefile.am
@@ -82,6 +82,12 @@ else
EGLGLES_DIR=
endif
+if USE_GL
+GL_DIR=gl
+else
+GL_DIR=
+endif
+
if USE_RESINDVD
RESINDVD_DIR = resindvd
else
@@ -154,6 +160,12 @@ else
LIBMMS_DIR=
endif
+if USE_LIBVISUAL
+LIBVISUAL_DIR=libvisual
+else
+LIBVISUAL_DIR=
+endif
+
if USE_MODPLUG
MODPLUG_DIR=modplug
else
@@ -405,6 +417,7 @@ SUBDIRS=\
$(DTS_DIR) \
$(RESINDVD_DIR) \
$(EGLGLES_DIR) \
+ $(GL_DIR) \
$(FAAC_DIR) \
$(FAAD_DIR) \
$(FLITE_DIR) \
@@ -417,6 +430,7 @@ SUBDIRS=\
$(LV2_DIR) \
$(LIBFAME_DIR) \
$(LIBMMS_DIR) \
+ $(LIBVISUAL_DIR) \
$(MODPLUG_DIR) \
$(MPEG2ENC_DIR) \
$(MPG123_DIR) \
@@ -478,6 +492,7 @@ DIST_SUBDIRS = \
daala \
dts \
eglgles \
+ gl \
modplug \
mimic \
mpeg2enc \
diff --git a/gst-libs/gst/Makefile.am b/gst-libs/gst/Makefile.am
index 1d6cc3575..a35710030 100644
--- a/gst-libs/gst/Makefile.am
+++ b/gst-libs/gst/Makefile.am
@@ -2,9 +2,16 @@ if HAVE_EGL
EGL_DIR = egl
endif
+if USE_OPENGL
+GL_DIR = gl
+endif
+if USE_GLES2
+GL_DIR = gl
+endif
+
SUBDIRS = interfaces basecamerabinsrc codecparsers \
- insertbin uridownloader mpegts $(EGL_DIR)
+ insertbin uridownloader mpegts $(EGL_DIR) $(GL_DIR)
noinst_HEADERS = gst-i18n-plugin.h gettext.h glib-compat-private.h
-DIST_SUBDIRS = interfaces egl basecamerabinsrc codecparsers \
+DIST_SUBDIRS = interfaces egl gl basecamerabinsrc codecparsers \
insertbin uridownloader mpegts
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index dc72fed5c..0a1ae0166 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -176,6 +176,14 @@ else
check_shm=
endif
+if USE_GL
+check_gl=libs/gstglcontext \
+ libs/gstglmemory \
+ libs/gstglupload
+else
+check_gl=
+endif
+
VALGRIND_TO_FIX = \
elements/mpeg2enc \
elements/mplex \
@@ -242,6 +250,7 @@ check_PROGRAMS = \
$(check_zbar) \
$(check_orc) \
libs/insertbin \
+ $(check_gl) \
$(EXPERIMENTAL_CHECKS)
noinst_HEADERS = elements/mxfdemux.h
@@ -409,6 +418,33 @@ orc/audiomixer.c: $(top_srcdir)/gst/audiomixer/gstaudiomixerorc.orc
$(MKDIR_P) orc
$(ORCC) --test -o $@ $<
+libs_gstglcontext_LDADD = \
+ $(GST_PLUGINS_BAD_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
+ $(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la
+
+libs_gstglcontext_CFLAGS = \
+ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
+ -DGST_USE_UNSTABLE_API \
+ $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+
+libs_gstglmemory_LDADD = \
+ $(GST_PLUGINS_BAD_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
+ $(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la
+
+libs_gstglmemory_CFLAGS = \
+ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
+ -DGST_USE_UNSTABLE_API \
+ $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+
+libs_gstglupload_CFLAGS = \
+ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
+ -DGST_USE_UNSTABLE_API \
+ $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+
+libs_gstglupload_LDADD = \
+ $(GST_PLUGINS_BAD_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
+ $(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la
+
distclean-local-orc:
rm -rf orc
diff --git a/tests/check/libs/.gitignore b/tests/check/libs/.gitignore
index 6e72e669f..13581fbbf 100644
--- a/tests/check/libs/.gitignore
+++ b/tests/check/libs/.gitignore
@@ -4,3 +4,6 @@ mpegvideoparser
mpegts
vc1parser
insertbin
+gstglcontext
+gstglmemory
+gstglupload