Commit 4bef4614fe for ffmpeg
commit 4bef4614fe8e7429600cc445f0e5aad5ec89ba6e
Author: Martin Mirchev <mmirchev@comp.nus.edu.sg>
Date: Wed Oct 21 19:01:48 2026 +0800
tests/fate/mov: add a test for IAMF stream group id collisions
Mux two IAMF audio elements with ids 1 and 2 and a mix presentation with
id 1 into mp4, then demux and probe the result. Without the previous
commit the mov demuxer aborts on an assertion when reading this file.
Signed-off-by: Martin Mirchev <mmirchev@comp.nus.edu.sg>
diff --git a/tests/fate/mov.mak b/tests/fate/mov.mak
index 3550e1d7b8..8427e6f802 100644
--- a/tests/fate/mov.mak
+++ b/tests/fate/mov.mak
@@ -483,6 +483,17 @@ fate-mov-mp4-iamf-stereo: CMD = transcode wav $(SRC) mp4 " \
-streamid 0:0 -c:a flac -t 1" "-c:a copy -map 0" \
"-show_entries stream_group=index,id,nb_streams,type:stream_group_components:stream_group_disposition:stream_group_tags:stream_group_stream=index,id:stream_group_stream_disposition"
+# Two audio elements and a mix presentation whose id equals the id of the first audio element.
+FATE_MOV_FFMPEG_FFPROBE-$(call TRANSCODE, FLAC, MP4 MOV, WAV_DEMUXER PCM_S16LE_DECODER IAMFENC IAMFDEC) += fate-mov-mp4-iamf-stereo-id-collision
+fate-mov-mp4-iamf-stereo-id-collision: tests/data/asynth-44100-2.wav tests/data/streamgroups/audio_element-stereo tests/data/streamgroups/audio_element-stereo-2 tests/data/streamgroups/mix_presentation-stereo-id-1
+fate-mov-mp4-iamf-stereo-id-collision: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav
+fate-mov-mp4-iamf-stereo-id-collision: CMD = transcode wav $(SRC) mp4 " \
+ -/stream_group $(TARGET_PATH)/tests/data/streamgroups/audio_element-stereo \
+ -/stream_group $(TARGET_PATH)/tests/data/streamgroups/audio_element-stereo-2 \
+ -/stream_group $(TARGET_PATH)/tests/data/streamgroups/mix_presentation-stereo-id-1 \
+ -map 0:a -map 0:a -streamid 0:0 -streamid 1:1 -c:a flac -t 1" "-c:a copy -map 0" \
+ "-show_entries stream_group=index,id,nb_streams,type:stream_group_stream=index,id:stream=index,id,duration_ts"
+
FATE_MOV_FFMPEG_FFPROBE-$(call TRANSCODE, FLAC, MP4 MOV, WAV_DEMUXER PCM_S16LE_DECODER ARESAMPLE_FILTER) += fate-mov-mp4-iamf-5_1_4
fate-mov-mp4-iamf-5_1_4: tests/data/asynth-44100-10.wav tests/data/filtergraphs/iamf_5_1_4 tests/data/streamgroups/audio_element-5_1_4 tests/data/streamgroups/mix_presentation-5_1_4
fate-mov-mp4-iamf-5_1_4: SRC = $(TARGET_PATH)/tests/data/asynth-44100-10.wav
diff --git a/tests/ref/fate/mov-mp4-iamf-stereo-id-collision b/tests/ref/fate/mov-mp4-iamf-stereo-id-collision
new file mode 100644
index 0000000000..42ff3baa2e
--- /dev/null
+++ b/tests/ref/fate/mov-mp4-iamf-stereo-id-collision
@@ -0,0 +1,84 @@
+70db394605b10ad0ae367fd93eca5d77 *tests/data/fate/mov-mp4-iamf-stereo-id-collision.mp4
+29290 tests/data/fate/mov-mp4-iamf-stereo-id-collision.mp4
+#extradata 0: 34, 0xa77c0cd6
+#extradata 1: 34, 0xa77c0cd6
+#tb 0: 1/44100
+#media_type 0: audio
+#codec_id 0: flac
+#sample_rate 0: 44100
+#channel_layout_name 0: stereo
+#tb 1: 1/44100
+#media_type 1: audio
+#codec_id 1: flac
+#sample_rate 1: 44100
+#channel_layout_name 1: stereo
+0, 0, 0, 4096, 1323, 0xb9bc0f9a
+1, 0, 0, 4096, 1323, 0xb9bc0f9a
+0, 4096, 4096, 4096, 1254, 0xf7e910bc
+1, 4096, 4096, 4096, 1254, 0xf7e910bc
+0, 8192, 8192, 4096, 1320, 0xe4fe09c9
+1, 8192, 8192, 4096, 1320, 0xe4fe09c9
+0, 12288, 12288, 4096, 1280, 0x22e9127e
+1, 12288, 12288, 4096, 1280, 0x22e9127e
+0, 16384, 16384, 4096, 1331, 0x8bc61bbf
+1, 16384, 16384, 4096, 1331, 0x8bc61bbf
+0, 20480, 20480, 4096, 1267, 0x2c4708fa
+1, 20480, 20480, 4096, 1267, 0x2c4708fa
+0, 24576, 24576, 4096, 1282, 0x0438152d
+1, 24576, 24576, 4096, 1282, 0x0438152d
+0, 28672, 28672, 4096, 1313, 0x2e79ffa2
+1, 28672, 28672, 4096, 1313, 0x2e79ffa2
+0, 32768, 32768, 4096, 1323, 0xb9f70fce
+1, 32768, 32768, 4096, 1323, 0xb9f70fce
+0, 36864, 36864, 4096, 1254, 0xf6f01051
+1, 36864, 36864, 4096, 1254, 0xf6f01051
+0, 40960, 40960, 4096, 1235, 0xcf181f77, S=1, Skip Samples, 10, 0x047700bf
+1, 40960, 40960, 4096, 1235, 0xcf181f77, S=1, Skip Samples, 10, 0x047700bf
+[STREAM_GROUP]
+index=0
+id=0x1
+nb_streams=1
+type=IAMF Audio Element
+[STREAM]
+index=0
+id=0x0
+duration_ts=44100
+[/STREAM]
+[/STREAM_GROUP]
+[STREAM_GROUP]
+index=1
+id=0x2
+nb_streams=1
+type=IAMF Audio Element
+[STREAM]
+index=1
+id=0x1
+duration_ts=44100
+[/STREAM]
+[/STREAM_GROUP]
+[STREAM_GROUP]
+index=2
+id=0x1
+nb_streams=2
+type=IAMF Mix Presentation
+[STREAM]
+index=0
+id=0x0
+duration_ts=44100
+[/STREAM]
+[STREAM]
+index=1
+id=0x1
+duration_ts=44100
+[/STREAM]
+[/STREAM_GROUP]
+[STREAM]
+index=0
+id=0x0
+duration_ts=44100
+[/STREAM]
+[STREAM]
+index=1
+id=0x1
+duration_ts=44100
+[/STREAM]
diff --git a/tests/streamgroups/audio_element-stereo-2 b/tests/streamgroups/audio_element-stereo-2
new file mode 100644
index 0000000000..c935ebf99c
--- /dev/null
+++ b/tests/streamgroups/audio_element-stereo-2
@@ -0,0 +1,2 @@
+type=iamf_audio_element:id=2:st=1,
+layer=ch_layout=stereo,
diff --git a/tests/streamgroups/mix_presentation-stereo-id-1 b/tests/streamgroups/mix_presentation-stereo-id-1
new file mode 100644
index 0000000000..5b4b3420c4
--- /dev/null
+++ b/tests/streamgroups/mix_presentation-stereo-id-1
@@ -0,0 +1,2 @@
+type=iamf_mix_presentation:id=1:stg=0:stg=1,
+submix=parameter_id=100:parameter_rate=48000:default_mix_gain=1.0|element=stg=0:parameter_id=201:parameter_rate=48000:headphones_rendering_mode=stereo|element=stg=1:parameter_id=102:parameter_rate=48000:headphones_rendering_mode=stereo|layout=sound_system=stereo,