1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- From f5bebd222fb9817ce9215f334faed48340aba3fe Mon Sep 17 00:00:00 2001
- From: Luis Fernandes <zipleen@gmail.com>
- Date: Wed, 9 May 2018 10:44:43 +0100
- Subject: [PATCH 15/26] Users will be able to change the deinterlace mode
- without forcing it.
- ---
- include/vlc/libvlc_media_player.h | 5 ++++-
- lib/video.c | 29 ++++++++++++-----------------
- 2 files changed, 16 insertions(+), 18 deletions(-)
- diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h
- index 4582688b27..4e951292c9 100644
- --- a/include/vlc/libvlc_media_player.h
- +++ b/include/vlc/libvlc_media_player.h
- @@ -1419,9 +1419,12 @@ int libvlc_video_take_snapshot( libvlc_media_player_t *p_mi, unsigned num,
- * Enable or disable deinterlace filter
- *
- * \param p_mi libvlc media player
- - * \param psz_mode type of deinterlace filter, NULL to disable
- + * \param deinterlace deinterlace mode -1:auto (default), 0: disabled, 1: enabled
- + * \param psz_mode type of deinterlace filter, NULL for current/default filter
- + * \version LibVLC 4.0.0 and later
- */
- LIBVLC_API void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
- + int deinterlace,
- const char *psz_mode );
-
- /**
- diff --git a/lib/video.c b/lib/video.c
- index a3e5b248e9..9bc0f634f5 100644
- --- a/lib/video.c
- +++ b/lib/video.c
- @@ -663,14 +663,15 @@ end:
- }
-
- /******************************************************************************
- - * libvlc_video_set_deinterlace : enable deinterlace
- + * libvlc_video_set_deinterlace : enable/disable/auto deinterlace and filter
- *****************************************************************************/
- -void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
- +void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi, int deinterlace,
- const char *psz_mode )
- {
- - if (psz_mode == NULL)
- - psz_mode = "";
- - if (*psz_mode
- + if (deinterlace != 0 && deinterlace != 1)
- + deinterlace = -1;
- +
- + if (psz_mode
- && strcmp (psz_mode, "blend") && strcmp (psz_mode, "bob")
- && strcmp (psz_mode, "discard") && strcmp (psz_mode, "linear")
- && strcmp (psz_mode, "mean") && strcmp (psz_mode, "x")
- @@ -679,13 +680,10 @@ void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
- && strcmp (psz_mode, "auto"))
- return;
-
- - if (*psz_mode)
- - {
- + if (psz_mode && deinterlace != 0)
- var_SetString (p_mi, "deinterlace-mode", psz_mode);
- - var_SetInteger (p_mi, "deinterlace", 1);
- - }
- - else
- - var_SetInteger (p_mi, "deinterlace", 0);
- +
- + var_SetInteger (p_mi, "deinterlace", deinterlace);
-
- size_t n;
- vout_thread_t **pp_vouts = GetVouts (p_mi, &n);
- @@ -693,13 +691,10 @@ void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,
- {
- vout_thread_t *p_vout = pp_vouts[i];
-
- - if (*psz_mode)
- - {
- + if (psz_mode && deinterlace != 0)
- var_SetString (p_vout, "deinterlace-mode", psz_mode);
- - var_SetInteger (p_vout, "deinterlace", 1);
- - }
- - else
- - var_SetInteger (p_vout, "deinterlace", 0);
- +
- + var_SetInteger (p_vout, "deinterlace", deinterlace);
- vlc_object_release (p_vout);
- }
- free (pp_vouts);
- --
- 2.20.1
|