Commit a2937ec2 authored by Felix Paul Kühne's avatar Felix Paul Kühne

Add patches against libvlc

parent 0beff516
From d93255b9e7c661f953e446dfb1f4f63aeb48d192 Mon Sep 17 00:00:00 2001
From: David Geldreich <david.geldreich@free.fr>
Date: Fri, 20 Apr 2012 16:41:19 +0200
Subject: [PATCH 01/10] arm_neon: added function macro to handle the
underscore prefix for the iOS ARM ABI
---
modules/arm_neon/asm.S | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
create mode 100644 modules/arm_neon/asm.S
diff --git a/modules/arm_neon/asm.S b/modules/arm_neon/asm.S
new file mode 100644
index 0000000..d853255
--- /dev/null
+++ b/modules/arm_neon/asm.S
@@ -0,0 +1,49 @@
+@*****************************************************************************
+@ asm.S : defines and macros
+@*****************************************************************************
+@ Copyright (C) 2012 David Geldreich <david.geldreich at free.fr>
+@
+@ This program is free software; you can redistribute it and/or modify
+@ it under the terms of the GNU General Public License as published by
+@ the Free Software Foundation; either version 2 of the License, or
+@ (at your option) any later version.
+@
+@ This program is distributed in the hope that it will be useful,
+@ but WITHOUT ANY WARRANTY; without even the implied warranty of
+@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+@ GNU General Public License for more details.
+@
+@ You should have received a copy of the GNU General Public License
+@ along with this program; if not, write to the Free Software Foundation,
+@ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+@****************************************************************************/
+
+#ifdef __APPLE__
+# define EXTERN_ASM _
+#else
+# define EXTERN_ASM
+#endif
+
+#ifdef __ELF__
+# define ELF
+#else
+# define ELF @
+#endif
+
+.macro function name, export=0
+ .macro endfunc
+ELF .size \name, . - \name
+ .endfunc
+ .purgem endfunc
+ .endm
+ .text
+ .align 2
+ .if \export
+ .global EXTERN_ASM\name
+EXTERN_ASM\name:
+ .endif
+ELF .type \name, %function
+ .func \name
+\name:
+.endm
+
--
1.7.12.4 (Apple Git-37)
From f14f3ae2e751adf56485a18ef9953c9936af6991 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
Date: Fri, 10 Aug 2012 16:01:49 +0200
Subject: [PATCH 02/10] arm_neon: use a macro to fix compilation for iOS
---
modules/arm_neon/amplify.S | 9 +++---
modules/arm_neon/simple_channel_mixer.S | 57 +++++++++++++++------------------
2 files changed, 31 insertions(+), 35 deletions(-)
diff --git a/modules/arm_neon/amplify.S b/modules/arm_neon/amplify.S
index 5938118..578f972 100644
--- a/modules/arm_neon/amplify.S
+++ b/modules/arm_neon/amplify.S
@@ -18,6 +18,8 @@
@ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
@****************************************************************************/
+#include "asm.S"
+
.syntax unified
.arm
.fpu neon
@@ -26,10 +28,8 @@
#define DST r0
#define SRC r1
#define SIZE r2
- .align 2
- .global amplify_float_arm_neon
- .type amplify_float_arm_neon, %function
-amplify_float_arm_neon:
+
+function amplify_float_arm_neon, export=1
cmp SIZE, #0
bxeq lr
#ifdef __ARM_PCS
@@ -79,3 +79,4 @@ amplify_float_arm_neon:
4: vst1.f32 {d20-d21}, [DST,:128]!
5: vst1.f32 {d16-d17}, [DST,:128]!
bx lr
+endfunc
diff --git a/modules/arm_neon/simple_channel_mixer.S b/modules/arm_neon/simple_channel_mixer.S
index dcc51ed..4722be4 100644
--- a/modules/arm_neon/simple_channel_mixer.S
+++ b/modules/arm_neon/simple_channel_mixer.S
@@ -19,6 +19,8 @@
@ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
@****************************************************************************/
+#include "asm.S"
+
.fpu neon
.text
.align 2
@@ -34,9 +36,8 @@ coeff_7to2:
.float 0.5
.float 0.25
.float 0.25
- .global convert_7to2_neon_asm
- .type convert_7to2_neon_asm, %function
-convert_7to2_neon_asm:
+
+function convert_7to2_neon_asm, export=1
push {r4,lr}
adr COEFF, coeff_7to2
@@ -63,16 +64,15 @@ convert_7to2_neon_asm:
bne 0b
pop {r4,pc}
-
+endfunc
coeff_5to2:
.float 0.5
.float 0.5
.float 0.33
.float 0.33
- .global convert_5to2_neon_asm
- .type convert_5to2_neon_asm, %function
-convert_5to2_neon_asm:
+
+function convert_5to2_neon_asm, export=1
push {r4,lr}
adr COEFF, coeff_5to2
@@ -95,14 +95,13 @@ convert_5to2_neon_asm:
bne 0b
pop {r4,pc}
-
+endfunc
coeff_4to2:
.float 0.5
.float 0.5
- .global convert_4to2_neon_asm
- .type convert_4to2_neon_asm, %function
-convert_4to2_neon_asm:
+
+function convert_4to2_neon_asm, export=1
push {r4,lr}
adr COEFF, coeff_4to2
@@ -119,14 +118,13 @@ convert_4to2_neon_asm:
bne 0b
pop {r4,pc}
-
+endfunc
coeff_3to2:
.float 0.5
.float 0.5
- .global convert_3to2_neon_asm
- .type convert_3to2_neon_asm, %function
-convert_3to2_neon_asm:
+
+function convert_3to2_neon_asm, export=1
push {r4,lr}
adr COEFF, coeff_3to2
@@ -147,16 +145,15 @@ convert_3to2_neon_asm:
bne 0b
pop {r4,pc}
-
+endfunc
coeff_7to1:
.float 0.25
.float 0.25
.float 0.125
.float 0.125
- .global convert_7to1_neon_asm
- .type convert_7to1_neon_asm, %function
-convert_7to1_neon_asm:
+
+function convert_7to1_neon_asm, export=1
push {r4,lr}
adr COEFF, coeff_7to1
@@ -181,16 +178,15 @@ convert_7to1_neon_asm:
bne 0b
pop {r4,pc}
-
+endfunc
coeff_5to1:
.float 0.25
.float 0.25
.float 0.16666667
.float 0.16666667
- .global convert_5to1_neon_asm
- .type convert_5to1_neon_asm, %function
-convert_5to1_neon_asm:
+
+function convert_5to1_neon_asm, export=1
push {r4,lr}
adr COEFF, coeff_5to1
@@ -212,16 +208,15 @@ convert_5to1_neon_asm:
bne 0b
pop {r4,pc}
-
+endfunc
coeff_7to4:
.float 0.5
.float 0.5
.float 0.16666667
.float 0.16666667
- .global convert_7to4_neon_asm
- .type convert_7to4_neon_asm, %function
-convert_7to4_neon_asm:
+
+function convert_7to4_neon_asm, export=1
push {r4,lr}
adr COEFF, coeff_7to4
@@ -247,14 +242,13 @@ convert_7to4_neon_asm:
bne 0b
pop {r4,pc}
-
+endfunc
coeff_5to4:
.float 0.5
.float 0.5
- .global convert_5to4_neon_asm
- .type convert_5to4_neon_asm, %function
-convert_5to4_neon_asm:
+
+function convert_5to4_neon_asm, export=1
push {r4,lr}
adr COEFF, coeff_5to4
@@ -277,3 +271,4 @@ convert_5to4_neon_asm:
bne 0b
pop {r4,pc}
+endfunc
--
1.7.12.4 (Apple Git-37)
From 84731850fde69dba7626c5e833cec838b7407677 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
Date: Fri, 10 Aug 2012 16:02:07 +0200
Subject: [PATCH 03/10] deinterlace/merge: use a macro to fix compilation for
iOS
---
modules/video_filter/deinterlace/merge_arm.S | 26 ++++++++++----------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/modules/video_filter/deinterlace/merge_arm.S b/modules/video_filter/deinterlace/merge_arm.S
index dd77902..03e5042 100644
--- a/modules/video_filter/deinterlace/merge_arm.S
+++ b/modules/video_filter/deinterlace/merge_arm.S
@@ -18,6 +18,8 @@
@ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
@****************************************************************************/
+#include "../../arm_neon/asm.S"
+
.syntax unified
.arm
.arch armv6
@@ -29,11 +31,8 @@
#define SRC2 r2
#define SIZE r3
- .align 2
- .global merge8_arm_neon
- .type merge8_arm_neon, %function
@ NOTE: Offset and pitch must be multiple of 16-bytes in VLC.
-merge8_arm_neon:
+function merge8_arm_neon, export=1
cmp SIZE, #64
blo 2f
1:
@@ -70,11 +69,9 @@ merge8_arm_neon:
vhadd.u8 q0, q0, q8
vst1.u8 {q0}, [DEST,:128]!
bx lr
+endfunc
- .align 2
- .global merge16_arm_neon
- .type merge16_arm_neon, %function
-merge16_arm_neon:
+function merge16_arm_neon, export=1
cmp SIZE, #64
blo 2f
1:
@@ -111,11 +108,9 @@ merge16_arm_neon:
vhadd.u16 q0, q0, q8
vst1.u16 {q0}, [DEST,:128]!
bx lr
+endfunc
- .align 2
- .global merge8_armv6
- .type merge8_armv6, %function
-merge8_armv6:
+function merge8_armv6, export=1
push {r4-r9,lr}
1:
pld [SRC1, #64]
@@ -133,11 +128,9 @@ merge8_armv6:
stm DEST!, {r6-r7}
popeq {r4-r9,pc}
b 1b
+endfunc
- .align 2
- .global merge16_armv6
- .type merge16_armv6, %function
-merge16_armv6:
+function merge16_armv6, export=1
push {r4-r9,lr}
1:
pld [SRC1, #64]
@@ -155,3 +148,4 @@ merge16_armv6:
stm DEST!, {r6-r7}
popeq {r4-r9,pc}
b 1b
+endfunc
--
1.7.12.4 (Apple Git-37)
From b75f05262d588dd6d7c9a43cfa7f6cc910ebc062 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
Date: Fri, 10 Aug 2012 16:02:33 +0200
Subject: [PATCH 04/10] deinterlace: added a hack to work-around a libtool bug
---
modules/video_filter/Modules.am | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/modules/video_filter/Modules.am b/modules/video_filter/Modules.am
index 7e500f1..d44908e 100644
--- a/modules/video_filter/Modules.am
+++ b/modules/video_filter/Modules.am
@@ -1,3 +1,7 @@
+# When using a specific AS tool instead of gcc libtool goes mad
+# without this. (This is the case with iOS).
+LIBTOOL=@LIBTOOL@ --tag=CC
+
SOURCES_mosaic = mosaic.c mosaic.h
SOURCES_transform = transform.c
SOURCES_invert = invert.c
--
1.7.12.4 (Apple Git-37)
From d2660459eea1c67a1aa243c7ff86bcc887b9ff34 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
Date: Sat, 11 Aug 2012 13:29:25 +0200
Subject: [PATCH 05/10] contrib/ebml+mkv: compile with hidden symbols on iOS
---
contrib/src/ebml/rules.mak | 6 ++++--
contrib/src/matroska/rules.mak | 6 +++++-
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/contrib/src/ebml/rules.mak b/contrib/src/ebml/rules.mak
index 3708b33..f4f01c7 100644
--- a/contrib/src/ebml/rules.mak
+++ b/contrib/src/ebml/rules.mak
@@ -16,8 +16,10 @@ libebml: libebml-$(EBML_VERSION).tar.bz2 .sum-ebml
$(MOVE)
# libebml requires exceptions
-EBML_EXTRA_FLAGS = CXXFLAGS="${CXXFLAGS} -fexceptions" \
- CPPFLAGS=""
+EBML_EXTRA_FLAGS = CXXFLAGS="${CXXFLAGS} -fexceptions" CPPFLAGS=""
+ifdef HAVE_IOS
+EBML_EXTRA_FLAGS += " -fvisibility=hidden"
+endif
.ebml: libebml
ifdef HAVE_WIN32
diff --git a/contrib/src/matroska/rules.mak b/contrib/src/matroska/rules.mak
index 62ecf0d..cfd6a2e 100644
--- a/contrib/src/matroska/rules.mak
+++ b/contrib/src/matroska/rules.mak
@@ -18,11 +18,15 @@ libmatroska: libmatroska-$(MATROSKA_VERSION).tar.bz2 .sum-matroska
$(APPLY) $(SRC)/matroska/no-ansi.patch
$(MOVE)
+ifdef HAVE_IOS
+MATROSKA_EXTRA_FLAGS = CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
+endif
+
.matroska: libmatroska
ifdef HAVE_WIN32
cd $< && $(MAKE) -C make/mingw32 prefix="$(PREFIX)" $(HOSTVARS) SHARED=no EBML_DLL=no libmatroska.a
else
- cd $< && $(MAKE) -C make/linux prefix="$(PREFIX)" $(HOSTVARS) staticlib
+ cd $< && $(MAKE) -C make/linux prefix="$(PREFIX)" $(HOSTVARS) $(MATROSKA_EXTRA_FLAGS) staticlib
endif
cd $< && $(MAKE) -C make/linux install_staticlib install_headers prefix="$(PREFIX)" $(HOSTVARS)
$(RANLIB) "$(PREFIX)/lib/libmatroska.a"
--
1.7.12.4 (Apple Git-37)
From 4dc4c72304446e736a0e209f2fcc180331bb724a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
Date: Thu, 13 Sep 2012 01:36:39 +0200
Subject: [PATCH 06/10] contrib/ebml: fix CXXFLAG visibility hack
---
contrib/src/ebml/rules.mak | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/contrib/src/ebml/rules.mak b/contrib/src/ebml/rules.mak
index f4f01c7..862553c 100644
--- a/contrib/src/ebml/rules.mak
+++ b/contrib/src/ebml/rules.mak
@@ -16,9 +16,10 @@ libebml: libebml-$(EBML_VERSION).tar.bz2 .sum-ebml
$(MOVE)
# libebml requires exceptions
-EBML_EXTRA_FLAGS = CXXFLAGS="${CXXFLAGS} -fexceptions" CPPFLAGS=""
ifdef HAVE_IOS
-EBML_EXTRA_FLAGS += " -fvisibility=hidden"
+EBML_EXTRA_FLAGS = CXXFLAGS="${CXXFLAGS} -fexceptions -fvisibility=hidden" CPPFLAGS=""
+else
+EBML_EXTRA_FLAGS = CXXFLAGS="${CXXFLAGS} -fexceptions" CPPFLAGS=""
endif
.ebml: libebml
--
1.7.12.4 (Apple Git-37)
From 55bf6943338a9d6c9e7bf9e381ee18eea3b8566a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
Date: Wed, 26 Sep 2012 19:23:24 +0200
Subject: [PATCH 07/10] vout_ios: respond to HUD visiblity changes by adapting
the layout accordingly
---
modules/video_output/ios.m | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/modules/video_output/ios.m b/modules/video_output/ios.m
index b513911..53c8216 100644
--- a/modules/video_output/ios.m
+++ b/modules/video_output/ios.m
@@ -344,12 +344,15 @@ static void OpenglSwap(vlc_gl_t *gl)
_framebufferDirty = NO;
[self setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(toggleHUDmode:) name:@"VLCHUDModeChanged" object:nil];
}
return self;
}
- (void) dealloc
{
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
[_context release];
[super dealloc];
}
@@ -365,6 +368,14 @@ static void OpenglSwap(vlc_gl_t *gl)
}
}
+/**
+ * gets called when the status bar resizes
+ */
+- (void)toggleHUDmode:(NSNotification *)aNotification
+{
+ [self layoutSubviews];
+}
+
/**
* Method called by UIKit when we have been resized
--
1.7.12.4 (Apple Git-37)
From 5fd96f258ad64fb72618207acc231c458865f7cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
Date: Thu, 18 Oct 2012 18:38:17 +0200
Subject: [PATCH 08/10] posix/thread: add a hack to work-around crashes when
using the buggy iOS 6 runtime
---
src/posix/thread.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/posix/thread.c b/src/posix/thread.c
index 514f592..6a95bb0 100644
--- a/src/posix/thread.c
+++ b/src/posix/thread.c
@@ -355,6 +355,18 @@ void vlc_cond_init_daytime (vlc_cond_t *p_condvar)
void vlc_cond_destroy (vlc_cond_t *p_condvar)
{
int val = pthread_cond_destroy( p_condvar );
+
+#ifdef __APPLE__
+ if (val != 0) {
+ printf("pthread_cond_destroy returned %i\n", val);
+
+ if (val == EBUSY) {
+ printf("this is a EBUSY!\n");
+ return;
+ }
+ }
+#endif
+
VLC_THREAD_ASSERT ("destroying condition");
}
--
1.7.12.4 (Apple Git-37)
From 57c4882b2ea519e1857a69c382ed892b904b7d03 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
Date: Mon, 18 Feb 2013 20:18:01 -0800
Subject: [PATCH 09/10] new OpenGL ES2 video output module for iOS
partially derived from the Mac vout code
---
configure.ac | 12 +
extras/package/ios/build.sh | 1 +
modules/video_output/Modules.am | 1 +
modules/video_output/ios2.m | 504 ++++++++++++++++++++++++++++++++++++++++
4 files changed, 518 insertions(+)
create mode 100644 modules/video_output/ios2.m
diff --git a/configure.ac b/configure.ac
index c9666e5..b36390e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3171,6 +3171,18 @@ then
fi
dnl
+dnl iOS ES2 vout module
+dnl
+AC_ARG_ENABLE(ios-vout2,
+ [ --enable-ios-vout2 iOS video output module (default disabled)])
+if test "${enable_ios_vout2}" = "yes"
+then
+ VLC_ADD_PLUGIN([vout_ios2])
+ VLC_ADD_LIBS([vout_ios2], [-Wl,-framework,OpenGLES,-framework,QuartzCore,-framework,UIKit])
+fi
+
+
+dnl
dnl Windows DirectX module
dnl
diff --git a/extras/package/ios/build.sh b/extras/package/ios/build.sh
index 3b26155..d666ec6 100755
--- a/extras/package/ios/build.sh
+++ b/extras/package/ios/build.sh
@@ -264,6 +264,7 @@ ${VLCROOT}/configure \
--disable-macosx-vlc-app \
--enable-audioqueue \
--enable-ios-vout \
+ --enable-ios-vout2 \
--disable-shared \
--disable-macosx-quartztext \
--enable-avcodec \
diff --git a/modules/video_output/Modules.am b/modules/video_output/Modules.am
index aa05454..40be7e7 100644
--- a/modules/video_output/Modules.am
+++ b/modules/video_output/Modules.am
@@ -8,6 +8,7 @@ SOURCES_vmem = vmem.c
SOURCES_yuv = yuv.c
SOURCES_vout_macosx = macosx.m opengl.h opengl.c
SOURCES_vout_ios = ios.m opengl.h opengl.c
+SOURCES_vout_ios2 = ios2.m opengl.h opengl.c
SOURCES_android_surface = androidsurface.c
if HAVE_DECKLINK
diff --git a/modules/video_output/ios2.m b/modules/video_output/ios2.m
new file mode 100644
index 0000000..9238055
--- /dev/null
+++ b/modules/video_output/ios2.m
@@ -0,0 +1,504 @@
+/*****************************************************************************
+ * ios2.m: iOS OpenGL ES 2 provider
+ *****************************************************************************
+ * Copyright (C) 2001-2013 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Derk-Jan Hartman <hartman at videolan dot org>
+ * Eric Petit <titer@m0k.org>
+ * Benjamin Pracht <bigben at videolan dot org>
+ * Damien Fouilleul <damienf at videolan dot org>
+ * Pierre d'Herbemont <pdherbemont at videolan dot org>
+ * Felix Paul Kühne <fkuehne at videolan dot org>
+ * David Fuhrmann <david dot fuhrmann at googlemail dot com>
+ * Rémi Denis-Courmont
+ * Juho Vähä-Herttua <juhovh at iki dot fi>
+ * Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Preamble
+ *****************************************************************************/
+
+#import <UIKit/UIKit.h>
+#import <OpenGLES/EAGL.h>
+#import <OpenGLES/ES2/gl.h>
+#import <QuartzCore/QuartzCore.h>
+#import <dlfcn.h>
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+#include <vlc_plugin.h>
+#include <vlc_vout_display.h>
+#include <vlc_opengl.h>
+#include <vlc_dialog.h>
+#include "opengl.h"
+
+/**
+ * Forward declarations
+ */
+static int Open (vlc_object_t *);
+static void Close (vlc_object_t *);
+
+static picture_pool_t* PicturePool(vout_display_t *vd, unsigned requested_count);
+static void PictureRender(vout_display_t* vd, picture_t *pic, subpicture_t *subpicture);
+static void PictureDisplay(vout_display_t* vd, picture_t *pic, subpicture_t *subpicture);
+static int Control(vout_display_t* vd, int query, va_list ap);
+
+static void *OurGetProcAddress(vlc_gl_t *, const char *);
+
+static int OpenglESClean(vlc_gl_t* gl);
+static void OpenglESSwap(vlc_gl_t* gl);
+
+/**
+ * Module declaration
+ */
+vlc_module_begin ()
+ set_shortname ("iOS vout")
+ set_description (N_("iOS OpenGL video output"))
+ set_category (CAT_VIDEO)
+ set_subcategory (SUBCAT_VIDEO_VOUT)
+ set_capability ("vout display", 300)
+ set_callbacks (Open, Close)
+
+ add_shortcut ("vout_ios2")
+vlc_module_end ()
+
+@interface VLCOpenGLES2VideoView : UIView
+{
+ vout_display_t *_voutDisplay;
+ EAGLContext *_eaglContext;
+ GLuint _renderBuffer;