vlckit_auto_deinterlacer_1.patch 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. From 39a93d91bcef1a01341a15fb36c279ae86abd631 Mon Sep 17 00:00:00 2001
  2. From: Luis Fernandes <zipleen@gmail.com>
  3. Date: Wed, 9 May 2018 10:46:35 +0100
  4. Subject: [PATCH] change function of deinterlace to specify which deinterlace
  5. mode and filter we want to use
  6. ---
  7. Headers/Public/VLCMediaPlayer.h | 19 ++++
  8. .../patches/0014-vlc_enable_deinterlace_auto.patch | 118 +++++++++++++++++++++
  9. Sources/VLCMediaPlayer.m | 9 +-
  10. 3 files changed, 144 insertions(+), 2 deletions(-)
  11. create mode 100644 Resources/MobileVLCKit/patches/0014-vlc_enable_deinterlace_auto.patch
  12. diff --git a/Headers/Public/VLCMediaPlayer.h b/Headers/Public/VLCMediaPlayer.h
  13. index 4171f4a..fd51dc4 100644
  14. --- a/Headers/Public/VLCMediaPlayer.h
  15. +++ b/Headers/Public/VLCMediaPlayer.h
  16. @@ -75,6 +75,16 @@ typedef NS_ENUM(unsigned, VLCMediaPlaybackNavigationAction)
  17. VLCMediaPlaybackNavigationActionRight
  18. };
  19. +/**
  20. + * VLCMediaPlaybackNavigationAction describes actions which can be performed to navigate an interactive title
  21. + */
  22. +typedef NS_ENUM(NSInteger, VLCDeinterlace)
  23. +{
  24. + VLCDeinterlaceAuto = -1,
  25. + VLCDeinterlaceOn = 1,
  26. + VLCDeinterlaceOff = 0
  27. +};
  28. +
  29. /**
  30. * Returns the name of the player state as a string.
  31. * \param state The player state.
  32. @@ -246,6 +256,15 @@ extern NSString * VLCMediaPlayerStateToString(VLCMediaPlayerState state);
  33. */
  34. - (void)setDeinterlaceFilter: (NSString *)name;
  35. +/**
  36. + * Enable or disable deinterlace and specify which filter to use
  37. + *
  38. + *
  39. + * \param VLCDeinterlace - enable, disable or auto
  40. + * \param name of deinterlace filter to use (availability depends on underlying VLC version).
  41. + */
  42. +- (void)setDeinterlace:(VLCDeinterlace)deinterlace withFilter:(NSString *)name;
  43. +
  44. /**
  45. * Enable or disable adjust video filter (contrast, brightness, hue, saturation, gamma)
  46. *
  47. diff --git a/Resources/MobileVLCKit/patches/0014-vlc_enable_deinterlace_auto.patch b/Resources/MobileVLCKit/patches/0014-vlc_enable_deinterlace_auto.patch
  48. new file mode 100644
  49. index 0000000..4b123b5
  50. --- /dev/null
  51. +++ b/Resources/MobileVLCKit/patches/0014-vlc_enable_deinterlace_auto.patch
  52. @@ -0,0 +1,118 @@
  53. +From 4ae5821be54655e3a029ef1b5bc0e3bc03085ee6 Mon Sep 17 00:00:00 2001
  54. +From: Luis Fernandes <zipleen@gmail.com>
  55. +Date: Mon, 30 Apr 2018 14:33:08 +0100
  56. +Subject: [PATCH 1/2] add auto deinterlacer-mode which is also valid
  57. +
  58. +---
  59. + lib/video.c | 3 ++-
  60. + 1 file changed, 2 insertions(+), 1 deletion(-)
  61. +
  62. +diff --git a/lib/video.c b/lib/video.c
  63. +index 035cc0ebf1..a3e5b248e9 100644
  64. +--- a/lib/video.c
  65. ++++ b/lib/video.c
  66. +@@ -675,7 +675,8 @@ void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
  67. + && strcmp (psz_mode, "discard") && strcmp (psz_mode, "linear")
  68. + && strcmp (psz_mode, "mean") && strcmp (psz_mode, "x")
  69. + && strcmp (psz_mode, "yadif") && strcmp (psz_mode, "yadif2x")
  70. +- && strcmp (psz_mode, "phosphor") && strcmp (psz_mode, "ivtc"))
  71. ++ && strcmp (psz_mode, "phosphor") && strcmp (psz_mode, "ivtc")
  72. ++ && strcmp (psz_mode, "auto"))
  73. + return;
  74. +
  75. + if (*psz_mode)
  76. +--
  77. +2.15.1 (Apple Git-101)
  78. +
  79. +
  80. +From bc236ea6a0c7c057883f2251d331cecdd40d6ec7 Mon Sep 17 00:00:00 2001
  81. +From: Luis Fernandes <zipleen@gmail.com>
  82. +Date: Wed, 9 May 2018 10:44:43 +0100
  83. +Subject: [PATCH 2/2] Users will be able to change the deinterlace mode without
  84. + forcing it.
  85. +
  86. +---
  87. + include/vlc/libvlc_media_player.h | 5 ++++-
  88. + lib/video.c | 29 ++++++++++++-----------------
  89. + 2 files changed, 16 insertions(+), 18 deletions(-)
  90. +
  91. +diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h
  92. +index 20b220448b..cbb5ec251a 100644
  93. +--- a/include/vlc/libvlc_media_player.h
  94. ++++ b/include/vlc/libvlc_media_player.h
  95. +@@ -1419,9 +1419,12 @@ int libvlc_video_take_snapshot( libvlc_media_player_t *p_mi, unsigned num,
  96. + * Enable or disable deinterlace filter
  97. + *
  98. + * \param p_mi libvlc media player
  99. +- * \param psz_mode type of deinterlace filter, NULL to disable
  100. ++ * \param deinterlace deinterlace mode -1:auto (default), 0: disabled, 1: enabled
  101. ++ * \param psz_mode type of deinterlace filter, NULL for current/default filter
  102. ++ * \version LibVLC 4.0.0 and later
  103. + */
  104. + LIBVLC_API void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
  105. ++ int deinterlace,
  106. + const char *psz_mode );
  107. +
  108. + /**
  109. +diff --git a/lib/video.c b/lib/video.c
  110. +index a3e5b248e9..9bc0f634f5 100644
  111. +--- a/lib/video.c
  112. ++++ b/lib/video.c
  113. +@@ -663,14 +663,15 @@ end:
  114. + }
  115. +
  116. + /******************************************************************************
  117. +- * libvlc_video_set_deinterlace : enable deinterlace
  118. ++ * libvlc_video_set_deinterlace : enable/disable/auto deinterlace and filter
  119. + *****************************************************************************/
  120. +-void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
  121. ++void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi, int deinterlace,
  122. + const char *psz_mode )
  123. + {
  124. +- if (psz_mode == NULL)
  125. +- psz_mode = "";
  126. +- if (*psz_mode
  127. ++ if (deinterlace != 0 && deinterlace != 1)
  128. ++ deinterlace = -1;
  129. ++
  130. ++ if (psz_mode
  131. + && strcmp (psz_mode, "blend") && strcmp (psz_mode, "bob")
  132. + && strcmp (psz_mode, "discard") && strcmp (psz_mode, "linear")
  133. + && strcmp (psz_mode, "mean") && strcmp (psz_mode, "x")
  134. +@@ -679,13 +680,10 @@ void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
  135. + && strcmp (psz_mode, "auto"))
  136. + return;
  137. +
  138. +- if (*psz_mode)
  139. +- {
  140. ++ if (psz_mode && deinterlace != 0)
  141. + var_SetString (p_mi, "deinterlace-mode", psz_mode);
  142. +- var_SetInteger (p_mi, "deinterlace", 1);
  143. +- }
  144. +- else
  145. +- var_SetInteger (p_mi, "deinterlace", 0);
  146. ++
  147. ++ var_SetInteger (p_mi, "deinterlace", deinterlace);
  148. +
  149. + size_t n;
  150. + vout_thread_t **pp_vouts = GetVouts (p_mi, &n);
  151. +@@ -693,13 +691,10 @@ void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
  152. + {
  153. + vout_thread_t *p_vout = pp_vouts[i];
  154. +
  155. +- if (*psz_mode)
  156. +- {
  157. ++ if (psz_mode && deinterlace != 0)
  158. + var_SetString (p_vout, "deinterlace-mode", psz_mode);
  159. +- var_SetInteger (p_vout, "deinterlace", 1);
  160. +- }
  161. +- else
  162. +- var_SetInteger (p_vout, "deinterlace", 0);
  163. ++
  164. ++ var_SetInteger (p_vout, "deinterlace", deinterlace);
  165. + vlc_object_release (p_vout);
  166. + }
  167. + free (pp_vouts);
  168. +--
  169. +2.15.1 (Apple Git-101)
  170. +
  171. diff --git a/Sources/VLCMediaPlayer.m b/Sources/VLCMediaPlayer.m
  172. index e904145..ae9e1c3 100644
  173. --- a/Sources/VLCMediaPlayer.m
  174. +++ b/Sources/VLCMediaPlayer.m
  175. @@ -576,9 +576,14 @@ - (void)saveVideoSnapshotAt:(NSString *)path withWidth:(int)width andHeight:(int
  176. - (void)setDeinterlaceFilter:(NSString *)name
  177. {
  178. if (!name || name.length < 1)
  179. - libvlc_video_set_deinterlace(_playerInstance, NULL);
  180. + libvlc_video_set_deinterlace(_playerInstance, VLCDeinterlaceOff, NULL);
  181. else
  182. - libvlc_video_set_deinterlace(_playerInstance, [name UTF8String]);
  183. + libvlc_video_set_deinterlace(_playerInstance, VLCDeinterlaceOn, [name UTF8String]);
  184. +}
  185. +
  186. +- (void)setDeinterlace:(VLCDeinterlace)deinterlace withFilter:(NSString *)name
  187. +{
  188. + libvlc_video_set_deinterlace(_playerInstance, deinterlace, [name UTF8String]);
  189. }
  190. - (BOOL)adjustFilterEnabled
  191. --
  192. 2.15.1 (Apple Git-101)