[vlc-devel] [PATCH 3/3] EGL: add the OpenGL ES 2.0 support for android

Adrien Maglo magsoft at videolan.org
Wed Nov 6 22:54:09 CET 2013


---
 modules/video_output/Modules.am | 7 +++++++
 modules/video_output/egl.c      | 9 +++++++++
 modules/video_output/gl.c       | 4 ++--
 modules/video_output/opengl.h   | 3 +++
 4 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/modules/video_output/Modules.am b/modules/video_output/Modules.am
index 3393a11..eb84aa4 100644
--- a/modules/video_output/Modules.am
+++ b/modules/video_output/Modules.am
@@ -182,12 +182,19 @@ endif
 
 ### Android ###
 
+libegl_android_plugin_la_SOURCES = egl.c
+libegl_android_plugin_la_CFLAGS = $(AM_CFLAGS) $(EGL_CFLAGS) -DUSE_PLATFORM_ANDROID=1
+libegl_android_plugin_la_LIBADD = $(EGL_LIBS)
+
 libandroid_native_window_plugin_la_SOURCES = androidnativewindow.c
 libandroid_native_window_plugin_la_CFLAGS = $(AM_CFLAGS)
 libandroid_native_window_plugin_la_LIBADD = -ldl
 
 if HAVE_ANDROID
 vout_LTLIBRARIES += libandroid_native_window_plugin.la
+if HAVE_EGL
+vout_LTLIBRARIES += libegl_android_plugin.la
+endif
 endif
 
 ### Coloured ASCII art ###
diff --git a/modules/video_output/egl.c b/modules/video_output/egl.c
index 58cbece..4db3ee6 100644
--- a/modules/video_output/egl.c
+++ b/modules/video_output/egl.c
@@ -209,6 +209,15 @@ static int Open (vlc_object_t *obj, const struct gl_api *api)
     window.native = wnd->handle.hwnd;
 # endif
 
+#elif defined (USE_PLATFORM_ANDROID)
+    if (wnd->type != VOUT_WINDOW_TYPE_ANDROID_NATIVE_WINDOW)
+        goto error;
+
+# if USE_DEFAULT_PLATFORM
+    sys->display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+    window.native = wnd->handle.anativewindow;
+# endif
+
 #endif
 
     if (sys->display == EGL_NO_DISPLAY)
diff --git a/modules/video_output/gl.c b/modules/video_output/gl.c
index cf7c624..1fa5fd9 100644
--- a/modules/video_output/gl.c
+++ b/modules/video_output/gl.c
@@ -112,8 +112,8 @@ static vout_window_t *MakeWindow (vout_display_t *vd)
 # error Wayland not supported.
 #elif defined(__GBM__)
 # error Glamor not supported.
-#elif defined(ANDROID)
-# error Android not supported.
+#elif defined(__ANDROID__)
+    wnd_cfg.type = VOUT_WINDOW_TYPE_ANDROID_NATIVE_WINDOW;
 #elif defined(__unix__) /* X11 */
     wnd_cfg.type = VOUT_WINDOW_TYPE_XID;
 #else
diff --git a/modules/video_output/opengl.h b/modules/video_output/opengl.h
index b01327e..06cd092 100644
--- a/modules/video_output/opengl.h
+++ b/modules/video_output/opengl.h
@@ -48,6 +48,9 @@
 #  include <OpenGLES/ES2/glext.h>
 # endif
 #else /* !defined (__APPLE__) */
+# ifdef __ANDROID__
+#  define USE_OPENGL_ES 2
+# endif
 # ifndef USE_OPENGL_ES
 #  define USE_OPENGL_ES 0
 # endif
-- 
1.8.1.2




More information about the vlc-devel mailing list