<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style>
</head>
<body><div><br></div>
<div><br></div>
<div><br></div>
<div>On Mon, Apr 30, 2018, at 18:29, Luís Miguel Fernandes wrote:<br></div>
<blockquote type="cite"><div>Hi Steve,<br></div>
<div><br></div>
<div>Thanks for the comments, here's the revised patches.<br></div>
<div><br></div>
<div><div>From effa894f8231379841f7c387a6931064fcca929d Mon Sep 17 00:00:00 2001<br></div>
<div>From: Luis Fernandes <<a href="mailto:zipleen@gmail.com">zipleen@gmail.com</a>><br></div>
<div>Date: Mon, 30 Apr 2018 14:33:08 +0100<br></div>
<div>Subject: [PATCH] add auto deinterlacer-mode which is also valid<br></div>
<div><br></div>
<div>---<br></div>
<div> lib/video.c | 3 ++-<br></div>
<div> 1 file changed, 2 insertions(+), 1 deletion(-)<br></div>
<div><br></div>
<div>diff --git a/lib/video.c b/lib/video.c<br></div>
<div>index 035cc0ebf1..a3e5b248e9 100644<br></div>
<div>--- a/lib/video.c<br></div>
<div>+++ b/lib/video.c<br></div>
<div>@@ -675,7 +675,8 @@ void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,<br></div>
<div>      && strcmp (psz_mode, "discard")  && strcmp (psz_mode, "linear")<br></div>
<div>      && strcmp (psz_mode, "mean")     && strcmp (psz_mode, "x")<br></div>
<div>      && strcmp (psz_mode, "yadif")    && strcmp (psz_mode, "yadif2x")<br></div>
<div>-     && strcmp (psz_mode, "phosphor") && strcmp (psz_mode, "ivtc"))<br></div>
<div>+     && strcmp (psz_mode, "phosphor") && strcmp (psz_mode, "ivtc")<br></div>
<div>+     && strcmp (psz_mode, "auto"))<br></div>
<div>         return;<br></div>
<div><br></div>
<div>     if (*psz_mode)<br></div>
<div>--<br></div>
<div>2.14.3 (Apple Git-98)<br></div>
<div><br></div>
<div><div>From 2b656a5fca5c69e626ac1727d7bc9f3d980f37e6 Mon Sep 17 00:00:00 2001<br></div>
<div>From: Luis Fernandes <<a href="mailto:zipleen@gmail.com">zipleen@gmail.com</a>><br></div>
<div>Date: Mon, 30 Apr 2018 14:43:00 +0100<br></div>
<div>Subject: [PATCH] change function of deinterlace to specify which deinterlace<br></div>
<div> mode and filter we want to use<br></div>
<div><br></div>
<div>---<br></div>
<div> include/vlc/libvlc_media_player.h |  5 ++++-<br></div>
<div> lib/video.c                       | 34 ++++++++++++++++++++--------------<br></div>
<div> 2 files changed, 24 insertions(+), 15 deletions(-)<br></div>
<div><br></div>
<div>diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h<br></div>
<div>index 20b220448b..a82f70f5e7 100644<br></div>
<div>--- a/include/vlc/libvlc_media_player.h<br></div>
<div>+++ b/include/vlc/libvlc_media_player.h<br></div>
<div>@@ -1419,9 +1419,12 @@ int libvlc_video_take_snapshot( libvlc_media_player_t *p_mi, unsigned num,<br></div>
<div>  * Enable or disable deinterlace filter<br></div>
<div>  *<br></div>
<div>  * \param p_mi libvlc media player<br></div>
<div>- * \param psz_mode type of deinterlace filter, NULL to disable<br></div>
<div>+ * \param deinterlace deinterlace mode -1:auto (default), 0: disabled, 1: enabled<br></div>
<div>+ * \param psz_mode type of deinterlace filter, NULL to default<br></div>
<div>+ * \version LibVLC 4.0.0 and later<br></div>
<div>  */<br></div>
<div> LIBVLC_API void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,<br></div>
<div>+                                                  int deinterlace,<br></div>
<div>                                                   const char *psz_mode );<br></div>
<div><br></div>
<div> /**<br></div>
<div>diff --git a/lib/video.c b/lib/video.c<br></div>
<div>index a3e5b248e9..f96fec7a79 100644<br></div>
<div>--- a/lib/video.c<br></div>
<div>+++ b/lib/video.c<br></div>
<div>@@ -663,13 +663,25 @@ end:<br></div>
<div> }<br></div>
<div><br></div>
<div> /******************************************************************************<br></div>
<div>- * libvlc_video_set_deinterlace : enable deinterlace<br></div>
<div>+ * libvlc_video_set_deinterlace : enable/disable/auto deinterlace and filter<br></div>
<div>  *****************************************************************************/<br></div>
<div>-void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,<br></div>
<div>+void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi, int deinterlace,<br></div>
<div>                                    const char *psz_mode )<br></div>
<div> {<br></div>
<div>+    if (deinterlace != 0 && deinterlace != 1)<br></div>
<div>+        deinterlace = -1;<br></div>
<div>+<br></div>
<div>+    if (psz_mode == NULL)<br></div>
<div>+    {<br></div>
<div>+        psz_mode = var_GetString(p_mi, "deinterlace-mode");<br></div>
<div>+    }<br></div>
</div>
</div>
</blockquote><div><br></div>
<div>You leak psz_mode here.<br></div>
<div>But I think it should stay NULL. Just don't set "deinterlace-mode" in that case but only the "deinterlace" int.<br></div>
<div><br></div>
<blockquote type="cite"><div><div><div>+<br></div>
<div>     if (psz_mode == NULL)<br></div>
<div>+    {<br></div>
<div>         psz_mode = "";<br></div>
<div>+        deinterlace = 0;<br></div>
<div>+    }<br></div>
<div>+<br></div>
<div>     if (*psz_mode<br></div>
<div>      && strcmp (psz_mode, "blend")    && strcmp (psz_mode, "bob")<br></div>
<div>      && strcmp (psz_mode, "discard")  && strcmp (psz_mode, "linear")<br></div>
<div>@@ -679,13 +691,10 @@ void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,<br></div>
<div>      && strcmp (psz_mode, "auto"))<br></div>
<div>         return;<br></div>
<div><br></div>
<div>-    if (*psz_mode)<br></div>
<div>-    {<br></div>
<div>+    if (*psz_mode && deinterlace != 0)<br></div>
<div>         var_SetString (p_mi, "deinterlace-mode", psz_mode);<br></div>
<div>-        var_SetInteger (p_mi, "deinterlace", 1);<br></div>
<div>-    }<br></div>
<div>-    else<br></div>
<div>-        var_SetInteger (p_mi, "deinterlace", 0);<br></div>
<div>+<br></div>
<div>+    var_SetInteger (p_mi, "deinterlace", deinterlace);<br></div>
<div><br></div>
<div>     size_t n;<br></div>
<div>     vout_thread_t **pp_vouts = GetVouts (p_mi, &n);<br></div>
<div>@@ -693,13 +702,10 @@ void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi,<br></div>
<div>     {<br></div>
<div>         vout_thread_t *p_vout = pp_vouts[i];<br></div>
<div><br></div>
<div>-        if (*psz_mode)<br></div>
<div>-        {<br></div>
<div>+        if (*psz_mode && deinterlace != 0)<br></div>
<div>             var_SetString (p_vout, "deinterlace-mode", psz_mode);<br></div>
<div>-            var_SetInteger (p_vout, "deinterlace", 1);<br></div>
<div>-        }<br></div>
<div>-        else<br></div>
<div>-            var_SetInteger (p_vout, "deinterlace", 0);<br></div>
<div>+<br></div>
<div>+        var_SetInteger (p_vout, "deinterlace", deinterlace);<br></div>
<div>         vlc_object_release (p_vout);<br></div>
<div>     }<br></div>
<div>     free (pp_vouts);<br></div>
<div>--<br></div>
<div>2.14.3 (Apple Git-98)<br></div>
</div>
<div><br></div>
<div><br></div>
</div>
<div><div><br></div>
<div><br></div>
</div>
<div><div><br></div>
<div><br></div>
<div>Regards,<br></div>
<div>Luís<br></div>
<div><div><br></div>
<blockquote type="cite"><div>On 30 Apr 2018, at 07:55, Steve Lhomme <<a href="mailto:robux4@ycbcr.xyz">robux4@ycbcr.xyz</a>> wrote:<br></div>
<div><br></div>
<div><div bgcolor="#FFFFFF"><p>Please post your patches inline, it's easier to comment<br></p><p><br></p><p><div>+    if (deinterlace < -1 || deinterlace > 1)<br></div>
<div> +        deinterlace = -1;<br></div>
<div> To make it more clear what you're doing maybe check if the value
      is neither 0 nor 1.<br></div>
</p><p><br></p><p><div>+        module_config_t *config =
      config_FindConfig("deinterlace-mode");<br></div>
<div> This should be var_GetString<br></div>
</p><p><br></p><p><div>+     && strcmp (psz_mode, "auto"))<br></div>
<div> It seems that should go in another patch before this one.<br></div>
</p><p><br></p><p><div>-        var_SetInteger (p_mi, "deinterlace", 1);<br></div>
<div> +        var_SetInteger (p_mi, "deinterlace", deinterlace);<br></div>
<div>      }<br></div>
<div>      else<br></div>
<div> -        var_SetInteger (p_mi, "deinterlace", 0);<br></div>
<div> +        var_SetInteger (p_mi, "deinterlace", deinterlace);<br></div>
</p><p>In both cases of the else you do the same call. So don't do it in
      the else.<br></p><div><br></div>
<div>Le 28/04/2018 à 20:13, Luís Fernandes a
      écrit :<br></div>
<blockquote type="cite" cite="mid:0CDA4F63-9E9E-4BD1-BB9C-9F8253B33E18@gmail.com"><pre>Hi all,

I’ve reworked the patch to change the method signature, and thus break compatibility with 3.0.
I’ve added a \version annotation to the .h of the function, but I have no idea if I need to do anything else to signal that this is for libvlc4. 
Please advice on what I need to add more for the patch to be accepted.

Some notes on the patch:
- I had to add "auto" because the default deinterlace-mode for VLCKit is normally "auto", so without it the mode would never get triggered
- default mode is "auto" (-1) - which seems to be the default mode for vlc as well

Regards,
Luís

<br></pre><div><br></div>
<div><br></div>
<pre><br></pre><blockquote type="cite"><pre>On 22 Apr 2018, at 11:13, Jean-Baptiste Kempf <a href="mailto:jb@videolan.org"><jb@videolan.org></a> wrote:

Hello,

On Sun, 22 Apr 2018, at 09:37, Rémi Denis-Courmont wrote:
<br></pre><blockquote type="cite"><pre>IMO, an API clean-up and thus an ABI break is well overdue in general, and 
with that, I'd do 1. But that's just my own personal opinion.
<br></pre></blockquote><pre>Yes. Break API and ABI for 4.0. libvlc6. Go ahead.

But if anyone breaks ABI for 3.0, I'll break his neck. (in a soft fashion) :D

-- 
Jean-Baptiste Kempf -  President
+33 672 704 734
_______________________________________________
vlc-devel mailing list
To unsubscribe or modify your subscription options:
<a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a>
<br></pre></blockquote><pre><br></pre><div><br></div>
<div><br></div>
<pre>_______________________________________________
vlc-devel mailing list
To unsubscribe or modify your subscription options:
<a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br></pre></blockquote><div><br></div>
</div>
<div>_______________________________________________<br></div>
<div>vlc-devel mailing list<br></div>
<div>To unsubscribe or modify your subscription options:<br></div>
<div><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br></div>
</div>
</blockquote></div>
</div>
<div><u>_______________________________________________</u><br></div>
<div>vlc-devel mailing list<br></div>
<div>To unsubscribe or modify your subscription options:<br></div>
<div><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br></div>
<p>Email had 2 attachments:<br></p><ul><li><div><code>auto_deinterlace.patch</code><br></div>
<div>  1k (text/plain)<br></div>
</li><li><div><code>set_filter_auto_deinterlace.patch</code><br></div>
<div>  5k (text/plain)<br></div>
</li></ul></blockquote><div><br></div>
</body>
</html>