summaryrefslogtreecommitdiff
path: root/libavfilter/vf_idet.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-04-05 06:33:40 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-04-05 06:33:40 +0200
commit1a5c08eef6d64ec980dde74f97ddd9938e38936d (patch)
tree1838e92b0381b582ddf420e460d447fdb3c6030f /libavfilter/vf_idet.c
parentca2b450cee232bbb483984ebf5a20f1411023e0d (diff)
vf_idet: Add last_type variable to make code more readable.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavfilter/vf_idet.c')
-rw-r--r--libavfilter/vf_idet.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/libavfilter/vf_idet.c b/libavfilter/vf_idet.c
index eee1671f58..d5147d4045 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;