eglglessink: Add configure parameter to chose the EGL window system

Only needed for creating native windows.
This commit is contained in:
Sebastian Dröge 2012-12-27 10:51:02 +01:00
parent 0304518d1d
commit 31a3ef2f82
3 changed files with 81 additions and 34 deletions

View file

@ -1588,38 +1588,90 @@ AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
]) ])
dnl *** eglgles *** dnl *** eglgles ***
AC_ARG_WITH([egl-window-system],
AS_HELP_STRING([--with-egl-window-system],[EGL window system to use (x11, mali-fb, none)]),
[EGL_WINDOW_SYSTEM="$withval"],
[EGL_WINDOW_SYSTEM="none"])
translit(dnm, m, l) AM_CONDITIONAL(USE_EGLGLES, true) translit(dnm, m, l) AM_CONDITIONAL(USE_EGLGLES, true)
AG_GST_CHECK_FEATURE(EGLGLES, [eglgles sink], eglgles, [ AG_GST_CHECK_FEATURE(EGLGLES, [eglgles sink], eglgles, [
HAVE_EGLGLES="no" HAVE_EGLGLES="no"
PKG_CHECK_MODULES(EGLGLES, egl glesv2, HAVE_EGLGLES="yes", [
HAVE_EGLGLES="no" case "$EGL_WINDOW_SYSTEM" in
old_LIBS=$LIBS x11|none)
old_CFLAGS=$CFLAGS PKG_CHECK_MODULES(EGLGLES, egl glesv2, HAVE_EGLGLES="yes", [
AC_CHECK_LIB([GLESv2], [glEnable], HAVE_EGLGLES="no"
[ old_LIBS=$LIBS
AC_CHECK_HEADER([GLES2/gl2.h], old_CFLAGS=$CFLAGS
AC_CHECK_LIB([GLESv2], [glEnable],
[ [
AC_CHECK_LIB([EGL], [eglGetProcAddress], AC_CHECK_HEADER([GLES2/gl2.h],
[ [
AC_CHECK_HEADER([EGL/egl.h], AC_CHECK_LIB([EGL], [eglGetProcAddress],
[ [
HAVE_EGLGLES="yes" AC_CHECK_HEADER([EGL/egl.h],
EGLGLES_LIBS="-lGLESv2 -lEGL" [
EGLGLES_CFLAGS="" HAVE_EGLGLES="yes"
EGLGLES_LIBS="-lGLESv2 -lEGL"
EGLGLES_CFLAGS=""
])
]) ])
]) ])
]) ])
LIBS=$old_LIBS
CFLAGS=$old_CFLAGS
]) ])
LIBS=$old_LIBS
CFLAGS=$old_CFLAGS if test x"$HAVE_EGLGLES" = x"yes" -a x"$EGL_WINDOW_SYSTEM" = x"x11"; then
]) if test x"$HAVE_X11" != x"yes"; then
AC_MSG_ERROR([libX11 not found and is required for EGL X11 window system])
else
AC_DEFINE(USE_EGL_X11, [1], [Use X11 EGL window system])
EGLGLES_CFLAGS="$EGLGLES_CFLAGS $X11_CFLAGS"
EGLGLES_LIBS="$EGLGLES_LIBS $X11_LIBS"
fi
fi
;;
mali-fb)
HAVE_EGLGLES="no"
AC_CHECK_HEADER([EGL/fbdev_window.h],
[
old_LIBS=$LIBS
old_CFLAGS=$CFLAGS
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_EGLGLES="yes"
EGLGLES_LIBS="-lGLESv2 -lEGL -lMali -lUMP"
EGLGLES_CFLAGS=""
AC_DEFINE(USE_EGL_MALI_FB, [1], [Use Mali FB EGL window system])
])
])
])
])
])
LIBS=$old_LIBS
CFLAGS=$old_CFLAGS
])
;;
*)
AC_MSG_ERROR([invalid EGL window system specified])
;;
esac
AC_SUBST(EGLGLES_CFLAGS) AC_SUBST(EGLGLES_CFLAGS)
AC_SUBST(EGLGLES_LIBS) AC_SUBST(EGLGLES_LIBS)
AC_CHECK_HEADER([EGL/fbdev_window.h], HAVE_FBDEV_EGL="yes", HAVE_FBDEV_EGL="no")
if test x"$HAVE_FBDEV_EGL" = "xyes"; then
AC_DEFINE(HAVE_FBDEV_EGL, [1], [Have EGL/fbdev_window.h])
fi
]) ])
dnl *** timidity *** dnl *** timidity ***

View file

@ -5,11 +5,10 @@ libgsteglglessink_la_SOURCES = gsteglglessink.c video_platform_wrapper.c
libgsteglglessink_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \ libgsteglglessink_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
$(GST_BASE_CFLAGS) \ $(GST_BASE_CFLAGS) \
$(GST_CFLAGS) \ $(GST_CFLAGS) \
$(EGLGLES_CFLAGS) \ $(EGLGLES_CFLAGS)
$(X11_CFLAGS)
libgsteglglessink_la_LIBADD = $(GST_LIBS) $(GST_BASE_LIBS) \ libgsteglglessink_la_LIBADD = $(GST_LIBS) $(GST_BASE_LIBS) \
$(GST_PLUGINS_BASE_LIBS) $(EGLGLES_LIBS) $(X11_LIBS) \ $(GST_PLUGINS_BASE_LIBS) $(EGLGLES_LIBS) \
-lgstvideo-$(GST_API_VERSION) -lgstvideo-$(GST_API_VERSION)
libgsteglglessink_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgsteglglessink_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)

View file

@ -55,14 +55,6 @@
#include <gst/gst.h> #include <gst/gst.h>
#include "video_platform_wrapper.h" #include "video_platform_wrapper.h"
#ifdef HAVE_X11
#include <X11/Xlib.h>
#endif
#ifdef HAVE_FBDEV_EGL
#include <EGL/fbdev_window.h>
#endif
GST_DEBUG_CATEGORY_STATIC (eglgles_platform_wrapper); GST_DEBUG_CATEGORY_STATIC (eglgles_platform_wrapper);
#define GST_CAT_DEFAULT eglgles_platform_wrapper #define GST_CAT_DEFAULT eglgles_platform_wrapper
@ -76,7 +68,9 @@ platform_wrapper_init (void)
return TRUE; return TRUE;
} }
#ifdef HAVE_X11 #ifdef USE_EGL_X11
#include <X11/Xlib.h>
typedef struct typedef struct
{ {
Display *display; Display *display;
@ -126,7 +120,9 @@ platform_destroy_native_window (EGLNativeDisplayType display,
} }
#endif #endif
#if defined(HAVE_FBDEV_EGL) && !defined(HAVE_X11) #ifdef USE_EGL_MALI_FB
#include <EGL/fbdev_window.h>
EGLNativeWindowType EGLNativeWindowType
platform_create_native_window (gint width, gint height, gpointer * window_data) platform_create_native_window (gint width, gint height, gpointer * window_data)
{ {
@ -148,7 +144,7 @@ platform_destroy_native_window (EGLNativeDisplayType display,
} }
#endif #endif
#if !defined(HAVE_X11) && !defined(HAVE_FBDEV_EGL) #if !defined(USE_EGL_X11) && !defined(USE_EGL_MALI_FB)
/* Dummy functions for creating a native Window */ /* Dummy functions for creating a native Window */
EGLNativeWindowType EGLNativeWindowType
platform_create_native_window (gint width, gint height, gpointer * window_data) platform_create_native_window (gint width, gint height, gpointer * window_data)