[FFmpeg-cvslog] vf_idet: Add last_type variable to make code more readable.

Michael Niedermayer git at videolan.org
Thu Apr 5 07:02:38 CEST 2012


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Thu Apr  5 06:33:40 2012 +0200| [1a5c08eef6d64ec980dde74f97ddd9938e38936d] | committer: Michael Niedermayer

vf_idet: Add last_type variable to make code more readable.

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1a5c08eef6d64ec980dde74f97ddd9938e38936d
---

 libavfilter/vf_idet.c |   24 +++++++++++++-----------
 1 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/libavfilter/vf_idet.c b/libavfilter/vf_idet.c
index eee1671..d5147d4 100644
--- a/libavfilter/vf_idet.c
+++ b/libavfilter/vf_idet.c
@@ -37,7 +37,7 @@ typedef struct {
     float interlace_threshold;
     float progressive_threshold;
 
-
+    Type last_type;
     Type prestat[4];
 
     AVFilterBufferRef *cur;
@@ -107,32 +107,32 @@ static void filter(AVFilterContext *ctx)
 #endif
 
     if      (alpha[0] / (float)alpha[1] > idet->interlace_threshold){
+        av_log(ctx, AV_LOG_INFO, "Interlaced, top field first\n");
         type = TFF;
     }else if(alpha[1] / (float)alpha[0] > idet->interlace_threshold){
+        av_log(ctx, AV_LOG_INFO, "Interlaced, bottom field first\n");
         type = BFF;
     }else if(alpha[1] / (float)delta    > idet->progressive_threshold){
+        av_log(ctx, AV_LOG_INFO, "Progressive\n");
         type = PROGRSSIVE;
     }else{
+        av_log(ctx, AV_LOG_INFO, "Undetermined\n");
         type = UNDETERMINED;
     }
 
     idet->prestat[type] ++;
 
-    if      (type == TFF){
-        av_log(ctx, AV_LOG_INFO, "Interlaced, top field first\n");
+    if (type != UNDETERMINED)
+        idet->last_type = type;
+
+    if      (idet->last_type == TFF){
         idet->cur->video->top_field_first = 1;
         idet->cur->video->interlaced = 1;
-    }else if(type == BFF){
-        av_log(ctx, AV_LOG_INFO, "Interlaced, bottom field first\n");
+    }else if(idet->last_type == BFF){
         idet->cur->video->top_field_first = 0;
         idet->cur->video->interlaced = 1;
-    }else if(type == PROGRSSIVE){
-        av_log(ctx, AV_LOG_INFO, "Progressive\n");
+    }else if(idet->last_type == PROGRSSIVE){
         idet->cur->video->interlaced = 0;
-    }else{
-        av_log(ctx, AV_LOG_INFO, "Undetermined\n");
-        idet->cur->video->interlaced      = idet->prev->video->interlaced;
-        idet->cur->video->top_field_first = idet->prev->video->top_field_first;
     }
 }
 
@@ -265,6 +265,8 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
 
     if (args) sscanf(args, "%f:%f", &idet->interlace_threshold, &idet->progressive_threshold);
 
+    idet->last_type = UNDETERMINED;
+
     idet->filter_line = filter_line_c;
 
     return 0;



More information about the ffmpeg-cvslog mailing list