0015-Users-will-be-able-to-change-the-deinterlace-mode-wi.patch 3.3 KB

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