vlc | branch: master | Steve Lhomme <[email protected]> | Wed Jun 28 13:52:42 
2017 +0200| [ed564cbcb76a150264e683f6648bbb55c09c4047] | committer: 
Jean-Baptiste Kempf

deinterlace: add function to initialize the deinterlacing context

Signed-off-by: Jean-Baptiste Kempf <[email protected]>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ed564cbcb76a150264e683f6648bbb55c09c4047
---

 modules/video_filter/deinterlace/common.c      | 18 ++++++++++++++++++
 modules/video_filter/deinterlace/common.h      |  2 ++
 modules/video_filter/deinterlace/deinterlace.c | 11 +----------
 3 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/modules/video_filter/deinterlace/common.c 
b/modules/video_filter/deinterlace/common.c
index a1b68dc869..cfd3a38983 100644
--- a/modules/video_filter/deinterlace/common.c
+++ b/modules/video_filter/deinterlace/common.c
@@ -33,6 +33,24 @@
 
 #include "common.h"
 
+void InitDeinterlacingContext( struct deinterlace_ctx *p_context )
+{
+    p_context->b_double_rate = false;
+    p_context->b_half_height = false;
+    p_context->b_use_frame_history = false;
+
+    p_context->meta[0].pi_date = VLC_TS_INVALID;
+    p_context->meta[0].pi_nb_fields = 2;
+    p_context->meta[0].pb_top_field_first = true;
+    for( int i = 1; i < METADATA_SIZE; i++ )
+        p_context->meta[i] = p_context->meta[i-1];
+
+    p_context->i_frame_offset = 0; /* start with default value (first-ever 
frame
+                                  cannot have offset) */
+    for( int i = 0; i < HISTORY_SIZE; i++ )
+        p_context->pp_history[i] = NULL;
+}
+
 void FlushDeinterlacing(struct deinterlace_ctx *p_context)
 {
     p_context->meta[0].pi_date = VLC_TS_INVALID;
diff --git a/modules/video_filter/deinterlace/common.h 
b/modules/video_filter/deinterlace/common.h
index a8e3de430a..ad74b5353d 100644
--- a/modules/video_filter/deinterlace/common.h
+++ b/modules/video_filter/deinterlace/common.h
@@ -89,6 +89,8 @@ struct deinterlace_ctx
 
 #define DEINTERLACE_DST_SIZE 3
 
+void InitDeinterlacingContext( struct deinterlace_ctx * );
+
 /**
  * @brief Get the field duration based on the previous fields or the frame rate
  * @param fmt output format of the deinterlacer with the frame rate
diff --git a/modules/video_filter/deinterlace/deinterlace.c 
b/modules/video_filter/deinterlace/deinterlace.c
index 210557716d..9888e58d25 100644
--- a/modules/video_filter/deinterlace/deinterlace.c
+++ b/modules/video_filter/deinterlace/deinterlace.c
@@ -333,16 +333,7 @@ notsupp:
     char *psz_mode = var_InheritString( p_filter, FILTER_CFG_PREFIX "mode" );
     SetFilterMethod( p_filter, psz_mode, packed );
 
-    for( int i = 0; i < METADATA_SIZE; i++ )
-    {
-        p_sys->context.meta[i].pi_date = VLC_TS_INVALID;
-        p_sys->context.meta[i].pi_nb_fields = 2;
-        p_sys->context.meta[i].pb_top_field_first = true;
-    }
-    p_sys->context.i_frame_offset = 0; /* start with default value (first-ever 
frame
-                                  cannot have offset) */
-    for( int i = 0; i < HISTORY_SIZE; i++ )
-        p_sys->context.pp_history[i] = NULL;
+    InitDeinterlacingContext( &p_sys->context );
 
     IVTCClearState( p_filter );
 

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to