Selaa lähdekoodia

mobile ports: update patches

Felix Paul Kühne 8 vuotta sitten
vanhempi
commit
f30f5e3d89
20 muutettua tiedostoa jossa 94 lisäystä ja 930 poistoa
  1. 4 4
      Resources/MobileVLCKit/patches/0001-arm_neon-added-function-macro-to-handle-the-undersco.patch
  2. 4 4
      Resources/MobileVLCKit/patches/0002-deinterlace-merge-use-a-macro-to-fix-compilation-for.patch
  3. 4 4
      Resources/MobileVLCKit/patches/0003-lib-media-player-inherit-deinterlace-variable-to-ach.patch
  4. 4 4
      Resources/MobileVLCKit/patches/0004-arm_neon-work-around-libtool-issue.patch
  5. 5 5
      Resources/MobileVLCKit/patches/0005-arm_neon-fix-iOS-linking.patch
  6. 4 4
      Resources/MobileVLCKit/patches/0006-disable-neon-volume-plugin.patch
  7. 4 4
      Resources/MobileVLCKit/patches/0008-libvlc-create-VT-zero-copy-variable.patch
  8. 0 317
      Resources/MobileVLCKit/patches/0007-libvlc-expose-a-base-set-of-freetype-options-to-over.patch
  9. 5 5
      Resources/MobileVLCKit/patches/0009-contrib-gcrypt-work-around-a-libtool-limitation.patch
  10. 5 5
      Resources/MobileVLCKit/patches/0010-contrib-gcrypt-fix-tvOS-compilation.patch
  11. 4 4
      Resources/MobileVLCKit/patches/0011-contrib-avcodec-enforce-use-of-FFmpeg.patch
  12. 5 5
      Resources/MobileVLCKit/patches/0012-Enable-System-DL.patch
  13. 5 5
      Resources/MobileVLCKit/patches/0013-taglib-DO-NOT-PUSH-works-with-networks-accesses.patch
  14. 5 5
      Resources/MobileVLCKit/patches/0014-contrib-gcrypt-update-patches.patch
  15. 5 5
      Resources/MobileVLCKit/patches/0015-deinterlace-merge-arm64-fix-linking-on-appleOS.patch
  16. 6 6
      Resources/MobileVLCKit/patches/0018-http-add-vlc_http_cookies_clear.patch
  17. 0 519
      Resources/MobileVLCKit/patches/0016-ios2-vout-add-subpicture-rendering-in-the-zero-copy-.patch
  18. 5 5
      Resources/MobileVLCKit/patches/0019-videotoolbox-temporarily-disable-H263-decoding-on-iO.patch
  19. 9 9
      Resources/MobileVLCKit/patches/0020-Add-AC-3-pass-through.patch
  20. 11 11
      Resources/MobileVLCKit/patches/0017-libvlc_media-add-cookie_jar-API.patch

+ 4 - 4
Resources/MobileVLCKit/patches/0001-arm_neon-added-function-macro-to-handle-the-undersco.patch

@@ -1,7 +1,7 @@
-From 53365c2f3ac0941b9bf23a667b013f904f141a5d Mon Sep 17 00:00:00 2001
+From ead43633414ea373aeb63f7f0c2c0c27c379f43d 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/20] arm_neon: added function macro to handle the underscore
+Subject: [PATCH 01/18] arm_neon: added function macro to handle the underscore
  prefix for the iOS ARM ABI
 
 ---
@@ -11,7 +11,7 @@ Subject: [PATCH 01/20] arm_neon: added function macro to handle the underscore
 
 diff --git a/modules/arm_neon/asm.S b/modules/arm_neon/asm.S
 new file mode 100644
-index 0000000..d853255
+index 0000000000..d853255fec
 --- /dev/null
 +++ b/modules/arm_neon/asm.S
 @@ -0,0 +1,49 @@
@@ -65,5 +65,5 @@ index 0000000..d853255
 +.endm
 +
 -- 
-2.9.3
+2.11.0
 

+ 4 - 4
Resources/MobileVLCKit/patches/0002-deinterlace-merge-use-a-macro-to-fix-compilation-for.patch

@@ -1,7 +1,7 @@
-From 4cf215ca65d9167a32449a2fe35c98d5c87021bf Mon Sep 17 00:00:00 2001
+From 5a8c0f0ec931c78e5794d681aed1dbefa87cbfbd 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 02/20] deinterlace/merge: use a macro to fix compilation for
+Subject: [PATCH 02/18] deinterlace/merge: use a macro to fix compilation for
  iOS
 
 ---
@@ -9,7 +9,7 @@ Subject: [PATCH 02/20] deinterlace/merge: use a macro to fix compilation for
  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
+index dd779029ae..03e5042b28 100644
 --- a/modules/video_filter/deinterlace/merge_arm.S
 +++ b/modules/video_filter/deinterlace/merge_arm.S
 @@ -18,6 +18,8 @@
@@ -82,5 +82,5 @@ index dd77902..03e5042 100644
  	b		1b
 +endfunc
 -- 
-2.9.3
+2.11.0
 

+ 4 - 4
Resources/MobileVLCKit/patches/0003-lib-media-player-inherit-deinterlace-variable-to-ach.patch

@@ -1,7 +1,7 @@
-From 360931e098edf051fdb714ae56381ca3662ea368 Mon Sep 17 00:00:00 2001
+From c3da29d9eea7fb19d50a4d40f0a544681b874ab8 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
 Date: Tue, 9 Dec 2014 22:14:55 +0100
-Subject: [PATCH 03/20] lib/media player: inherit deinterlace variable to
+Subject: [PATCH 03/18] lib/media player: inherit deinterlace variable to
  achieve correct value on first use
 
 ---
@@ -9,7 +9,7 @@ Subject: [PATCH 03/20] lib/media player: inherit deinterlace variable to
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/lib/media_player.c b/lib/media_player.c
-index ba7554c..74a4f85 100644
+index ba7554c092..74a4f85931 100644
 --- a/lib/media_player.c
 +++ b/lib/media_player.c
 @@ -644,7 +644,7 @@ libvlc_media_player_new( libvlc_instance_t *instance )
@@ -22,5 +22,5 @@ index ba7554c..74a4f85 100644
  
      var_Create (mp, "vbi-page", VLC_VAR_INTEGER);
 -- 
-2.9.3
+2.11.0
 

+ 4 - 4
Resources/MobileVLCKit/patches/0004-arm_neon-work-around-libtool-issue.patch

@@ -1,14 +1,14 @@
-From 8e9175d91ef79c36e7dfc4f4dfe87bb76feb70f6 Mon Sep 17 00:00:00 2001
+From 5d5d9e312506476d339f6e4341487622c932ea53 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
 Date: Thu, 18 Dec 2014 22:14:55 +0100
-Subject: [PATCH 04/20] arm_neon: work-around libtool issue
+Subject: [PATCH 04/18] arm_neon: work-around libtool issue
 
 ---
  modules/arm_neon/Makefile.am | 2 ++
  1 file changed, 2 insertions(+)
 
 diff --git a/modules/arm_neon/Makefile.am b/modules/arm_neon/Makefile.am
-index db81ec0..e67e07e 100644
+index db81ec0b84..e67e07e61c 100644
 --- a/modules/arm_neon/Makefile.am
 +++ b/modules/arm_neon/Makefile.am
 @@ -1,3 +1,5 @@
@@ -18,5 +18,5 @@ index db81ec0..e67e07e 100644
  
  libchroma_yuv_neon_plugin_la_SOURCES = \
 -- 
-2.9.3
+2.11.0
 

+ 5 - 5
Resources/MobileVLCKit/patches/0005-arm_neon-fix-iOS-linking.patch

@@ -1,7 +1,7 @@
-From 54e426acdccda0ac8b4286ff57c6ad9fa8985681 Mon Sep 17 00:00:00 2001
+From 0b10852388890e9f7e2710d62ecee5e1f6dfb27c Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
 Date: Wed, 10 Dec 2014 22:14:55 +0100
-Subject: [PATCH 05/20] arm_neon: fix iOS linking
+Subject: [PATCH 05/18] arm_neon: fix iOS linking
 
 ---
  modules/arm_neon/amplify.S              |  7 ++---
@@ -9,7 +9,7 @@ Subject: [PATCH 05/20] arm_neon: fix iOS linking
  2 files changed, 22 insertions(+), 31 deletions(-)
 
 diff --git a/modules/arm_neon/amplify.S b/modules/arm_neon/amplify.S
-index 5938118..42f0d00 100644
+index 5938118378..42f0d004d8 100644
 --- a/modules/arm_neon/amplify.S
 +++ b/modules/arm_neon/amplify.S
 @@ -18,6 +18,8 @@
@@ -38,7 +38,7 @@ index 5938118..42f0d00 100644
  	bx		lr
 +endfunc
 diff --git a/modules/arm_neon/simple_channel_mixer.S b/modules/arm_neon/simple_channel_mixer.S
-index a94ae85..54b43a7 100644
+index a94ae8539f..54b43a79e3 100644
 --- a/modules/arm_neon/simple_channel_mixer.S
 +++ b/modules/arm_neon/simple_channel_mixer.S
 @@ -19,6 +19,8 @@
@@ -194,5 +194,5 @@ index a94ae85..54b43a7 100644
  	pop {r4,pc}
 +endfunc
 -- 
-2.9.3
+2.11.0
 

+ 4 - 4
Resources/MobileVLCKit/patches/0006-disable-neon-volume-plugin.patch

@@ -1,14 +1,14 @@
-From 12e8f25559d0230035fe738a0d1e47d3714b344a Mon Sep 17 00:00:00 2001
+From db520c218ae86a9e18e52530852ded1b3c17d458 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
 Date: Wed, 10 Dec 2014 22:14:55 +0100
-Subject: [PATCH 06/20] disable neon volume plugin
+Subject: [PATCH 06/18] disable neon volume plugin
 
 ---
  modules/arm_neon/Makefile.am | 1 -
  1 file changed, 1 deletion(-)
 
 diff --git a/modules/arm_neon/Makefile.am b/modules/arm_neon/Makefile.am
-index e67e07e..6909752 100644
+index e67e07e61c..690975235f 100644
 --- a/modules/arm_neon/Makefile.am
 +++ b/modules/arm_neon/Makefile.am
 @@ -27,6 +27,5 @@ libyuv_rgb_neon_plugin_LIBTOOLFLAGS = --tag=CC
@@ -19,5 +19,5 @@ index e67e07e..6909752 100644
  	libyuv_rgb_neon_plugin.la
  endif
 -- 
-2.9.3
+2.11.0
 

+ 4 - 4
Resources/MobileVLCKit/patches/0008-libvlc-create-VT-zero-copy-variable.patch

@@ -1,14 +1,14 @@
-From 84f01e73780cbd9ef42370c4b4ab089397e1a640 Mon Sep 17 00:00:00 2001
+From cdc023edd53a04f5192682fa7763f8b7a8372b05 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
 Date: Wed, 4 May 2016 16:00:40 +0200
-Subject: [PATCH 08/20] libvlc: create VT-zero-copy variable
+Subject: [PATCH 07/18] libvlc: create VT-zero-copy variable
 
 ---
  lib/media_player.c | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/lib/media_player.c b/lib/media_player.c
-index 3f95c27..930190c 100644
+index 74a4f85931..717a3c479a 100644
 --- a/lib/media_player.c
 +++ b/lib/media_player.c
 @@ -626,6 +626,7 @@ libvlc_media_player_new( libvlc_instance_t *instance )
@@ -20,5 +20,5 @@ index 3f95c27..930190c 100644
  #ifdef __ANDROID__
      var_Create (mp, "drawable-androidwindow", VLC_VAR_ADDRESS);
 -- 
-2.9.3
+2.11.0
 

+ 0 - 317
Resources/MobileVLCKit/patches/0007-libvlc-expose-a-base-set-of-freetype-options-to-over.patch

@@ -1,318 +0,0 @@
-From 2cff9f0db83a1f0fbde9e4ac73cc05e5b700944b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
-Date: Mon, 23 Nov 2015 16:09:24 +0100
-Subject: [PATCH 07/20] libvlc: expose a base set of freetype options to
- overwrite the default font
-
----
- include/vlc/libvlc_media_player.h         | 26 ++++++++++++
- lib/libvlc.sym                            |  6 +++
- lib/media_player.c                        |  6 +++
- lib/video.c                               | 68 ++++++++++++++++++++++++++++++-
- modules/text_renderer/freetype/freetype.c | 59 +++++++++++++++++++++++++--
- modules/text_renderer/freetype/freetype.h |  2 +
- 6 files changed, 163 insertions(+), 4 deletions(-)
-
-diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h
-index b6e697e..8cfb8a2 100644
---- a/include/vlc/libvlc_media_player.h
-+++ b/include/vlc/libvlc_media_player.h
-@@ -1569,6 +1569,32 @@ LIBVLC_API float libvlc_video_get_adjust_float( libvlc_media_player_t *p_mi,
- LIBVLC_API void libvlc_video_set_adjust_float( libvlc_media_player_t *p_mi,
-                                                    unsigned option, float value );
- 
-+enum libvlc_video_textrenderer_option_t {
-+    libvlc_textrender_font = 0,
-+    libvlc_textrender_fontsize,
-+    libvlc_textrender_fontcolor,
-+    libvlc_textrender_fontforcebold,
-+};
-+
-+LIBVLC_API bool libvlc_video_get_textrenderer_bool( libvlc_media_player_t *p_mi,
-+                                                    unsigned option );
-+
-+LIBVLC_API void libvlc_video_set_textrenderer_bool( libvlc_media_player_t *p_mi,
-+                                                    unsigned option, bool value );
-+
-+LIBVLC_API int libvlc_video_get_textrenderer_int( libvlc_media_player_t *p_mi,
-+                                                  unsigned option );
-+
-+LIBVLC_API void libvlc_video_set_textrenderer_int( libvlc_media_player_t *p_mi,
-+                                                   unsigned option, int value );
-+
-+LIBVLC_API char *libvlc_video_get_textrenderer_string( libvlc_media_player_t *p_mi,
-+                                                       unsigned option );
-+
-+LIBVLC_API void libvlc_video_set_textrenderer_string( libvlc_media_player_t *p_mi,
-+                                                      unsigned option,
-+                                                      const char *psz_text );
-+
- /** @} video */
- 
- /** \defgroup libvlc_audio LibVLC audio controls
-diff --git a/lib/libvlc.sym b/lib/libvlc.sym
-index caa5598..5262ebc 100644
---- a/lib/libvlc.sym
-+++ b/lib/libvlc.sym
-@@ -257,6 +257,9 @@ libvlc_video_get_spu_count
- libvlc_video_get_spu_delay
- libvlc_video_get_spu_description
- libvlc_video_get_teletext
-+libvlc_video_get_textrenderer_bool
-+libvlc_video_get_textrenderer_int
-+libvlc_video_get_textrenderer_string
- libvlc_video_get_title_description
- libvlc_video_get_track
- libvlc_video_get_track_count
-@@ -281,6 +284,9 @@ libvlc_video_set_spu
- libvlc_video_set_spu_delay
- libvlc_video_set_subtitle_file
- libvlc_video_set_teletext
-+libvlc_video_set_textrenderer_bool
-+libvlc_video_set_textrenderer_int
-+libvlc_video_set_textrenderer_string
- libvlc_video_set_track
- libvlc_video_take_snapshot
- libvlc_video_new_viewpoint
-diff --git a/lib/media_player.c b/lib/media_player.c
-index 74a4f85..3f95c27 100644
---- a/lib/media_player.c
-+++ b/lib/media_player.c
-@@ -674,6 +674,12 @@ libvlc_media_player_new( libvlc_instance_t *instance )
-     var_Create (mp, "saturation", VLC_VAR_FLOAT | VLC_VAR_DOINHERIT);
-     var_Create (mp, "gamma", VLC_VAR_FLOAT | VLC_VAR_DOINHERIT);
- 
-+    /* SPU */
-+    var_Create (mp, "freetype-font", VLC_VAR_STRING | VLC_VAR_DOINHERIT);
-+    var_Create (mp, "freetype-rel-fontsize", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT);
-+    var_Create (mp, "freetype-color", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT);
-+    var_Create (mp, "freetype-bold", VLC_VAR_BOOL | VLC_VAR_DOINHERIT);
-+
-      /* Audio */
-     var_Create (mp, "aout", VLC_VAR_STRING | VLC_VAR_DOINHERIT);
-     var_Create (mp, "audio-device", VLC_VAR_STRING);
-diff --git a/lib/video.c b/lib/video.c
-index 46f9935..b7638b3 100644
---- a/lib/video.c
-+++ b/lib/video.c
-@@ -676,7 +676,7 @@ static bool find_sub_source_by_name( libvlc_media_player_t *p_mi, const char *re
- }
- 
- typedef const struct {
--    const char name[20];
-+    const char name[25];
-     unsigned type;
- } opt_t;
- 
-@@ -705,6 +705,9 @@ set_int( libvlc_media_player_t *p_mi, const char *restrict name,
-         case VLC_VAR_FLOAT:
-             var_SetFloat( p_mi, opt->name, value );
-             break;
-+        case VLC_VAR_BOOL:
-+            var_SetBool( p_mi, opt->name, value );
-+            break;
-         default:
-             libvlc_printerr( "Invalid argument to %s in %s", name, "set int" );
-             return;
-@@ -728,6 +731,8 @@ get_int( libvlc_media_player_t *p_mi, const char *restrict name,
-         return var_GetInteger(p_mi, opt->name);
-     case VLC_VAR_FLOAT:
-         return lroundf(var_GetFloat(p_mi, opt->name));
-+    case VLC_VAR_BOOL:
-+        return var_GetBool(p_mi, opt->name);
-     default:
-         libvlc_printerr( "Invalid argument to %s in %s", name, "get int" );
-         return 0;
-@@ -951,3 +956,64 @@ float libvlc_video_get_adjust_float( libvlc_media_player_t *p_mi,
- {
-     return get_float( p_mi, "adjust", adjust_option_bynumber(option) );
- }
-+
-+static const opt_t *
-+textrenderer_option_bynumber( unsigned option )
-+{
-+    static const opt_t optlist[] =
-+    {
-+    { "freetype-font",            VLC_VAR_STRING },
-+    { "freetype-rel-fontsize",    VLC_VAR_INTEGER },
-+    { "freetype-color",           VLC_VAR_INTEGER },
-+    { "freetype-bold",            VLC_VAR_BOOL },
-+    };
-+    enum { num_opts = sizeof(optlist) / sizeof(*optlist) };
-+
-+    const opt_t *r = option < num_opts ? optlist+option : NULL;
-+    if( !r )
-+        libvlc_printerr( "Unknown freetype option" );
-+    return r;
-+}
-+
-+/* basic text renderer support */
-+
-+void libvlc_video_set_textrenderer_bool( libvlc_media_player_t *p_mi,
-+                                        unsigned option, bool value )
-+{
-+    set_int( p_mi, "freetype", textrenderer_option_bynumber(option), value );
-+}
-+
-+
-+bool libvlc_video_get_textrenderer_bool( libvlc_media_player_t *p_mi,
-+                                         unsigned option )
-+{
-+    return get_int( p_mi, "freetype", textrenderer_option_bynumber(option) );
-+}
-+
-+
-+void libvlc_video_set_textrenderer_int( libvlc_media_player_t *p_mi,
-+                                       unsigned option, int value )
-+{
-+    set_int( p_mi, "freetype", textrenderer_option_bynumber(option), value );
-+}
-+
-+
-+int libvlc_video_get_textrenderer_int( libvlc_media_player_t *p_mi,
-+                                      unsigned option )
-+{
-+    return get_int( p_mi, "freetype", textrenderer_option_bynumber(option) );
-+}
-+
-+
-+void libvlc_video_set_textrenderer_string( libvlc_media_player_t *p_mi,
-+                                          unsigned option, const char *psz_value )
-+{
-+    set_string( p_mi, "freetype", textrenderer_option_bynumber(option), psz_value );
-+}
-+
-+
-+char * libvlc_video_get_textrenderer_string( libvlc_media_player_t *p_mi,
-+                                            unsigned option )
-+{
-+    return get_string( p_mi, "freetype", textrenderer_option_bynumber(option) );
-+}
-diff --git a/modules/text_renderer/freetype/freetype.c b/modules/text_renderer/freetype/freetype.c
-index 6baf45f..25c9650 100644
---- a/modules/text_renderer/freetype/freetype.c
-+++ b/modules/text_renderer/freetype/freetype.c
-@@ -78,6 +78,9 @@
-  *****************************************************************************/
- static int  Create ( vlc_object_t * );
- static void Destroy( vlc_object_t * );
-+static int DefaultFontStyleCallback( vlc_object_t *p_this, char const *psz_var,
-+                                     vlc_value_t oldval, vlc_value_t newval,
-+                                     void *p_data );
- 
- #define FONT_TEXT N_("Font")
- #define MONOSPACE_FONT_TEXT N_("Monospace Font")
-@@ -930,7 +933,7 @@ static void FillDefaultStyles( filter_t *p_filter )
- {
-     filter_sys_t *p_sys = p_filter->p_sys;
- 
--    p_sys->p_default_style->psz_fontname = var_InheritString( p_filter, "freetype-font" );
-+    p_sys->p_default_style->psz_fontname = var_CreateGetString( p_filter, "freetype-font" );
-     p_sys->p_default_style->psz_monofontname = var_InheritString( p_filter, "freetype-monofont" );
- 
-     p_sys->p_default_style->i_font_alpha = var_InheritInteger( p_filter,"freetype-opacity" );
-@@ -938,6 +941,8 @@ static void FillDefaultStyles( filter_t *p_filter )
-     p_sys->p_default_style->i_font_color = var_InheritInteger( p_filter,"freetype-color" );
-     p_sys->p_default_style->i_font_color = VLC_CLIP( p_sys->p_default_style->i_font_color, 0, 0xFFFFFF );
- 
-+    p_sys->p_default_style->i_font_color = VLC_CLIP(var_CreateGetIntegerCommand( p_filter, "freetype-color") , 0, 0xFFFFFF);
-+
-     p_sys->p_default_style->i_outline_alpha = var_InheritInteger( p_filter, "freetype-outline-opacity" );
-     p_sys->p_default_style->i_outline_alpha = VLC_CLIP( p_sys->p_default_style->i_outline_alpha, 0, 255 );
-     p_sys->p_default_style->i_outline_color = var_InheritInteger( p_filter, "freetype-outline-color" );
-@@ -953,11 +958,11 @@ static void FillDefaultStyles( filter_t *p_filter )
-     p_sys->p_default_style->i_features |= STYLE_HAS_FLAGS;
- 
-     p_sys->p_forced_style->i_font_size = var_InheritInteger( p_filter, "freetype-fontsize" );
--    p_sys->p_forced_style->f_font_relsize = var_InheritInteger( p_filter, "freetype-rel-fontsize" );
-+    p_sys->p_forced_style->f_font_relsize = var_CreateGetIntegerCommand( p_filter, "freetype-rel-fontsize" );
-     if( p_sys->p_forced_style->f_font_relsize )
-         p_sys->p_forced_style->f_font_relsize = 1.0 / p_sys->p_forced_style->f_font_relsize;
- 
--    if( var_InheritBool( p_filter, "freetype-bold" ) )
-+    if( var_CreateGetBoolCommand( p_filter, "freetype-bold" ) )
-     {
-         p_sys->p_forced_style->i_style_flags |= STYLE_BOLD;
-         p_sys->p_forced_style->i_features |= STYLE_HAS_FLAGS;
-@@ -965,6 +970,12 @@ static void FillDefaultStyles( filter_t *p_filter )
- 
-     /* Apply forced styles to defaults, if any */
-     text_style_Merge( p_sys->p_default_style, p_sys->p_forced_style, true );
-+
-+    vlc_mutex_init( &p_sys->lock );
-+    var_AddCallback( p_filter, "freetype-font", DefaultFontStyleCallback, p_sys );
-+    var_AddCallback( p_filter, "freetype-rel-fontsize", DefaultFontStyleCallback, p_sys );
-+    var_AddCallback( p_filter, "freetype-color", DefaultFontStyleCallback, p_sys );
-+    var_AddCallback( p_filter, "freetype-bold", DefaultFontStyleCallback, p_sys );
- }
- 
- static void FreeStylesArray( text_style_t **pp_styles, size_t i_styles )
-@@ -1327,6 +1338,17 @@ static void Destroy( vlc_object_t *p_this )
-     DumpDictionary( p_filter, &p_sys->fallback_map, true, -1 );
- #endif
- 
-+    var_DelCallback( p_filter, "freetype-font", DefaultFontStyleCallback, p_sys );
-+    var_DelCallback( p_filter, "freetype-rel-fontsize", DefaultFontStyleCallback, p_sys );
-+    var_DelCallback( p_filter, "freetype-color", DefaultFontStyleCallback, p_sys );
-+    var_DelCallback( p_filter, "freetype-bold", DefaultFontStyleCallback, p_sys );
-+    vlc_mutex_destroy( &p_sys->lock );
-+
-+    var_Destroy( p_filter, "freetype-font" ) ;
-+    var_Destroy( p_filter, "freetype-rel-fontsize" );
-+    var_Destroy( p_filter, "freetype-color" );
-+    var_Destroy( p_filter, "freetype-bold" );
-+
-     /* Attachments */
-     if( p_sys->pp_font_attachments )
-     {
-@@ -1356,3 +1378,34 @@ static void Destroy( vlc_object_t *p_this )
-     free( p_sys );
- }
- 
-+static int DefaultFontStyleCallback( vlc_object_t *p_this, char const *psz_var,
-+                                     vlc_value_t oldval, vlc_value_t newval,
-+                                     void *p_data )
-+{
-+    VLC_UNUSED(oldval);
-+    filter_t *p_filter = (filter_t *)p_this;
-+    filter_sys_t *p_sys = (filter_sys_t *)p_data;
-+
-+    vlc_mutex_lock( &p_sys->lock );
-+    if( !strcmp( psz_var, "freetype-font" ) ) {
-+        FREENULL( p_sys->p_default_style->psz_fontname );
-+        p_sys->p_default_style->psz_fontname = strdup( newval.psz_string );
-+    } else  if( !strcmp( psz_var, "freetype-rel-fontsize" ) ) {
-+        p_sys->p_forced_style->f_font_relsize = 1.0 / newval.i_int;
-+    } else if( !strcmp( psz_var, "freetype-color" ) )
-+        p_sys->p_default_style->i_font_color = VLC_CLIP(newval.i_int, 0, 0xFFFFFF);
-+    else if ( !strcmp( psz_var, "freetype-bold" ) )
-+    {
-+        if (newval.b_bool) {
-+            p_sys->p_forced_style->i_style_flags |= STYLE_BOLD;
-+            p_sys->p_forced_style->i_features |= STYLE_HAS_FLAGS;
-+        } else {
-+            p_sys->p_forced_style->i_style_flags &= ~STYLE_BOLD;
-+            p_sys->p_forced_style->i_features &= ~STYLE_HAS_FLAGS;
-+        }
-+    }
-+    text_style_Merge( p_sys->p_default_style, p_sys->p_forced_style, true );
-+    vlc_mutex_unlock( &p_sys->lock );
-+
-+    return VLC_SUCCESS;
-+}
-diff --git a/modules/text_renderer/freetype/freetype.h b/modules/text_renderer/freetype/freetype.h
-index 44b2731..7f1abec 100644
---- a/modules/text_renderer/freetype/freetype.h
-+++ b/modules/text_renderer/freetype/freetype.h
-@@ -137,6 +137,8 @@ struct filter_sys_t
-      */
-     vlc_family_t * (*pf_get_fallbacks) ( filter_t *p_filter, const char *psz_family,
-                                          uni_char_t codepoint );
-+
-+    vlc_mutex_t       lock;
- };
- 
- /**
-2.9.3
-

+ 5 - 5
Resources/MobileVLCKit/patches/0009-contrib-gcrypt-work-around-a-libtool-limitation.patch

@@ -1,7 +1,7 @@
-From c0a6f13a5d0f8f789f0e422747f3132e669fb419 Mon Sep 17 00:00:00 2001
+From 9d07fe39d10252146c5960310b9c37b405106fc6 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
 Date: Sun, 7 Dec 2014 20:02:18 +0100
-Subject: [PATCH 09/20] contrib/gcrypt: work-around a libtool limitation
+Subject: [PATCH 08/18] contrib/gcrypt: work-around a libtool limitation
 
 ---
  contrib/src/gcrypt/rules.mak                       |  1 +
@@ -10,7 +10,7 @@ Subject: [PATCH 09/20] contrib/gcrypt: work-around a libtool limitation
  create mode 100644 contrib/src/gcrypt/work-around-libtool-limitation.patch
 
 diff --git a/contrib/src/gcrypt/rules.mak b/contrib/src/gcrypt/rules.mak
-index 291f0fc..1484e7a 100644
+index 291f0fc1b5..1484e7ab82 100644
 --- a/contrib/src/gcrypt/rules.mak
 +++ b/contrib/src/gcrypt/rules.mak
 @@ -12,6 +12,7 @@ $(TARBALLS)/libgcrypt-$(GCRYPT_VERSION).tar.bz2:
@@ -23,7 +23,7 @@ index 291f0fc..1484e7a 100644
  endif
 diff --git a/contrib/src/gcrypt/work-around-libtool-limitation.patch b/contrib/src/gcrypt/work-around-libtool-limitation.patch
 new file mode 100644
-index 0000000..df97ffb
+index 0000000000..df97ffb488
 --- /dev/null
 +++ b/contrib/src/gcrypt/work-around-libtool-limitation.patch
 @@ -0,0 +1,25 @@
@@ -53,5 +53,5 @@ index 0000000..df97ffb
 + AM_CFLAGS = $(GPG_ERROR_CFLAGS)
 + 
 -- 
-2.9.3
+2.11.0
 

+ 5 - 5
Resources/MobileVLCKit/patches/0010-contrib-gcrypt-fix-tvOS-compilation.patch

@@ -1,7 +1,7 @@
-From d8657cec34dc2b98203c6336b435fa911af35821 Mon Sep 17 00:00:00 2001
+From 41cf168528b175dd1d36d44d99e322438ee9d0af Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
 Date: Sat, 3 Oct 2015 22:45:14 +0200
-Subject: [PATCH 10/20] contrib/gcrypt: fix tvOS compilation
+Subject: [PATCH 09/18] contrib/gcrypt: fix tvOS compilation
 
 ---
  contrib/src/gcrypt/fix-sha1-ssse3-for-clang.patch | 16 ++++++++++++++++
@@ -11,7 +11,7 @@ Subject: [PATCH 10/20] contrib/gcrypt: fix tvOS compilation
 
 diff --git a/contrib/src/gcrypt/fix-sha1-ssse3-for-clang.patch b/contrib/src/gcrypt/fix-sha1-ssse3-for-clang.patch
 new file mode 100644
-index 0000000..f1d3ccc
+index 0000000000..f1d3ccc71f
 --- /dev/null
 +++ b/contrib/src/gcrypt/fix-sha1-ssse3-for-clang.patch
 @@ -0,0 +1,16 @@
@@ -32,7 +32,7 @@ index 0000000..f1d3ccc
 +    *	%rdi: ctx, CTX
 +    *	%rsi: data (64 bytes)
 diff --git a/contrib/src/gcrypt/rules.mak b/contrib/src/gcrypt/rules.mak
-index 1484e7a..200a98e 100644
+index 1484e7ab82..200a98e828 100644
 --- a/contrib/src/gcrypt/rules.mak
 +++ b/contrib/src/gcrypt/rules.mak
 @@ -13,6 +13,7 @@ libgcrypt: libgcrypt-$(GCRYPT_VERSION).tar.bz2 .sum-gcrypt
@@ -56,5 +56,5 @@ index 1484e7a..200a98e 100644
  GCRYPT_CONF += --disable-aesni-support
  else
 -- 
-2.9.3
+2.11.0
 

+ 4 - 4
Resources/MobileVLCKit/patches/0011-contrib-avcodec-enforce-use-of-FFmpeg.patch

@@ -1,14 +1,14 @@
-From 43ef715ca8baacd21e7ffdf94bd3b9835068d4f4 Mon Sep 17 00:00:00 2001
+From 2bbe420d27d5821f3542c0a5a240d79b1a5a40fc Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
 Date: Tue, 12 Jul 2016 13:50:54 +0200
-Subject: [PATCH 11/20] contrib/avcodec: enforce use of FFmpeg
+Subject: [PATCH 10/18] contrib/avcodec: enforce use of FFmpeg
 
 ---
  contrib/src/ffmpeg/rules.mak | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/contrib/src/ffmpeg/rules.mak b/contrib/src/ffmpeg/rules.mak
-index 367bc49..e23727e 100644
+index 367bc49868..e23727e2c9 100644
 --- a/contrib/src/ffmpeg/rules.mak
 +++ b/contrib/src/ffmpeg/rules.mak
 @@ -2,10 +2,10 @@
@@ -25,5 +25,5 @@ index 367bc49..e23727e 100644
  FFMPEG_GITURL := http://git.videolan.org/git/ffmpeg.git
  else
 -- 
-2.9.3
+2.11.0
 

+ 5 - 5
Resources/MobileVLCKit/patches/0012-Enable-System-DL.patch

@@ -1,7 +1,7 @@
-From 630accc5503268dffe35de63e88844d0b3e69abb Mon Sep 17 00:00:00 2001
+From bf9ea5d948f1d22ccdfdb9ba0e40e13d032fdfd9 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
 Date: Fri, 22 Jul 2016 11:11:44 +0200
-Subject: [PATCH 12/20] Enable System DL
+Subject: [PATCH 11/18] Enable System DL
 
 ---
  contrib/src/ffmpeg/patch-as-patch-can.patch | 20 ++++++++++++++++++++
@@ -11,7 +11,7 @@ Subject: [PATCH 12/20] Enable System DL
 
 diff --git a/contrib/src/ffmpeg/patch-as-patch-can.patch b/contrib/src/ffmpeg/patch-as-patch-can.patch
 new file mode 100644
-index 0000000..2d60cf7
+index 0000000000..2d60cf7140
 --- /dev/null
 +++ b/contrib/src/ffmpeg/patch-as-patch-can.patch
 @@ -0,0 +1,20 @@
@@ -36,7 +36,7 @@ index 0000000..2d60cf7
 +         in_format.mSampleRate = avctx->sample_rate ? avctx->sample_rate : 44100;
 +         in_format.mChannelsPerFrame = avctx->channels ? avctx->channels : 1;
 diff --git a/contrib/src/ffmpeg/rules.mak b/contrib/src/ffmpeg/rules.mak
-index e23727e..ae32c97 100644
+index e23727e2c9..ae32c97616 100644
 --- a/contrib/src/ffmpeg/rules.mak
 +++ b/contrib/src/ffmpeg/rules.mak
 @@ -22,6 +22,9 @@ FFMPEGCONF = \
@@ -58,5 +58,5 @@ index e23727e..ae32c97 100644
  
  .ffmpeg: ffmpeg
 -- 
-2.9.3
+2.11.0
 

+ 5 - 5
Resources/MobileVLCKit/patches/0013-taglib-DO-NOT-PUSH-works-with-networks-accesses.patch

@@ -1,14 +1,14 @@
-From 235b41c105c36a878c16df03c4a2596141170aaf Mon Sep 17 00:00:00 2001
+From d07d0d03f37befc233320f8b525d1406c363d712 Mon Sep 17 00:00:00 2001
 From: Thomas Guillem <thomas@gllm.fr>
 Date: Fri, 22 Jul 2016 11:20:24 +0200
-Subject: [PATCH 13/20] taglib: DO NOT PUSH: works with networks accesses
+Subject: [PATCH 12/18] taglib: DO NOT PUSH: works with networks accesses
 
 ---
  modules/meta_engine/taglib.cpp | 15 ++++-----------
  1 file changed, 4 insertions(+), 11 deletions(-)
 
 diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp
-index 6d051ba..ea3744d 100644
+index 6d051ba1ea..ea3744da29 100644
 --- a/modules/meta_engine/taglib.cpp
 +++ b/modules/meta_engine/taglib.cpp
 @@ -174,7 +174,7 @@ public:
@@ -35,7 +35,7 @@ index 6d051ba..ea3744d 100644
 -
 -    stream_t *p_stream = vlc_access_NewMRL( p_this, psz_uri );
 +#if TAGLIB_VERSION >= TAGLIB_VERSION_1_11
-+    stream_t *p_stream = vlc_stream_NewMRL( p_this, psz_uri );
++    stream_t *p_stream = vlc_stream_NewURL( p_this, psz_uri );
      free( psz_uri );
      if( p_stream == NULL )
          return VLC_EGENERIC;
@@ -48,5 +48,5 @@ index 6d051ba..ea3744d 100644
      if( psz_path == NULL )
          return VLC_EGENERIC;
 -- 
-2.9.3
+2.11.0
 

+ 5 - 5
Resources/MobileVLCKit/patches/0014-contrib-gcrypt-update-patches.patch

@@ -1,7 +1,7 @@
-From 5ebc4cdb39eee4935187daa636b6f4665598f6dd Mon Sep 17 00:00:00 2001
+From 34eaa903fb769554f715336c4a3a3714dafefc76 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
 Date: Mon, 12 Sep 2016 17:03:37 +0200
-Subject: [PATCH 14/20] contrib/gcrypt: update patches
+Subject: [PATCH 13/18] contrib/gcrypt: update patches
 
 ---
  contrib/src/gcrypt/fix-sha1-ssse3-for-clang.patch  | 308 ++++++++++++++++++++-
@@ -9,7 +9,7 @@ Subject: [PATCH 14/20] contrib/gcrypt: update patches
  2 files changed, 310 insertions(+), 14 deletions(-)
 
 diff --git a/contrib/src/gcrypt/fix-sha1-ssse3-for-clang.patch b/contrib/src/gcrypt/fix-sha1-ssse3-for-clang.patch
-index f1d3ccc..21d7a30 100644
+index f1d3ccc71f..21d7a30c8d 100644
 --- a/contrib/src/gcrypt/fix-sha1-ssse3-for-clang.patch
 +++ b/contrib/src/gcrypt/fix-sha1-ssse3-for-clang.patch
 @@ -1,16 +1,312 @@
@@ -332,7 +332,7 @@ index f1d3ccc..21d7a30 100644
 -    *	%rsi: data (64 bytes)
 +    *	%rsi: data (64*nblks bytes)
 diff --git a/contrib/src/gcrypt/work-around-libtool-limitation.patch b/contrib/src/gcrypt/work-around-libtool-limitation.patch
-index df97ffb..957f268 100644
+index df97ffb488..957f268ad2 100644
 --- a/contrib/src/gcrypt/work-around-libtool-limitation.patch
 +++ b/contrib/src/gcrypt/work-around-libtool-limitation.patch
 @@ -1,18 +1,18 @@
@@ -363,5 +363,5 @@ index df97ffb..957f268 100644
   
   # Need to include ../src in addition to top_srcdir because gcrypt.h is
 -- 
-2.9.3
+2.11.0
 

+ 5 - 5
Resources/MobileVLCKit/patches/0015-deinterlace-merge-arm64-fix-linking-on-appleOS.patch

@@ -1,7 +1,7 @@
-From e89831988f1374431fb2664b022d7959f5892ae3 Mon Sep 17 00:00:00 2001
+From 2d383e912ac079d6c1128e550d487e79019ec7fb Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
 Date: Mon, 12 Sep 2016 17:04:05 +0200
-Subject: [PATCH 15/20] deinterlace-merge-arm64: fix linking on appleOS
+Subject: [PATCH 14/18] deinterlace-merge-arm64: fix linking on appleOS
 
 ---
  modules/arm_neon/asm64.S                       | 46 ++++++++++++++++++++++++++
@@ -11,7 +11,7 @@ Subject: [PATCH 15/20] deinterlace-merge-arm64: fix linking on appleOS
 
 diff --git a/modules/arm_neon/asm64.S b/modules/arm_neon/asm64.S
 new file mode 100644
-index 0000000..d778163
+index 0000000000..d77816312b
 --- /dev/null
 +++ b/modules/arm_neon/asm64.S
 @@ -0,0 +1,46 @@
@@ -62,7 +62,7 @@ index 0000000..d778163
 +.endm
 +
 diff --git a/modules/video_filter/deinterlace/merge_arm64.S b/modules/video_filter/deinterlace/merge_arm64.S
-index db19e54..63c04d3 100644
+index db19e54caf..63c04d3fdd 100644
 --- a/modules/video_filter/deinterlace/merge_arm64.S
 +++ b/modules/video_filter/deinterlace/merge_arm64.S
 @@ -19,6 +19,8 @@
@@ -107,5 +107,5 @@ index db19e54..63c04d3 100644
  	ret
 +endfunc
 -- 
-2.9.3
+2.11.0
 

+ 6 - 6
Resources/MobileVLCKit/patches/0018-http-add-vlc_http_cookies_clear.patch

@@ -1,7 +1,7 @@
-From 6e5087b16018730fe0360729346aaa03a15cfd11 Mon Sep 17 00:00:00 2001
+From 386845e5d0d706621a7b892df1f3099f036c5dd1 Mon Sep 17 00:00:00 2001
 From: Thomas Guillem <thomas@gllm.fr>
 Date: Fri, 16 Sep 2016 15:51:10 +0200
-Subject: [PATCH 18/20] http: add vlc_http_cookies_clear
+Subject: [PATCH 15/18] http: add vlc_http_cookies_clear
 
 Clear all cookies without deleting the jar.
 ---
@@ -11,7 +11,7 @@ Clear all cookies without deleting the jar.
  3 files changed, 8 insertions(+), 4 deletions(-)
 
 diff --git a/include/vlc_http.h b/include/vlc_http.h
-index ed7e161..da1fe4e 100644
+index ed7e1613da..da1fe4ef1a 100644
 --- a/include/vlc_http.h
 +++ b/include/vlc_http.h
 @@ -71,6 +71,7 @@ VLC_API char *vlc_http_auth_FormatAuthorizationHeader
@@ -23,7 +23,7 @@ index ed7e161..da1fe4e 100644
  
  /**
 diff --git a/src/libvlccore.sym b/src/libvlccore.sym
-index d967523..71623f3 100644
+index 7b9657a4b1..ec8f04c534 100644
 --- a/src/libvlccore.sym
 +++ b/src/libvlccore.sym
 @@ -136,6 +136,7 @@ vlc_http_auth_ParseAuthenticationInfoHeader
@@ -35,7 +35,7 @@ index d967523..71623f3 100644
  vlc_http_cookies_fetch
  httpd_ClientIP
 diff --git a/src/misc/httpcookies.c b/src/misc/httpcookies.c
-index b6d174b..2090f69 100644
+index b6d174b3da..2090f697fb 100644
 --- a/src/misc/httpcookies.c
 +++ b/src/misc/httpcookies.c
 @@ -281,18 +281,20 @@ vlc_http_cookie_jar_t * vlc_http_cookies_new(void)
@@ -64,5 +64,5 @@ index b6d174b..2090f69 100644
  }
  
 -- 
-2.9.3
+2.11.0
 

+ 0 - 519
Resources/MobileVLCKit/patches/0016-ios2-vout-add-subpicture-rendering-in-the-zero-copy-.patch

@@ -1,520 +0,0 @@
-From d9ef45d56d22bfef27ec8dc6895d4701b41cfa0b Mon Sep 17 00:00:00 2001
-From: Adrien Maglo <magsoft@videolan.org>
-Date: Fri, 16 Sep 2016 14:00:21 +0200
-Subject: [PATCH 16/20] ios2 vout: add subpicture rendering in the zero copy
- pipeline
-
----
- modules/video_output/ios2.m | 338 +++++++++++++++++++++++++++++++++++++++-----
- 1 file changed, 304 insertions(+), 34 deletions(-)
-
-diff --git a/modules/video_output/ios2.m b/modules/video_output/ios2.m
-index e91c624..6a8c4f5 100644
---- a/modules/video_output/ios2.m
-+++ b/modules/video_output/ios2.m
-@@ -46,6 +46,7 @@
- #import <vlc_vout_display.h>
- #import <vlc_opengl.h>
- #import <vlc_dialog.h>
-+#import <vlc_memory.h>
- #import "opengl.h"
- 
- /**
-@@ -110,6 +111,20 @@ static NSString *const fragmentShaderString = @" \
-  } \
- ";
- 
-+static NSString *const fragmentShaderRGBAString = @" \
-+varying highp vec2 texCoordVarying; \
-+precision mediump float; \
-+\
-+uniform sampler2D Texture; \
-+uniform vec4 FillColor; \
-+\
-+void main() \
-+{ \
-+    gl_FragColor = texture2D(Texture, texCoordVarying) * FillColor; \
-+} \
-+";
-+
-+
- static NSString *const vertexShaderString = @" \
-  attribute vec4 position; \
-  attribute vec2 texCoord; \
-@@ -139,7 +154,7 @@ static void OpenglESSwap(vlc_gl_t *);
- 
- static picture_pool_t *ZeroCopyPicturePool(vout_display_t *, unsigned);
- static void DestroyZeroCopyPoolPicture(picture_t *);
--static void ZeroCopyClean(vout_display_t *vd, picture_t *pic, subpicture_t *subpicture);
-+static void ZeroCopyPrepare(vout_display_t *vd, picture_t *pic, subpicture_t *subpicture);
- static void ZeroCopyDisplay(vout_display_t *, picture_t *, subpicture_t *);
- 
- /**
-@@ -178,6 +193,7 @@ vlc_module_end ()
- @property (readonly) EAGLContext* eaglContext;
- @property (readonly) BOOL isAppActive;
- @property GLuint shaderProgram;
-+@property GLuint shaderProgramSubpictures;
- 
- - (id)initWithFrame:(CGRect)frame zeroCopy:(bool)zero_copy voutDisplay:(vout_display_t *)vd;
- 
-@@ -191,6 +207,24 @@ vlc_module_end ()
- - (void)displayPixelBuffer:(CVPixelBufferRef)pixelBuffer;
- @end
- 
-+typedef struct {
-+    GLuint   texture;
-+    unsigned format;
-+    unsigned type;
-+    unsigned width;
-+    unsigned height;
-+
-+    float    alpha;
-+
-+    float    top;
-+    float    left;
-+    float    bottom;
-+    float    right;
-+
-+    float    tex_width;
-+    float    tex_height;
-+} gl_region_t;
-+
- struct vout_display_sys_t
- {
-     VLCOpenGLES2VideoView *glESView;
-@@ -205,8 +239,22 @@ struct vout_display_sys_t
-     bool zero_copy;
- 
-     vout_display_place_t place;
-+
-+    // Subpicture
-+    int region_count;
-+    gl_region_t *region;
-+
-+    uint8_t *texture_temp_buf;
-+    int      texture_temp_buf_size;
- };
- 
-+static inline int GetAlignedSize(unsigned size)
-+{
-+    /* Return the smallest larger or equal power of 2 */
-+    unsigned align = 1 << (8 * sizeof (unsigned) - clz(size));
-+    return ((align >> 1) == size) ? size : align;
-+}
-+
- static void *OurGetProcAddress(vlc_gl_t *gl, const char *name)
- {
-     VLC_UNUSED(gl);
-@@ -284,7 +332,7 @@ static int Open(vlc_object_t *this)
- 
-         if (sys->zero_copy) {
-             vd->pool = ZeroCopyPicturePool;
--            vd->prepare = ZeroCopyClean;
-+            vd->prepare = ZeroCopyPrepare;
-             vd->display = ZeroCopyDisplay;
-         } else {
-             vd->pool = PicturePool;
-@@ -328,6 +376,15 @@ void Close (vlc_object_t *this)
-     vout_display_sys_t *sys = vd->sys;
- 
-     @autoreleasepool {
-+        glDeleteProgram(sys->glESView.shaderProgram);
-+        glDeleteProgram(sys->glESView.shaderProgramSubpictures);
-+
-+        for (int i = 0; i < sys->region_count; i++) {
-+            if (sys->region[i].texture)
-+                glDeleteTextures(1, &sys->region[i].texture);
-+        }
-+        free(sys->region);
-+
-         if (sys->tapRecognizer) {
-             [sys->tapRecognizer.view removeGestureRecognizer:sys->tapRecognizer];
-             [sys->tapRecognizer release];
-@@ -359,7 +416,8 @@ void Close (vlc_object_t *this)
-                 picture_pool_Release(sys->picturePool);
-             sys->picturePool = NULL;
-         }
--        
-+
-+        free(sys->texture_temp_buf);
-         free(sys);
-     }
- }
-@@ -561,11 +619,154 @@ static void DestroyZeroCopyPoolPicture(picture_t *picture)
-     free(picture);
- }
- 
--static void ZeroCopyClean(vout_display_t *vd, picture_t *pic, subpicture_t *subpicture)
-+#define ALIGN(x, y) (((x) + ((y) - 1)) & ~((y) - 1))
-+static void Upload(vout_display_sys_t *sys,
-+                   int in_width, int in_height,
-+                   int in_full_width, int in_full_height,
-+                   int w_num, int w_den, int h_num, int h_den,
-+                   int pitch, int pixel_pitch,
-+                   int full_upload, const uint8_t *pixels,
-+                   int tex_target, int tex_format, int tex_type)
-+{
-+    int width       =       in_width * w_num / w_den;
-+    int full_width  =  in_full_width * w_num / w_den;
-+    int height      =      in_height * h_num / h_den;
-+    int full_height = in_full_height * h_num / h_den;
-+    // This unpack alignment is the default, but setting it just in case.
-+    glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
-+
-+    int dst_width = full_upload ? full_width : width;
-+    int dst_pitch = ALIGN(dst_width * pixel_pitch, 4);
-+    if ( pitch != dst_pitch )
-+    {
-+        int buf_size = dst_pitch * full_height * pixel_pitch;
-+        const uint8_t *source = pixels;
-+        uint8_t *destination;
-+        if( !sys->texture_temp_buf || sys->texture_temp_buf_size < buf_size )
-+        {
-+            free( sys->texture_temp_buf );
-+            sys->texture_temp_buf = xmalloc( buf_size );
-+            sys->texture_temp_buf_size = buf_size;
-+        }
-+        destination = sys->texture_temp_buf;
-+
-+        for( int h = 0; h < height ; h++ )
-+        {
-+            memcpy( destination, source, width * pixel_pitch );
-+            source += pitch;
-+            destination += dst_pitch;
-+        }
-+        if (full_upload)
-+            glTexImage2D( tex_target, 0, tex_format,
-+                         full_width, full_height,
-+                         0, tex_format, tex_type, sys->texture_temp_buf );
-+        else
-+            glTexSubImage2D( tex_target, 0,
-+                            0, 0,
-+                            width, height,
-+                            tex_format, tex_type, sys->texture_temp_buf );
-+    } else {
-+            if (full_upload)
-+                glTexImage2D(tex_target, 0, tex_format,
-+                             full_width, full_height,
-+                             0, tex_format, tex_type, pixels);
-+            else
-+                glTexSubImage2D(tex_target, 0,
-+                                0, 0,
-+                                width, height,
-+                                tex_format, tex_type, pixels);
-+    }
-+}
-+
-+static void ZeroCopyPrepare(vout_display_t *vd, picture_t *pic, subpicture_t *subpicture)
- {
-     vout_display_sys_t *sys = vd->sys;
-     if (likely([sys->glESView isAppActive]))
-         [sys->glESView resetBuffers];
-+
-+    // Subpictures
-+    int         last_count = sys->region_count;
-+    gl_region_t *last = sys->region;
-+
-+    sys->region_count = 0;
-+    sys->region       = NULL;
-+
-+    if (subpicture)
-+    {
-+        int count = 0;
-+        for (subpicture_region_t *r = subpicture->p_region; r; r = r->p_next)
-+            count++;
-+
-+        sys->region_count = count;
-+        sys->region       = calloc(count, sizeof(*sys->region));
-+
-+        glActiveTexture(GL_TEXTURE0 + 0);
-+
-+        int i = 0;
-+        for (subpicture_region_t *r = subpicture->p_region; r; r = r->p_next, i++) {
-+            gl_region_t *glr = &sys->region[i];
-+
-+            glr->format = GL_RGBA;
-+            glr->type   = GL_UNSIGNED_BYTE;
-+            glr->width  = r->fmt.i_visible_width;
-+            glr->height = r->fmt.i_visible_height;
-+
-+            glr->width  = GetAlignedSize(glr->width);
-+            //glr->height  = GetAlignedSize(glr->height);
-+
-+            glr->tex_width  = (float) r->fmt.i_visible_width  / glr->width;
-+            glr->tex_height = (float) r->fmt.i_visible_height / glr->height;
-+
-+            glr->alpha  = (float)subpicture->i_alpha * r->i_alpha / 255 / 255;
-+            glr->left   =  2.0 * (r->i_x                          ) / subpicture->i_original_picture_width  - 1.0;
-+            glr->top    = -2.0 * (r->i_y                          ) / subpicture->i_original_picture_height + 1.0;
-+            glr->right  =  2.0 * (r->i_x + r->fmt.i_visible_width ) / subpicture->i_original_picture_width  - 1.0;
-+            glr->bottom = -2.0 * (r->i_y + r->fmt.i_visible_height) / subpicture->i_original_picture_height + 1.0;
-+
-+            glr->texture = 0;
-+            /* Try to recycle the textures allocated by the previous
-+             call to this function. */
-+            for (int j = 0; j < last_count; j++) {
-+                if (last[j].texture &&
-+                    last[j].width  == glr->width &&
-+                    last[j].height == glr->height &&
-+                    last[j].format == glr->format &&
-+                    last[j].type   == glr->type) {
-+                    glr->texture = last[j].texture;
-+                    memset(&last[j], 0, sizeof(last[j]));
-+                    break;
-+                }
-+            }
-+
-+            const int pixels_offset = r->fmt.i_y_offset * r->p_picture->p->i_pitch +
-+            r->fmt.i_x_offset * r->p_picture->p->i_pixel_pitch;
-+            if (glr->texture) {
-+                /* A texture was successfully recycled, reuse it. */
-+                glBindTexture(GL_TEXTURE_2D, glr->texture);
-+                Upload(sys, r->fmt.i_visible_width, r->fmt.i_visible_height, glr->width, glr->height, 1, 1, 1, 1,
-+                       r->p_picture->p->i_pitch, r->p_picture->p->i_pixel_pitch, 0,
-+                       &r->p_picture->p->p_pixels[pixels_offset], GL_TEXTURE_2D, glr->format, glr->type);
-+            } else {
-+                /* Could not recycle a previous texture, generate a new one. */
-+                glGenTextures(1, &glr->texture);
-+                glBindTexture(GL_TEXTURE_2D, glr->texture);
-+
-+                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-+                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-+                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-+                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-+                Upload(sys, r->fmt.i_visible_width, r->fmt.i_visible_height, glr->width, glr->height, 1, 1, 1, 1,
-+                       r->p_picture->p->i_pitch, r->p_picture->p->i_pixel_pitch, 1,
-+                       &r->p_picture->p->p_pixels[pixels_offset], GL_TEXTURE_2D, glr->format, glr->type);
-+            }
-+        }
-+    }
-+
-+    for (int i = 0; i < last_count; i++) {
-+        if (last[i].texture)
-+            glDeleteTextures(1, &last[i].texture);
-+    }
-+    free(last);
- }
- 
- static void ZeroCopyDisplay(vout_display_t *vd, picture_t *pic, subpicture_t *subpicture)
-@@ -986,6 +1187,8 @@ static void ZeroCopyDisplay(vout_display_t *vd, picture_t *pic, subpicture_t *su
- 
-     glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
- 
-+    [self drawSubpictures];
-+
-     glBindRenderbuffer(GL_RENDERBUFFER, _renderBuffer);
-     [_eaglContext presentRenderbuffer:GL_RENDERBUFFER];
- 
-@@ -996,6 +1199,54 @@ done:
-     [EAGLContext setCurrentContext:previousContext];
- }
- 
-+- (void)drawSubpictures
-+{
-+    vout_display_sys_t *sys = _voutDisplay->sys;
-+
-+    /* Draw the subpictures */
-+
-+    glUseProgram(self.shaderProgramSubpictures);
-+
-+    GLfloat transformMatrix[16];
-+    orientationTransformMatrix(transformMatrix, _voutDisplay->fmt.orientation);
-+    glUniformMatrix4fv(glGetUniformLocation(self.shaderProgramSubpictures, "transformMatrix"), 1, GL_FALSE, transformMatrix);
-+
-+    glUniform1i(glGetUniformLocation(self.shaderProgramSubpictures, "Texture"), 0);
-+
-+    glEnable(GL_BLEND);
-+    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-+
-+    glActiveTexture(GL_TEXTURE0 + 0);
-+    for (int i = 0; i < sys->region_count; i++) {
-+        gl_region_t *glr = &sys->region[i];
-+        const GLfloat vertexCoord[] = {
-+            glr->left,  glr->top,
-+            glr->left,  glr->bottom,
-+            glr->right, glr->top,
-+            glr->right, glr->bottom,
-+        };
-+        const GLfloat textureCoord[] = {
-+            0.0, 0.0,
-+            0.0, glr->tex_height,
-+            glr->tex_width, 0.0,
-+            glr->tex_width, glr->tex_height,
-+        };
-+
-+        glBindTexture(GL_TEXTURE_2D, glr->texture);
-+        glUniform4f(glGetUniformLocation(self.shaderProgramSubpictures, "FillColor"), 1.0f, 1.0f, 1.0f, glr->alpha);
-+
-+        glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, 0, 0, vertexCoord);
-+        glEnableVertexAttribArray(ATTRIB_VERTEX);
-+
-+        glVertexAttribPointer(ATTRIB_TEXCOORD, 2, GL_FLOAT, 0, 0, textureCoord);
-+        glEnableVertexAttribArray(ATTRIB_TEXCOORD);
-+
-+        glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-+    }
-+    glDisable(GL_BLEND);
-+}
-+
-+
- - (void)setupZeroCopyGL
- {
-     EAGLContext *previousContext = [EAGLContext currentContext];
-@@ -1042,55 +1293,59 @@ done:
- 
- - (BOOL)loadShaders
- {
--    GLuint vertShader, fragShader;
--    NSURL *vertShaderURL, *fragShaderURL;
-+    GLuint vertShader = 0;
-+    GLuint fragShader = 0;
-+    GLuint fragShaderSub = 0;
- 
-     // Create the shader program.
-     self.shaderProgram = glCreateProgram();
-+    self.shaderProgramSubpictures = glCreateProgram();
- 
-     // Create and compile the vertex shader.
-     if (![self compileShader:&vertShader type:GL_VERTEX_SHADER sourceString:vertexShaderString]) {
-         if (_voutDisplay)
-             msg_Err(_voutDisplay, "Failed to compile vertex shader");
--        return NO;
-+        goto error;
-     }
- 
-     // Create and compile fragment shader.
-     if (![self compileShader:&fragShader type:GL_FRAGMENT_SHADER sourceString:fragmentShaderString]) {
-         if (_voutDisplay)
-             msg_Err(_voutDisplay, "Failed to compile fragment shader");
--        return NO;
-+        goto error;
-+    }
-+
-+    if (![self compileShader:&fragShaderSub type:GL_FRAGMENT_SHADER sourceString:fragmentShaderRGBAString]) {
-+        if (_voutDisplay)
-+            msg_Err(_voutDisplay, "Failed to compile the RGBA fragment shader");
-+        goto error;
-     }
- 
-     // Attach vertex shader to program.
-     glAttachShader(self.shaderProgram, vertShader);
-+    glAttachShader(self.shaderProgramSubpictures, vertShader);
- 
-     // Attach fragment shader to program.
-     glAttachShader(self.shaderProgram, fragShader);
-+    glAttachShader(self.shaderProgramSubpictures, fragShaderSub);
- 
-     // Bind attribute locations. This needs to be done prior to linking.
-     glBindAttribLocation(self.shaderProgram, ATTRIB_VERTEX, "position");
-     glBindAttribLocation(self.shaderProgram, ATTRIB_TEXCOORD, "texCoord");
-+    glBindAttribLocation(self.shaderProgramSubpictures, ATTRIB_VERTEX, "position");
-+    glBindAttribLocation(self.shaderProgramSubpictures, ATTRIB_TEXCOORD, "texCoord");
- 
-     // Link the program.
-     if (![self linkProgram:self.shaderProgram]) {
-         if (_voutDisplay)
--            msg_Err(_voutDisplay, "Failed to link program: %d", self.shaderProgram);
--
--        if (vertShader) {
--            glDeleteShader(vertShader);
--            vertShader = 0;
--        }
--        if (fragShader) {
--            glDeleteShader(fragShader);
--            fragShader = 0;
--        }
--        if (self.shaderProgram) {
--            glDeleteProgram(self.shaderProgram);
--            self.shaderProgram = 0;
--        }
-+            msg_Err(_voutDisplay, "Failed to link program for main pictures: %d", self.shaderProgram);
-+        goto error;
-+    }
- 
--        return NO;
-+    if (![self linkProgram:self.shaderProgramSubpictures]) {
-+        if (_voutDisplay)
-+            msg_Err(_voutDisplay, "Failed to link program for subpictures: %d", self.shaderProgramSubpictures);
-+        goto error;
-     }
- 
-     // Get uniform locations.
-@@ -1100,16 +1355,35 @@ done:
-     uniforms[UNIFORM_TRANSFORM_MATRIX] = glGetUniformLocation(self.shaderProgram, "transformMatrix");
- 
-     // Release vertex and fragment shaders.
--    if (vertShader) {
--        glDetachShader(self.shaderProgram, vertShader);
-+    glDetachShader(self.shaderProgram, vertShader);
-+    glDetachShader(self.shaderProgramSubpictures, vertShader);
-+    glDeleteShader(vertShader);
-+
-+    glDetachShader(self.shaderProgram, fragShader);
-+    glDeleteShader(fragShader);
-+
-+    glDetachShader(self.shaderProgramSubpictures, fragShaderSub);
-+    glDeleteShader(fragShaderSub);
-+
-+    return YES;
-+
-+error:
-+    if (vertShader)
-         glDeleteShader(vertShader);
--    }
--    if (fragShader) {
--        glDetachShader(self.shaderProgram, fragShader);
-+
-+    if (fragShader)
-         glDeleteShader(fragShader);
--    }
- 
--    return YES;
-+    if (fragShaderSub)
-+        glDeleteShader(fragShaderSub);
-+
-+    if (self.shaderProgram)
-+        glDeleteProgram(self.shaderProgram);
-+
-+    if (self.shaderProgramSubpictures)
-+        glDeleteProgram(self.shaderProgramSubpictures);
-+
-+    return NO;
- }
- 
- - (BOOL)compileShader:(GLuint *)shader type:(GLenum)type sourceString:sourceString
-@@ -1122,7 +1396,6 @@ done:
-     glShaderSource(*shader, 1, &source, NULL);
-     glCompileShader(*shader);
- 
--#ifndef NDEBUG
-     GLint logLength;
-     glGetShaderiv(*shader, GL_INFO_LOG_LENGTH, &logLength);
-     if (logLength > 0) {
-@@ -1132,7 +1405,6 @@ done:
-             msg_Dbg(_voutDisplay, "Shader compile log:\n%s", log);
-         free(log);
-     }
--#endif
- 
-     glGetShaderiv(*shader, GL_COMPILE_STATUS, &status);
-     if (status == 0) {
-@@ -1148,7 +1420,6 @@ done:
-     GLint status;
-     glLinkProgram(prog);
- 
--#ifndef NDEBUG
-     GLint logLength;
-     glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &logLength);
-     if (logLength > 0) {
-@@ -1158,7 +1429,6 @@ done:
-             msg_Dbg(_voutDisplay, "Program link log:\n%s", log);
-         free(log);
-     }
--#endif
- 
-     glGetProgramiv(prog, GL_LINK_STATUS, &status);
-     if (status == 0) {
-2.9.3
-

+ 5 - 5
Resources/MobileVLCKit/patches/0019-videotoolbox-temporarily-disable-H263-decoding-on-iO.patch

@@ -1,17 +1,17 @@
-From 4a089363f4b2174426fe913d4f1ebc275d279a93 Mon Sep 17 00:00:00 2001
+From 8fb18a5931b5830524be3d2a338d84a12ad2b27b Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
 Date: Thu, 22 Sep 2016 13:03:17 +0200
-Subject: [PATCH 19/20] videotoolbox: temporarily disable H263 decoding on iOS
+Subject: [PATCH 16/18] videotoolbox: temporarily disable H263 decoding on iOS
 
 ---
  modules/codec/videotoolbox.m | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/modules/codec/videotoolbox.m b/modules/codec/videotoolbox.m
-index 54a42ba..71b1ed4 100644
+index f1ad27e0db..46f36c5cec 100644
 --- a/modules/codec/videotoolbox.m
 +++ b/modules/codec/videotoolbox.m
-@@ -198,11 +198,11 @@ static CMVideoCodecType CodecPrecheck(decoder_t *p_dec)
+@@ -199,11 +199,11 @@ static CMVideoCodecType CodecPrecheck(decoder_t *p_dec)
  
              break;
          }
@@ -25,5 +25,5 @@ index 54a42ba..71b1ed4 100644
          case VLC_CODEC_PRORES:
              /* the VT decoder can't differenciate between the ProRes flavors, so we do it */
 -- 
-2.9.3
+2.11.0
 

+ 9 - 9
Resources/MobileVLCKit/patches/0020-Add-AC-3-pass-through.patch

@@ -1,7 +1,7 @@
-From d5f5f6d528d3e6bcc24bd682b483a6334200b303 Mon Sep 17 00:00:00 2001
+From 60b6b0f1f0124f8e72423b2ae82fe49f0c4d04fa Mon Sep 17 00:00:00 2001
 From: Aman Gupta <aman@tmm1.net>
 Date: Tue, 1 Mar 2016 16:31:13 +0100
-Subject: [PATCH 20/20] Add AC-3 pass-through
+Subject: [PATCH 17/18] Add AC-3 pass-through
 
 ---
  include/vlc/libvlc_media_player.h    | 10 +++++++++
@@ -11,10 +11,10 @@ Subject: [PATCH 20/20] Add AC-3 pass-through
  4 files changed, 56 insertions(+), 10 deletions(-)
 
 diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h
-index 8cfb8a2..3da63bf 100644
+index 97069f795b..8cc0cb3db1 100644
 --- a/include/vlc/libvlc_media_player.h
 +++ b/include/vlc/libvlc_media_player.h
-@@ -1904,6 +1904,16 @@ LIBVLC_API int64_t libvlc_audio_get_delay( libvlc_media_player_t *p_mi );
+@@ -1877,6 +1877,16 @@ LIBVLC_API int64_t libvlc_audio_get_delay( libvlc_media_player_t *p_mi );
  LIBVLC_API int libvlc_audio_set_delay( libvlc_media_player_t *p_mi, int64_t i_delay );
  
  /**
@@ -32,7 +32,7 @@ index 8cfb8a2..3da63bf 100644
   *
   * \return number of presets
 diff --git a/lib/audio.c b/lib/audio.c
-index 3aed6f5..094cc02 100644
+index 3aed6f5ff3..094cc023d8 100644
 --- a/lib/audio.c
 +++ b/lib/audio.c
 @@ -473,6 +473,22 @@ int libvlc_audio_set_channel( libvlc_media_player_t *mp, int channel )
@@ -59,10 +59,10 @@ index 3aed6f5..094cc02 100644
   *****************************************************************************/
  int64_t libvlc_audio_get_delay( libvlc_media_player_t *p_mi )
 diff --git a/lib/media_player.c b/lib/media_player.c
-index ed2a150..754ecc4 100644
+index 717a3c479a..08a900194b 100644
 --- a/lib/media_player.c
 +++ b/lib/media_player.c
-@@ -646,6 +646,7 @@ libvlc_media_player_new( libvlc_instance_t *instance )
+@@ -645,6 +645,7 @@ libvlc_media_player_new( libvlc_instance_t *instance )
      var_Create (mp, "zoom", VLC_VAR_FLOAT | VLC_VAR_DOINHERIT);
      var_Create (mp, "aspect-ratio", VLC_VAR_STRING);
      var_Create (mp, "crop", VLC_VAR_STRING);
@@ -71,7 +71,7 @@ index ed2a150..754ecc4 100644
      var_Create (mp, "deinterlace-mode", VLC_VAR_STRING);
  
 diff --git a/modules/audio_output/audiounit_ios.m b/modules/audio_output/audiounit_ios.m
-index 2ec53a8..0461a32 100644
+index 2ec53a8663..0461a3220f 100644
 --- a/modules/audio_output/audiounit_ios.m
 +++ b/modules/audio_output/audiounit_ios.m
 @@ -204,16 +204,34 @@ static int StartAnalog(audio_output_t *p_aout, audio_sample_format_t *fmt)
@@ -132,5 +132,5 @@ index 2ec53a8..0461a32 100644
      /* Set audio session to mediaplayback */
      NSError *error = nil;
 -- 
-2.9.3
+2.11.0
 

+ 11 - 11
Resources/MobileVLCKit/patches/0017-libvlc_media-add-cookie_jar-API.patch

@@ -1,7 +1,7 @@
-From 6efbf5badf7f56b888d1e465eb426acfdc58660c Mon Sep 17 00:00:00 2001
+From 0a9deab18b1af76f92cdf35c07f2f2ead11ce1ab Mon Sep 17 00:00:00 2001
 From: Thomas Guillem <thomas@gllm.fr>
 Date: Fri, 16 Sep 2016 15:51:11 +0200
-Subject: [PATCH 17/20] libvlc_media: add cookie_jar API
+Subject: [PATCH 18/18] libvlc_media: add cookie_jar API
 
 ---
  include/vlc/libvlc_media.h | 35 +++++++++++++++++++++++++++++++++++
@@ -12,7 +12,7 @@ Subject: [PATCH 17/20] libvlc_media: add cookie_jar API
  5 files changed, 72 insertions(+)
 
 diff --git a/include/vlc/libvlc_media.h b/include/vlc/libvlc_media.h
-index 01e571c..5ca39f5 100644
+index 01e571c519..5ca39f51a3 100644
 --- a/include/vlc/libvlc_media.h
 +++ b/include/vlc/libvlc_media.h
 @@ -876,6 +876,41 @@ LIBVLC_API
@@ -58,7 +58,7 @@ index 01e571c..5ca39f5 100644
  
  # ifdef __cplusplus
 diff --git a/lib/libvlc.sym b/lib/libvlc.sym
-index 5262ebc..5abea21 100644
+index caa55981bf..c0d5754abf 100644
 --- a/lib/libvlc.sym
 +++ b/lib/libvlc.sym
 @@ -216,6 +216,8 @@ libvlc_media_set_user_data
@@ -71,7 +71,7 @@ index 5262ebc..5abea21 100644
  libvlc_playlist_play
  libvlc_release
 diff --git a/lib/media.c b/lib/media.c
-index fdd2445..e97e56d 100644
+index f3be2c93db..9789ef7405 100644
 --- a/lib/media.c
 +++ b/lib/media.c
 @@ -396,6 +396,8 @@ libvlc_media_t * libvlc_media_new_from_input_item(
@@ -93,9 +93,9 @@ index fdd2445..e97e56d 100644
      vlc_cond_destroy( &p_md->parsed_cond );
      vlc_mutex_destroy( &p_md->parsed_lock );
      vlc_mutex_destroy( &p_md->subitems_lock );
-@@ -1273,3 +1278,24 @@ void libvlc_media_slaves_release( libvlc_media_slave_t **pp_slaves,
-         free( pp_slaves );
+@@ -1274,3 +1279,24 @@ void libvlc_media_slaves_release( libvlc_media_slave_t **pp_slaves,
      }
+     free( pp_slaves );
  }
 +
 +int
@@ -119,7 +119,7 @@ index fdd2445..e97e56d 100644
 +        vlc_http_cookies_clear( p_md->p_cookie_jar );
 +}
 diff --git a/lib/media_internal.h b/lib/media_internal.h
-index f063ddb..17bbd84 100644
+index f063ddb5fa..17bbd84fac 100644
 --- a/lib/media_internal.h
 +++ b/lib/media_internal.h
 @@ -30,6 +30,7 @@
@@ -139,7 +139,7 @@ index f063ddb..17bbd84 100644
  
  /* Media Descriptor */
 diff --git a/lib/media_player.c b/lib/media_player.c
-index 930190c..ed2a150 100644
+index 08a900194b..d8483d3f02 100644
 --- a/lib/media_player.c
 +++ b/lib/media_player.c
 @@ -605,6 +605,7 @@ libvlc_media_player_new( libvlc_instance_t *instance )
@@ -150,7 +150,7 @@ index 930190c..ed2a150 100644
  
      /* Video */
      var_Create (mp, "vout", VLC_VAR_STRING|VLC_VAR_DOINHERIT);
-@@ -961,6 +962,12 @@ int libvlc_media_player_play( libvlc_media_player_t *p_mi )
+@@ -956,6 +957,12 @@ int libvlc_media_player_play( libvlc_media_player_t *p_mi )
          return -1;
      }
  
@@ -164,5 +164,5 @@ index 930190c..ed2a150 100644
  
      p_input_thread = input_Create( p_mi, p_mi->p_md->p_input_item, NULL,
 -- 
-2.9.3
+2.11.0