[vlc-devel] [PATCH 07/10] video_filter: deinterlace: tell which methods won't care about the field element

Steve Lhomme robux4 at videolabs.io
Mon Jun 26 19:20:16 CEST 2017


---
 modules/video_filter/deinterlace/deinterlace.c | 7 +++++++
 modules/video_filter/deinterlace/deinterlace.h | 1 +
 2 files changed, 8 insertions(+)

diff --git a/modules/video_filter/deinterlace/deinterlace.c b/modules/video_filter/deinterlace/deinterlace.c
index c3948e1c25..4ebc3826ab 100644
--- a/modules/video_filter/deinterlace/deinterlace.c
+++ b/modules/video_filter/deinterlace/deinterlace.c
@@ -154,14 +154,17 @@ static void SetFilterMethod( filter_t *p_filter, const char *mode, bool pack )
     p_sys->b_double_rate = false;
     p_sys->b_half_height = false;
     p_sys->b_use_frame_history = false;
+    p_sys->b_single_field = false;
 
     if ( !strcmp( mode, "auto" ) || !strcmp( mode, "x" ) )
     {
         p_sys->i_mode = DEINTERLACE_X;
+        p_sys->b_single_field = true;
     }
     else if( !strcmp( mode, "discard" ) )
     {
         p_sys->i_mode = DEINTERLACE_DISCARD;
+        p_sys->b_single_field = true;
         p_sys->b_half_height = true;
     }
     else if( !strcmp( mode, "bob" ) || !strcmp( mode, "progressive-scan" ) )
@@ -177,11 +180,13 @@ static void SetFilterMethod( filter_t *p_filter, const char *mode, bool pack )
     else if( !strcmp( mode, "mean" ) )
     {
         p_sys->i_mode = DEINTERLACE_MEAN;
+        p_sys->b_single_field = true;
         p_sys->b_half_height = true;
     }
     else if( !strcmp( mode, "blend" ) )
     {
         p_sys->i_mode = DEINTERLACE_BLEND;
+        p_sys->b_single_field = true;
     }
     else if( pack )
     {
@@ -192,6 +197,7 @@ static void SetFilterMethod( filter_t *p_filter, const char *mode, bool pack )
     else if( !strcmp( mode, "yadif" ) )
     {
         p_sys->i_mode = DEINTERLACE_YADIF;
+        p_sys->b_single_field = true;
         p_sys->b_use_frame_history = true;
     }
     else if( !strcmp( mode, "yadif2x" ) )
@@ -215,6 +221,7 @@ static void SetFilterMethod( filter_t *p_filter, const char *mode, bool pack )
     else if( !strcmp( mode, "ivtc" ) )
     {
         p_sys->i_mode = DEINTERLACE_IVTC;
+        p_sys->b_single_field = true;
         p_sys->b_use_frame_history = true;
     }
     else
diff --git a/modules/video_filter/deinterlace/deinterlace.h b/modules/video_filter/deinterlace/deinterlace.h
index 00fddb74ec..3059f09f2a 100644
--- a/modules/video_filter/deinterlace/deinterlace.h
+++ b/modules/video_filter/deinterlace/deinterlace.h
@@ -97,6 +97,7 @@ struct filter_sys_t
     bool b_double_rate;       /**< Shall we double the framerate? */
     bool b_half_height;       /**< Shall be divide the height by 2 */
     bool b_use_frame_history; /**< Use the input frame history buffer? */
+    bool b_single_field;      /**< The filter doesn't handle the field info */
 
     /** Merge routine: C, MMX, SSE, ALTIVEC, NEON, ... */
     void (*pf_merge) ( void *, const void *, const void *, size_t );
-- 
2.12.1



More information about the vlc-devel mailing list