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