|
|
|
@ -40,10 +40,10 @@ AVFILTER_DEFINE_CLASS(idet); |
|
|
|
|
static const char *type2str(Type type) |
|
|
|
|
{ |
|
|
|
|
switch(type) { |
|
|
|
|
case TFF : return "Top Field First "; |
|
|
|
|
case BFF : return "Bottom Field First"; |
|
|
|
|
case PROGRSSIVE : return "Progressive "; |
|
|
|
|
case UNDETERMINED: return "Undetermined "; |
|
|
|
|
case TFF : return "Top Field First "; |
|
|
|
|
case BFF : return "Bottom Field First"; |
|
|
|
|
case PROGRESSIVE : return "Progressive "; |
|
|
|
|
case UNDETERMINED : return "Undetermined "; |
|
|
|
|
} |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
@ -108,7 +108,7 @@ static void filter(AVFilterContext *ctx) |
|
|
|
|
}else if(alpha[1] > idet->interlace_threshold * alpha[0]){ |
|
|
|
|
type = BFF; |
|
|
|
|
}else if(alpha[1] > idet->progressive_threshold * delta){ |
|
|
|
|
type = PROGRSSIVE; |
|
|
|
|
type = PROGRESSIVE; |
|
|
|
|
}else{ |
|
|
|
|
type = UNDETERMINED; |
|
|
|
|
} |
|
|
|
@ -141,7 +141,7 @@ static void filter(AVFilterContext *ctx) |
|
|
|
|
}else if(idet->last_type == BFF){ |
|
|
|
|
idet->cur->top_field_first = 0; |
|
|
|
|
idet->cur->interlaced_frame = 1; |
|
|
|
|
}else if(idet->last_type == PROGRSSIVE){ |
|
|
|
|
}else if(idet->last_type == PROGRESSIVE){ |
|
|
|
|
idet->cur->interlaced_frame = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -187,13 +187,13 @@ static av_cold void uninit(AVFilterContext *ctx) |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "Single frame detection: TFF:%d BFF:%d Progressive:%d Undetermined:%d\n", |
|
|
|
|
idet->prestat[TFF], |
|
|
|
|
idet->prestat[BFF], |
|
|
|
|
idet->prestat[PROGRSSIVE], |
|
|
|
|
idet->prestat[PROGRESSIVE], |
|
|
|
|
idet->prestat[UNDETERMINED] |
|
|
|
|
); |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "Multi frame detection: TFF:%d BFF:%d Progressive:%d Undetermined:%d\n", |
|
|
|
|
idet->poststat[TFF], |
|
|
|
|
idet->poststat[BFF], |
|
|
|
|
idet->poststat[PROGRSSIVE], |
|
|
|
|
idet->poststat[PROGRESSIVE], |
|
|
|
|
idet->poststat[UNDETERMINED] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|