0014-vlc_enable_deinterlace_auto.patch 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. From 4ae5821be54655e3a029ef1b5bc0e3bc03085ee6 Mon Sep 17 00:00:00 2001
  2. From: Luis Fernandes <zipleen@gmail.com>
  3. Date: Mon, 30 Apr 2018 14:33:08 +0100
  4. Subject: [PATCH 1/2] add auto deinterlacer-mode which is also valid
  5. ---
  6. lib/video.c | 3 ++-
  7. 1 file changed, 2 insertions(+), 1 deletion(-)
  8. diff --git a/lib/video.c b/lib/video.c
  9. index 035cc0ebf1..a3e5b248e9 100644
  10. --- a/lib/video.c
  11. +++ b/lib/video.c
  12. @@ -675,7 +675,8 @@ void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
  13. && strcmp (psz_mode, "discard") && strcmp (psz_mode, "linear")
  14. && strcmp (psz_mode, "mean") && strcmp (psz_mode, "x")
  15. && strcmp (psz_mode, "yadif") && strcmp (psz_mode, "yadif2x")
  16. - && strcmp (psz_mode, "phosphor") && strcmp (psz_mode, "ivtc"))
  17. + && strcmp (psz_mode, "phosphor") && strcmp (psz_mode, "ivtc")
  18. + && strcmp (psz_mode, "auto"))
  19. return;
  20. if (*psz_mode)
  21. --
  22. 2.15.1 (Apple Git-101)
  23. From bc236ea6a0c7c057883f2251d331cecdd40d6ec7 Mon Sep 17 00:00:00 2001
  24. From: Luis Fernandes <zipleen@gmail.com>
  25. Date: Wed, 9 May 2018 10:44:43 +0100
  26. Subject: [PATCH 2/2] Users will be able to change the deinterlace mode without
  27. forcing it.
  28. ---
  29. include/vlc/libvlc_media_player.h | 5 ++++-
  30. lib/video.c | 29 ++++++++++++-----------------
  31. 2 files changed, 16 insertions(+), 18 deletions(-)
  32. diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h
  33. index 20b220448b..cbb5ec251a 100644
  34. --- a/include/vlc/libvlc_media_player.h
  35. +++ b/include/vlc/libvlc_media_player.h
  36. @@ -1419,9 +1419,12 @@ int libvlc_video_take_snapshot( libvlc_media_player_t *p_mi, unsigned num,
  37. * Enable or disable deinterlace filter
  38. *
  39. * \param p_mi libvlc media player
  40. - * \param psz_mode type of deinterlace filter, NULL to disable
  41. + * \param deinterlace deinterlace mode -1:auto (default), 0: disabled, 1: enabled
  42. + * \param psz_mode type of deinterlace filter, NULL for current/default filter
  43. + * \version LibVLC 4.0.0 and later
  44. */
  45. LIBVLC_API void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
  46. + int deinterlace,
  47. const char *psz_mode );
  48. /**
  49. diff --git a/lib/video.c b/lib/video.c
  50. index a3e5b248e9..9bc0f634f5 100644
  51. --- a/lib/video.c
  52. +++ b/lib/video.c
  53. @@ -663,14 +663,15 @@ end:
  54. }
  55. /******************************************************************************
  56. - * libvlc_video_set_deinterlace : enable deinterlace
  57. + * libvlc_video_set_deinterlace : enable/disable/auto deinterlace and filter
  58. *****************************************************************************/
  59. -void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
  60. +void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi, int deinterlace,
  61. const char *psz_mode )
  62. {
  63. - if (psz_mode == NULL)
  64. - psz_mode = "";
  65. - if (*psz_mode
  66. + if (deinterlace != 0 && deinterlace != 1)
  67. + deinterlace = -1;
  68. +
  69. + if (psz_mode
  70. && strcmp (psz_mode, "blend") && strcmp (psz_mode, "bob")
  71. && strcmp (psz_mode, "discard") && strcmp (psz_mode, "linear")
  72. && strcmp (psz_mode, "mean") && strcmp (psz_mode, "x")
  73. @@ -679,13 +680,10 @@ void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
  74. && strcmp (psz_mode, "auto"))
  75. return;
  76. - if (*psz_mode)
  77. - {
  78. + if (psz_mode && deinterlace != 0)
  79. var_SetString (p_mi, "deinterlace-mode", psz_mode);
  80. - var_SetInteger (p_mi, "deinterlace", 1);
  81. - }
  82. - else
  83. - var_SetInteger (p_mi, "deinterlace", 0);
  84. +
  85. + var_SetInteger (p_mi, "deinterlace", deinterlace);
  86. size_t n;
  87. vout_thread_t **pp_vouts = GetVouts (p_mi, &n);
  88. @@ -693,13 +691,10 @@ void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
  89. {
  90. vout_thread_t *p_vout = pp_vouts[i];
  91. - if (*psz_mode)
  92. - {
  93. + if (psz_mode && deinterlace != 0)
  94. var_SetString (p_vout, "deinterlace-mode", psz_mode);
  95. - var_SetInteger (p_vout, "deinterlace", 1);
  96. - }
  97. - else
  98. - var_SetInteger (p_vout, "deinterlace", 0);
  99. +
  100. + var_SetInteger (p_vout, "deinterlace", deinterlace);
  101. vlc_object_release (p_vout);
  102. }
  103. free (pp_vouts);
  104. --
  105. 2.15.1 (Apple Git-101)