summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClément Bœsch <ubitux@gmail.com>2012-10-10 00:36:19 +0200
committerClément Bœsch <ubitux@gmail.com>2012-10-21 17:29:11 +0200
commitde23953de2d827381886c900b02e9ead02ad56a3 (patch)
treef35f3dda2d54f3f37f91b9289d0af6ef1e7cddd3
parent6fb2fd895e858ab93f46e656a322778ee181c307 (diff)
downloadffmpeg-streaming-de23953de2d827381886c900b02e9ead02ad56a3.zip
ffmpeg-streaming-de23953de2d827381886c900b02e9ead02ad56a3.tar.gz
lavfi/select: store scene score in buf ref metadata.
-rw-r--r--libavfilter/version.h2
-rw-r--r--libavfilter/vf_select.c7
-rw-r--r--tests/fate/filter.mak10
-rw-r--r--tests/ref/fate/filter-metadata-scenedetect11
4 files changed, 28 insertions, 2 deletions
diff --git a/libavfilter/version.h b/libavfilter/version.h
index eeb7805..0ad7372 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 7cb5aae..341361d 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 3d563c8..e01d21b 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 0000000..21cc548
--- /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
OpenPOWER on IntegriCloud