vf_idet: Add last_type variable to make code more readable.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
ca2b450cee
commit
1a5c08eef6
@ -37,7 +37,7 @@ typedef struct {
|
|||||||
float interlace_threshold;
|
float interlace_threshold;
|
||||||
float progressive_threshold;
|
float progressive_threshold;
|
||||||
|
|
||||||
|
Type last_type;
|
||||||
Type prestat[4];
|
Type prestat[4];
|
||||||
|
|
||||||
AVFilterBufferRef *cur;
|
AVFilterBufferRef *cur;
|
||||||
@ -107,32 +107,32 @@ static void filter(AVFilterContext *ctx)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (alpha[0] / (float)alpha[1] > idet->interlace_threshold){
|
if (alpha[0] / (float)alpha[1] > idet->interlace_threshold){
|
||||||
|
av_log(ctx, AV_LOG_INFO, "Interlaced, top field first\n");
|
||||||
type = TFF;
|
type = TFF;
|
||||||
}else if(alpha[1] / (float)alpha[0] > idet->interlace_threshold){
|
}else if(alpha[1] / (float)alpha[0] > idet->interlace_threshold){
|
||||||
|
av_log(ctx, AV_LOG_INFO, "Interlaced, bottom field first\n");
|
||||||
type = BFF;
|
type = BFF;
|
||||||
}else if(alpha[1] / (float)delta > idet->progressive_threshold){
|
}else if(alpha[1] / (float)delta > idet->progressive_threshold){
|
||||||
|
av_log(ctx, AV_LOG_INFO, "Progressive\n");
|
||||||
type = PROGRSSIVE;
|
type = PROGRSSIVE;
|
||||||
}else{
|
}else{
|
||||||
|
av_log(ctx, AV_LOG_INFO, "Undetermined\n");
|
||||||
type = UNDETERMINED;
|
type = UNDETERMINED;
|
||||||
}
|
}
|
||||||
|
|
||||||
idet->prestat[type] ++;
|
idet->prestat[type] ++;
|
||||||
|
|
||||||
if (type == TFF){
|
if (type != UNDETERMINED)
|
||||||
av_log(ctx, AV_LOG_INFO, "Interlaced, top field first\n");
|
idet->last_type = type;
|
||||||
|
|
||||||
|
if (idet->last_type == TFF){
|
||||||
idet->cur->video->top_field_first = 1;
|
idet->cur->video->top_field_first = 1;
|
||||||
idet->cur->video->interlaced = 1;
|
idet->cur->video->interlaced = 1;
|
||||||
}else if(type == BFF){
|
}else if(idet->last_type == BFF){
|
||||||
av_log(ctx, AV_LOG_INFO, "Interlaced, bottom field first\n");
|
|
||||||
idet->cur->video->top_field_first = 0;
|
idet->cur->video->top_field_first = 0;
|
||||||
idet->cur->video->interlaced = 1;
|
idet->cur->video->interlaced = 1;
|
||||||
}else if(type == PROGRSSIVE){
|
}else if(idet->last_type == PROGRSSIVE){
|
||||||
av_log(ctx, AV_LOG_INFO, "Progressive\n");
|
|
||||||
idet->cur->video->interlaced = 0;
|
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);
|
if (args) sscanf(args, "%f:%f", &idet->interlace_threshold, &idet->progressive_threshold);
|
||||||
|
|
||||||
|
idet->last_type = UNDETERMINED;
|
||||||
|
|
||||||
idet->filter_line = filter_line_c;
|
idet->filter_line = filter_line_c;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user