Commit 3c9ed5305c for ffmpeg

commit 3c9ed5305c7164b9311fffb08ca9cef4582aaa25
Author: Michael Niedermayer <michael@niedermayer.cc>
Date:   Thu Nov 5 03:41:23 2026 +0100

    tests/fate: cover audio encoder boundary cases

    Exercise the short DVD PCM tail, one-sample TTA frame, early RoQ flush and mono Microsoft ADPCM trellis paths fixed by PR 25694. Existing audio round trips do not cover these boundaries.

    Generate input with sine and atrim, and compare packets through the framecrc muxer. No new samples or bitstream generator are needed.

    Assisted-by: Fairy

diff --git a/tests/fate/acodec.mak b/tests/fate/acodec.mak
index 435d02cbd8..0669c705b5 100644
--- a/tests/fate/acodec.mak
+++ b/tests/fate/acodec.mak
@@ -184,3 +184,22 @@ $(FATE_ACODEC): tests/data/asynth-44100-2.wav

 FATE_AVCONV += $(FATE_ACODEC)
 fate-acodec: $(FATE_ACODEC)
+
+# Exercise encoder boundary cases without external samples.
+AUDIO_ENCODER_BOUNDARY_DEPS = LAVFI_INDEV SINE_FILTER ATRIM_FILTER \
+                              PCM_S16LE_DECODER FRAMECRC_MUXER PIPE_PROTOCOL
+
+FATE_AUDIO_ENCODER_BOUNDARY-$(call ALLYES, $(AUDIO_ENCODER_BOUNDARY_DEPS) PCM_DVD_ENCODER ARESAMPLE_FILTER) += fate-audio-enc-pcm-dvd-short-tail
+fate-audio-enc-pcm-dvd-short-tail: CMD = framecrc -auto_conversion_filters -f lavfi -i sine=r=48000 -af atrim=end_sample=171 -c:a pcm_dvd -sample_fmt s32
+
+FATE_AUDIO_ENCODER_BOUNDARY-$(call ALLYES, $(AUDIO_ENCODER_BOUNDARY_DEPS) TTA_ENCODER) += fate-audio-enc-tta-one-sample
+fate-audio-enc-tta-one-sample: CMD = framecrc -f lavfi -i sine=r=44100 -af atrim=end_sample=1 -c:a tta
+
+FATE_AUDIO_ENCODER_BOUNDARY-$(call ALLYES, $(AUDIO_ENCODER_BOUNDARY_DEPS) ROQ_DPCM_ENCODER) += fate-audio-enc-roq-early-flush
+fate-audio-enc-roq-early-flush: CMD = framecrc -f lavfi -i sine=r=22050 -af atrim=end_sample=2205 -c:a roq_dpcm
+
+FATE_AUDIO_ENCODER_BOUNDARY-$(call ALLYES, $(AUDIO_ENCODER_BOUNDARY_DEPS) ADPCM_MS_ENCODER) += fate-audio-enc-adpcm-ms-mono-trellis
+fate-audio-enc-adpcm-ms-mono-trellis: CMD = framecrc -f lavfi -i sine=r=44100 -af atrim=end_sample=2036 -c:a adpcm_ms -trellis 5
+
+FATE_FFMPEG += $(FATE_AUDIO_ENCODER_BOUNDARY-yes)
+fate-acodec fate-audio-encoder-boundary: $(FATE_AUDIO_ENCODER_BOUNDARY-yes)
diff --git a/tests/ref/fate/audio-enc-adpcm-ms-mono-trellis b/tests/ref/fate/audio-enc-adpcm-ms-mono-trellis
new file mode 100644
index 0000000000..9834a0ae42
--- /dev/null
+++ b/tests/ref/fate/audio-enc-adpcm-ms-mono-trellis
@@ -0,0 +1,7 @@
+#extradata 0:       32, 0x5ff30790
+#tb 0: 1/44100
+#media_type 0: audio
+#codec_id 0: adpcm_ms
+#sample_rate 0: 44100
+#channel_layout_name 0: mono
+0,          0,          0,     2036,     1024, 0xc01f0e3d
diff --git a/tests/ref/fate/audio-enc-pcm-dvd-short-tail b/tests/ref/fate/audio-enc-pcm-dvd-short-tail
new file mode 100644
index 0000000000..c91c63430d
--- /dev/null
+++ b/tests/ref/fate/audio-enc-pcm-dvd-short-tail
@@ -0,0 +1,6 @@
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: pcm_dvd
+#sample_rate 0: 48000
+#channel_layout_name 0: mono
+0,          0,          0,      168,      507, 0x9073936f
diff --git a/tests/ref/fate/audio-enc-roq-early-flush b/tests/ref/fate/audio-enc-roq-early-flush
new file mode 100644
index 0000000000..ada7a355c4
--- /dev/null
+++ b/tests/ref/fate/audio-enc-roq-early-flush
@@ -0,0 +1,6 @@
+#tb 0: 1/22050
+#media_type 0: audio
+#codec_id 0: roq_dpcm
+#sample_rate 0: 22050
+#channel_layout_name 0: mono
+0,          0,          0,     2205,     2213, 0x75b0bd9d
diff --git a/tests/ref/fate/audio-enc-tta-one-sample b/tests/ref/fate/audio-enc-tta-one-sample
new file mode 100644
index 0000000000..bed8b2b65b
--- /dev/null
+++ b/tests/ref/fate/audio-enc-tta-one-sample
@@ -0,0 +1,6 @@
+#tb 0: 1/44100
+#media_type 0: audio
+#codec_id 0: tta
+#sample_rate 0: 44100
+#channel_layout_name 0: mono
+0,          0,          0,        1,        6, 0x0625022b