avfilter/vf_idet: add both multiple and single frame detection metadata

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Kevin Mitchell 2014-10-19 13:32:56 -07:00 committed by Michael Niedermayer
parent b5583fc3e0
commit ff68ceb1b5
3 changed files with 39 additions and 6 deletions

View File

@ -5573,6 +5573,34 @@ Detect video interlacing type.
This filter tries to detect if the input is interlaced or progressive, This filter tries to detect if the input is interlaced or progressive,
top or bottom field first. top or bottom field first.
The filter will log these metadata values:
@table @option
@item single.tff
Cumulative number of frames detected as top field first using single-frame detection.
@item multiple.tff
Cumulative number of frames detected as top field first using multiple-frame detection.
@item single.bff
Cumulative number of frames detected as bottom field first using single-frame detection.
@item multiple.bff
Cumulative number of frames detected as bottom field first using multiple-frame detection.
@item single.progressive
Cumulative number of frames detected as progressive using single-frame detection.
@item multiple.progressive
Cumulative number of frames detected as progressive using multiple-frame detection.
@item single.undetermined
Cumulative number of frames that could not be classified using single-frame detection.
@item multiple.undetermined
Cumulative number of frames that could not be classified using multiple-frame detection.
@end table
The filter accepts the following options: The filter accepts the following options:
@table @option @table @option

View File

@ -30,8 +30,8 @@
#include "libavutil/version.h" #include "libavutil/version.h"
#define LIBAVFILTER_VERSION_MAJOR 5 #define LIBAVFILTER_VERSION_MAJOR 5
#define LIBAVFILTER_VERSION_MINOR 1 #define LIBAVFILTER_VERSION_MINOR 2
#define LIBAVFILTER_VERSION_MICRO 106 #define LIBAVFILTER_VERSION_MICRO 100
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \ LIBAVFILTER_VERSION_MINOR, \

View File

@ -178,10 +178,15 @@ static int filter_frame(AVFilterLink *link, AVFrame *picref)
filter(ctx); filter(ctx);
av_dict_set_int(metadata, "lavfi.idet.tff", idet->prestat[TFF], 0); av_dict_set_int(metadata, "lavfi.idet.single.tff", idet->prestat[TFF], 0);
av_dict_set_int(metadata, "lavfi.idet.bff", idet->prestat[BFF], 0); av_dict_set_int(metadata, "lavfi.idet.single.bff", idet->prestat[BFF], 0);
av_dict_set_int(metadata, "lavfi.idet.progressive", idet->prestat[PROGRESSIVE], 0); av_dict_set_int(metadata, "lavfi.idet.single.progressive", idet->prestat[PROGRESSIVE], 0);
av_dict_set_int(metadata, "lavfi.idet.undetermined", idet->prestat[UNDETERMINED], 0); av_dict_set_int(metadata, "lavfi.idet.single.undetermined", idet->prestat[UNDETERMINED], 0);
av_dict_set_int(metadata, "lavfi.idet.multiple.tff", idet->poststat[TFF], 0);
av_dict_set_int(metadata, "lavfi.idet.multiple.bff", idet->poststat[BFF], 0);
av_dict_set_int(metadata, "lavfi.idet.multiple.progressive", idet->poststat[PROGRESSIVE], 0);
av_dict_set_int(metadata, "lavfi.idet.multiple.undetermined", idet->poststat[UNDETERMINED], 0);
return ff_filter_frame(ctx->outputs[0], av_frame_clone(idet->cur)); return ff_filter_frame(ctx->outputs[0], av_frame_clone(idet->cur));
} }