Commit 6e5c08dac9 for ffmpeg
commit 6e5c08dac98eb68c4e56860e57b3982849952b2a
Author: Romain Beauxis <romain.beauxis@gmail.com>
Date: Sat Oct 31 09:57:15 2026 -0500
fate/ogg-vorbis: add a chained decoding test
Two generated links encoded at different qualities are piped into
one decoder, so that each link needs its own codebooks.
The reference records the level of each half second today, which
drops once the second link is decoded with the first link's codebooks.
diff --git a/tests/fate/ogg-vorbis.mak b/tests/fate/ogg-vorbis.mak
index 19e069c565..da94f3b563 100644
--- a/tests/fate/ogg-vorbis.mak
+++ b/tests/fate/ogg-vorbis.mak
@@ -57,6 +57,18 @@ fate-ogg-vorbis-libvorbis-1s: CMD = run_with_temp "$(FFMPEG) -nostdin -hide_bann
FATE_OGG_VORBIS_ENCODE_PROBE-$(call ENCDEC, LIBVORBIS VORBIS, OGG, LAVFI_INDEV SINE_FILTER) += fate-ogg-vorbis-libvorbis-30s
fate-ogg-vorbis-libvorbis-30s: CMD = run_with_temp "$(FFMPEG) -nostdin -hide_banner -loglevel quiet -f lavfi -i sine=frequency=440:duration=30:sample_rate=44100 -c:a libvorbis -bitexact -f ogg -y" "ffprobe$(PROGSSUF)$(EXESUF) -print_filename $$test -of default -bitexact -threads 1 -read_intervals %+\#5 -show_entries stream=codec_name,initial_padding:packet=pts,pts_time,dts,dts_time,duration,duration_time,flags:packet_side_data_list:format=filename,nb_streams,nb_programs,nb_stream_groups,format_name,start_time,duration,probe_score" ogg
+# Two links encoded at different qualities, so each has its own codebooks.
+# Decoded floats differ across platforms, so the output is the level of each
+# half second, in whole decibels.
+FATE_OGG_VORBIS_CHAIN-$(call TRANSCODE, LIBVORBIS VORBIS, OGG, FD_PROTOCOL PCM_S16LE_DECODER LAVFI_INDEV SINE_FILTER ARESAMPLE_FILTER ASETNSAMPLES_FILTER ASTATS_FILTER AMETADATA_FILTER NULL_MUXER) += fate-ogg-vorbis-chained-setup
+fate-ogg-vorbis-chained-setup: CMD = \
+ { ffmpeg -auto_conversion_filters -f lavfi -i sine=frequency=440:duration=1 -c:a libvorbis -q:a 1 \
+ -flags +bitexact -fflags +bitexact -f ogg - && \
+ ffmpeg -auto_conversion_filters -f lavfi -i sine=frequency=660:duration=1 -c:a libvorbis -q:a 9 \
+ -flags +bitexact -fflags +bitexact -serial_offset 1 -f ogg -; } | \
+ ffmpeg -auto_conversion_filters -i - -af asetnsamples=n=22050:p=0,astats=metadata=1:reset=1,ametadata=print:key=lavfi.astats.Overall.RMS_level:file=- \
+ -f null - | awk -F= "/RMS_level/ { printf \"%.0f\\n\", \$$2 }"
+
FATE_OGG_VORBIS-$(call DEMDEC, OGG, VORBIS) += $(FATE_OGG_VORBIS)
FATE_SAMPLES_DUMP_STREAM_META += $(FATE_OGG_VORBIS-yes)
@@ -69,4 +81,6 @@ FATE_SAMPLES_FFPROBE += $(FATE_OGG_VORBIS_PROBE-yes)
FATE_FFMPEG_FFPROBE += $(FATE_OGG_VORBIS_ENCODE_PROBE-yes)
-fate-ogg-vorbis: $(FATE_OGG_VORBIS-yes) $(FATE_OGG_COPY_VORBIS-yes) $(FATE_OGG_VORBIS_PROBE-yes) $(FATE_OGG_VORBIS_ENCODE_PROBE-yes)
+FATE_FFMPEG += $(FATE_OGG_VORBIS_CHAIN-yes)
+
+fate-ogg-vorbis: $(FATE_OGG_VORBIS-yes) $(FATE_OGG_COPY_VORBIS-yes) $(FATE_OGG_VORBIS_PROBE-yes) $(FATE_OGG_VORBIS_ENCODE_PROBE-yes) $(FATE_OGG_VORBIS_CHAIN-yes)
diff --git a/tests/ref/fate/ogg-vorbis-chained-setup b/tests/ref/fate/ogg-vorbis-chained-setup
new file mode 100644
index 0000000000..b36c826bd7
--- /dev/null
+++ b/tests/ref/fate/ogg-vorbis-chained-setup
@@ -0,0 +1,5 @@
+-21
+-21
+-51
+-49
+-45