From de23953de2d827381886c900b02e9ead02ad56a3 Mon Sep 17 00:00:00 2001 From: Clément Bœsch Date: Wed, 10 Oct 2012 00:36:19 +0200 Subject: lavfi/select: store scene score in buf ref metadata. --- libavfilter/version.h | 2 +- libavfilter/vf_select.c | 7 ++++++- tests/fate/filter.mak | 10 ++++++++++ tests/ref/fate/filter-metadata-scenedetect | 11 +++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 tests/ref/fate/filter-metadata-scenedetect diff --git a/libavfilter/version.h b/libavfilter/version.h index eeb78059e7..0ad7372f44 100644 --- a/libavfilter/version.h +++ b/libavfilter/version.h @@ -30,7 +30,7 @@ #define LIBAVFILTER_VERSION_MAJOR 3 #define LIBAVFILTER_VERSION_MINOR 20 -#define LIBAVFILTER_VERSION_MICRO 100 +#define LIBAVFILTER_VERSION_MICRO 101 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ LIBAVFILTER_VERSION_MINOR, \ diff --git a/libavfilter/vf_select.c b/libavfilter/vf_select.c index 7cb5aae783..341361da51 100644 --- a/libavfilter/vf_select.c +++ b/libavfilter/vf_select.c @@ -241,8 +241,13 @@ static int select_frame(AVFilterContext *ctx, AVFilterBufferRef *picref) AVFilterLink *inlink = ctx->inputs[0]; double res; - if (CONFIG_AVCODEC && select->do_scene_detect) + if (CONFIG_AVCODEC && select->do_scene_detect) { + char buf[32]; select->var_values[VAR_SCENE] = get_scene_score(ctx, picref); + // TODO: document metadata + snprintf(buf, sizeof(buf), "%f", select->var_values[VAR_SCENE]); + av_dict_set(&picref->metadata, "lavfi.scene_score", buf, 0); + } if (isnan(select->var_values[VAR_START_PTS])) select->var_values[VAR_START_PTS] = TS2D(picref->pts); if (isnan(select->var_values[VAR_START_T])) diff --git a/tests/fate/filter.mak b/tests/fate/filter.mak index 3d563c8aad..e01d21b0fd 100644 --- a/tests/fate/filter.mak +++ b/tests/fate/filter.mak @@ -44,5 +44,15 @@ fate-filter-yadif-mode1: CMD = framecrc -flags bitexact -idct simple -i $(SAMPLE FATE_FILTER-$(CONFIG_YADIF_FILTER) += $(FATE_YADIF) +# +# Metadata tests +# +FILTER_METADATA_COMMAND = ffprobe$(EXESUF) -show_frames -of compact=nk=1:p=0 -bitexact -f lavfi + +FATE_FILTER-$(call ALLYES, FFPROBE LAVFI_INDEV MOVIE_FILTER SELECT_FILTER AVCODEC MOV_DEMUXER SVQ3_DECODER ZLIB) += fate-filter-metadata-scenedetect +fate-filter-metadata-scenedetect: SRC = $(SAMPLES)/svq3/Vertical400kbit.sorenson3.mov +fate-filter-metadata-scenedetect: CMD = run $(FILTER_METADATA_COMMAND) "movie=$(SRC),select=gt(scene\,.4)" + + FATE_SAMPLES_AVCONV += $(FATE_FILTER-yes) fate-filter: $(FATE_FILTER-yes) diff --git a/tests/ref/fate/filter-metadata-scenedetect b/tests/ref/fate/filter-metadata-scenedetect new file mode 100644 index 0000000000..21cc5484e6 --- /dev/null +++ b/tests/ref/fate/filter-metadata-scenedetect @@ -0,0 +1,11 @@ +video|1|20|0.033333|20|0.033333|1|0.001667|29927|320|240|rgb24|1:1|I|0|0|0|0|0|0|1.000000 +video|1|1640|2.733333|1640|2.733333|1|0.001667|164269|320|240|rgb24|1:1|I|0|0|0|0|0|0|1.000000 +video|1|4160|6.933333|4160|6.933333|1|0.001667|808833|320|240|rgb24|1:1|I|0|0|0|0|0|0|0.870000 +video|1|5820|9.700000|5820|9.700000|1|0.001667|933313|320|240|rgb24|1:1|I|0|0|0|0|0|0|1.000000 +video|1|6740|11.233333|6740|11.233333|1|0.001667|1040437|320|240|rgb24|1:1|I|0|0|0|0|0|0|0.460000 +video|1|8180|13.633333|8180|13.633333|1|0.001667|1248589|320|240|rgb24|1:1|I|0|0|0|0|0|0|1.000000 +video|1|9780|16.300000|9780|16.300000|1|0.001667|1348821|320|240|rgb24|1:1|I|0|0|0|0|0|0|1.000000 +video|1|14100|23.500000|14100|23.500000|1|0.001667|2006431|320|240|rgb24|1:1|I|0|0|0|0|0|0|0.850000 +video|1|15720|26.200000|15720|26.200000|1|0.001667|2151283|320|240|rgb24|1:1|I|0|0|0|0|0|0|1.000000 +video|1|18520|30.866667|18520|30.866667|1|0.001667|2515017|320|240|rgb24|1:1|I|0|0|0|0|0|0|0.470000 +video|1|21780|36.300000|21780|36.300000|1|0.001667|2933379|320|240|rgb24|1:1|I|0|0|0|0|0|0|1.000000 -- cgit v1.2.3