diff mbox series

[FFmpeg-devel,4/4] fate: add raw IAMF tests

Message ID 20240107213100.16205-4-jamrial@gmail.com
State New
Headers show
Series [FFmpeg-devel,1/4] avformat/iamfenc: don't write empty packets | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 fail Make fate failed
andriy/make_x86 success Make finished
andriy/make_fate_x86 fail Make fate failed

Commit Message

James Almer Jan. 7, 2024, 9:31 p.m. UTC
Covers muxing from raw pcm audio input into FLAC, using several scalable layouts,
and demuxing the result.

Signed-off-by: James Almer <jamrial@gmail.com>
---
 tests/Makefile                             |   7 +-
 tests/fate/iamf.mak                        |  31 ++++++
 tests/filtergraphs/iamf_5_1                |   4 +
 tests/filtergraphs/iamf_5_1_2              |   5 +
 tests/filtergraphs/iamf_5_1_4              |   6 ++
 tests/filtergraphs/iamf_7_1_4              |   7 ++
 tests/ref/fate/iamf-5_1_4                  |  98 ++++++++++++++++++
 tests/ref/fate/iamf-7_1_4                  | 114 +++++++++++++++++++++
 tests/ref/fate/iamf-stereo                 |  18 ++++
 tests/streamgroups/audio_element-5_1_4     |   7 ++
 tests/streamgroups/audio_element-7_1_4     |   6 ++
 tests/streamgroups/audio_element-stereo    |   3 +
 tests/streamgroups/mix_presentation-5_1_4  |   2 +
 tests/streamgroups/mix_presentation-7_1_4  |   2 +
 tests/streamgroups/mix_presentation-stereo |   3 +
 15 files changed, 312 insertions(+), 1 deletion(-)
 create mode 100644 tests/fate/iamf.mak
 create mode 100644 tests/filtergraphs/iamf_5_1
 create mode 100644 tests/filtergraphs/iamf_5_1_2
 create mode 100644 tests/filtergraphs/iamf_5_1_4
 create mode 100644 tests/filtergraphs/iamf_7_1_4
 create mode 100644 tests/ref/fate/iamf-5_1_4
 create mode 100644 tests/ref/fate/iamf-7_1_4
 create mode 100644 tests/ref/fate/iamf-stereo
 create mode 100644 tests/streamgroups/audio_element-5_1_4
 create mode 100644 tests/streamgroups/audio_element-7_1_4
 create mode 100644 tests/streamgroups/audio_element-stereo
 create mode 100644 tests/streamgroups/mix_presentation-5_1_4
 create mode 100644 tests/streamgroups/mix_presentation-7_1_4
 create mode 100644 tests/streamgroups/mix_presentation-stereo

Comments

Michael Niedermayer Jan. 10, 2024, 3:05 a.m. UTC | #1
On Sun, Jan 07, 2024 at 06:31:00PM -0300, James Almer wrote:
> Covers muxing from raw pcm audio input into FLAC, using several scalable layouts,
> and demuxing the result.
> 
> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>  tests/Makefile                             |   7 +-
>  tests/fate/iamf.mak                        |  31 ++++++
>  tests/filtergraphs/iamf_5_1                |   4 +
>  tests/filtergraphs/iamf_5_1_2              |   5 +
>  tests/filtergraphs/iamf_5_1_4              |   6 ++
>  tests/filtergraphs/iamf_7_1_4              |   7 ++
>  tests/ref/fate/iamf-5_1_4                  |  98 ++++++++++++++++++
>  tests/ref/fate/iamf-7_1_4                  | 114 +++++++++++++++++++++
>  tests/ref/fate/iamf-stereo                 |  18 ++++
>  tests/streamgroups/audio_element-5_1_4     |   7 ++
>  tests/streamgroups/audio_element-7_1_4     |   6 ++
>  tests/streamgroups/audio_element-stereo    |   3 +
>  tests/streamgroups/mix_presentation-5_1_4  |   2 +
>  tests/streamgroups/mix_presentation-7_1_4  |   2 +
>  tests/streamgroups/mix_presentation-stereo |   3 +
>  15 files changed, 312 insertions(+), 1 deletion(-)
>  create mode 100644 tests/fate/iamf.mak
>  create mode 100644 tests/filtergraphs/iamf_5_1
>  create mode 100644 tests/filtergraphs/iamf_5_1_2
>  create mode 100644 tests/filtergraphs/iamf_5_1_4
>  create mode 100644 tests/filtergraphs/iamf_7_1_4
>  create mode 100644 tests/ref/fate/iamf-5_1_4
>  create mode 100644 tests/ref/fate/iamf-7_1_4
>  create mode 100644 tests/ref/fate/iamf-stereo
>  create mode 100644 tests/streamgroups/audio_element-5_1_4
>  create mode 100644 tests/streamgroups/audio_element-7_1_4
>  create mode 100644 tests/streamgroups/audio_element-stereo
>  create mode 100644 tests/streamgroups/mix_presentation-5_1_4
>  create mode 100644 tests/streamgroups/mix_presentation-7_1_4
>  create mode 100644 tests/streamgroups/mix_presentation-stereo

Iam probably missing some dependancies but, reporting anyway
this fails fate:

[aist#0:0/pcm_s16le @ 0x5645f5820680] Guessed Channel Layout: stereo
Input #0, wav, from 'ffmpeg/tests/data/asynth-44100-2.wav':
  Duration: 00:00:06.00, bitrate: 1411 kb/s
  Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s
[in#0/wav @ 0x5645f5812400] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some decoder which was not actually used for any stream.
[out#0/iamf @ 0x5645f585af80] Codec AVOption dct (DCT algorithm) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[out#0/iamf @ 0x5645f585af80] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[out#0/iamf @ 0x5645f585af80] Invalid or missing stream group index in submix element specification "stg=0:parameter_id=100:headphones_rendering_mode=stereo:annotations=en-us=Scalable_Submix"
Error opening output file ffmpeg/tests/data/fate/iamf-stereo.iamf.
Error opening output files: Invalid argument
threads=1
tests/Makefile:317: recipe for target 'fate-iamf-stereo' failed
make: *** [fate-iamf-stereo] Error 234

thx

[...]
James Almer Jan. 10, 2024, 12:52 p.m. UTC | #2
On 1/10/2024 12:05 AM, Michael Niedermayer wrote:
> On Sun, Jan 07, 2024 at 06:31:00PM -0300, James Almer wrote:
>> Covers muxing from raw pcm audio input into FLAC, using several scalable layouts,
>> and demuxing the result.
>>
>> Signed-off-by: James Almer <jamrial@gmail.com>
>> ---
>>   tests/Makefile                             |   7 +-
>>   tests/fate/iamf.mak                        |  31 ++++++
>>   tests/filtergraphs/iamf_5_1                |   4 +
>>   tests/filtergraphs/iamf_5_1_2              |   5 +
>>   tests/filtergraphs/iamf_5_1_4              |   6 ++
>>   tests/filtergraphs/iamf_7_1_4              |   7 ++
>>   tests/ref/fate/iamf-5_1_4                  |  98 ++++++++++++++++++
>>   tests/ref/fate/iamf-7_1_4                  | 114 +++++++++++++++++++++
>>   tests/ref/fate/iamf-stereo                 |  18 ++++
>>   tests/streamgroups/audio_element-5_1_4     |   7 ++
>>   tests/streamgroups/audio_element-7_1_4     |   6 ++
>>   tests/streamgroups/audio_element-stereo    |   3 +
>>   tests/streamgroups/mix_presentation-5_1_4  |   2 +
>>   tests/streamgroups/mix_presentation-7_1_4  |   2 +
>>   tests/streamgroups/mix_presentation-stereo |   3 +
>>   15 files changed, 312 insertions(+), 1 deletion(-)
>>   create mode 100644 tests/fate/iamf.mak
>>   create mode 100644 tests/filtergraphs/iamf_5_1
>>   create mode 100644 tests/filtergraphs/iamf_5_1_2
>>   create mode 100644 tests/filtergraphs/iamf_5_1_4
>>   create mode 100644 tests/filtergraphs/iamf_7_1_4
>>   create mode 100644 tests/ref/fate/iamf-5_1_4
>>   create mode 100644 tests/ref/fate/iamf-7_1_4
>>   create mode 100644 tests/ref/fate/iamf-stereo
>>   create mode 100644 tests/streamgroups/audio_element-5_1_4
>>   create mode 100644 tests/streamgroups/audio_element-7_1_4
>>   create mode 100644 tests/streamgroups/audio_element-stereo
>>   create mode 100644 tests/streamgroups/mix_presentation-5_1_4
>>   create mode 100644 tests/streamgroups/mix_presentation-7_1_4
>>   create mode 100644 tests/streamgroups/mix_presentation-stereo
> 
> Iam probably missing some dependancies but, reporting anyway
> this fails fate:
> 
> [aist#0:0/pcm_s16le @ 0x5645f5820680] Guessed Channel Layout: stereo
> Input #0, wav, from 'ffmpeg/tests/data/asynth-44100-2.wav':
>    Duration: 00:00:06.00, bitrate: 1411 kb/s
>    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s
> [in#0/wav @ 0x5645f5812400] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some decoder which was not actually used for any stream.
> [out#0/iamf @ 0x5645f585af80] Codec AVOption dct (DCT algorithm) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
> [out#0/iamf @ 0x5645f585af80] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
> [out#0/iamf @ 0x5645f585af80] Invalid or missing stream group index in submix element specification "stg=0:parameter_id=100:headphones_rendering_mode=stereo:annotations=en-us=Scalable_Submix"
> Error opening output file ffmpeg/tests/data/fate/iamf-stereo.iamf.
> Error opening output files: Invalid argument
> threads=1
> tests/Makefile:317: recipe for target 'fate-iamf-stereo' failed
> make: *** [fate-iamf-stereo] Error 234
> 
> thx

I can't reproduce this. Tried with these four patches using current 
master and it works.
Could it be strtoll misbehaving? Can you check what values are in idx, 
oc->nb_stream_groups, and endptr?
Michael Niedermayer Jan. 11, 2024, 3:17 a.m. UTC | #3
On Wed, Jan 10, 2024 at 09:52:28AM -0300, James Almer wrote:
> On 1/10/2024 12:05 AM, Michael Niedermayer wrote:
> > On Sun, Jan 07, 2024 at 06:31:00PM -0300, James Almer wrote:
> > > Covers muxing from raw pcm audio input into FLAC, using several scalable layouts,
> > > and demuxing the result.
> > > 
> > > Signed-off-by: James Almer <jamrial@gmail.com>
> > > ---
> > >   tests/Makefile                             |   7 +-
> > >   tests/fate/iamf.mak                        |  31 ++++++
> > >   tests/filtergraphs/iamf_5_1                |   4 +
> > >   tests/filtergraphs/iamf_5_1_2              |   5 +
> > >   tests/filtergraphs/iamf_5_1_4              |   6 ++
> > >   tests/filtergraphs/iamf_7_1_4              |   7 ++
> > >   tests/ref/fate/iamf-5_1_4                  |  98 ++++++++++++++++++
> > >   tests/ref/fate/iamf-7_1_4                  | 114 +++++++++++++++++++++
> > >   tests/ref/fate/iamf-stereo                 |  18 ++++
> > >   tests/streamgroups/audio_element-5_1_4     |   7 ++
> > >   tests/streamgroups/audio_element-7_1_4     |   6 ++
> > >   tests/streamgroups/audio_element-stereo    |   3 +
> > >   tests/streamgroups/mix_presentation-5_1_4  |   2 +
> > >   tests/streamgroups/mix_presentation-7_1_4  |   2 +
> > >   tests/streamgroups/mix_presentation-stereo |   3 +
> > >   15 files changed, 312 insertions(+), 1 deletion(-)
> > >   create mode 100644 tests/fate/iamf.mak
> > >   create mode 100644 tests/filtergraphs/iamf_5_1
> > >   create mode 100644 tests/filtergraphs/iamf_5_1_2
> > >   create mode 100644 tests/filtergraphs/iamf_5_1_4
> > >   create mode 100644 tests/filtergraphs/iamf_7_1_4
> > >   create mode 100644 tests/ref/fate/iamf-5_1_4
> > >   create mode 100644 tests/ref/fate/iamf-7_1_4
> > >   create mode 100644 tests/ref/fate/iamf-stereo
> > >   create mode 100644 tests/streamgroups/audio_element-5_1_4
> > >   create mode 100644 tests/streamgroups/audio_element-7_1_4
> > >   create mode 100644 tests/streamgroups/audio_element-stereo
> > >   create mode 100644 tests/streamgroups/mix_presentation-5_1_4
> > >   create mode 100644 tests/streamgroups/mix_presentation-7_1_4
> > >   create mode 100644 tests/streamgroups/mix_presentation-stereo
> > 
> > Iam probably missing some dependancies but, reporting anyway
> > this fails fate:
> > 
> > [aist#0:0/pcm_s16le @ 0x5645f5820680] Guessed Channel Layout: stereo
> > Input #0, wav, from 'ffmpeg/tests/data/asynth-44100-2.wav':
> >    Duration: 00:00:06.00, bitrate: 1411 kb/s
> >    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s
> > [in#0/wav @ 0x5645f5812400] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some decoder which was not actually used for any stream.
> > [out#0/iamf @ 0x5645f585af80] Codec AVOption dct (DCT algorithm) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
> > [out#0/iamf @ 0x5645f585af80] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
> > [out#0/iamf @ 0x5645f585af80] Invalid or missing stream group index in submix element specification "stg=0:parameter_id=100:headphones_rendering_mode=stereo:annotations=en-us=Scalable_Submix"
> > Error opening output file ffmpeg/tests/data/fate/iamf-stereo.iamf.
> > Error opening output files: Invalid argument
> > threads=1
> > tests/Makefile:317: recipe for target 'fate-iamf-stereo' failed
> > make: *** [fate-iamf-stereo] Error 234
> > 
> > thx
> 
> I can't reproduce this. Tried with these four patches using current master
> and it works.
> Could it be strtoll misbehaving? Can you check what values are in idx,
> oc->nb_stream_groups, and endptr?

didnt had time to look its 4am i need to eat and go to bed :)
but a quick test with this:
diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c
index 1b42ac9a1d7..224e9e8268e 100644
--- a/fftools/ffmpeg_mux_init.c
+++ b/fftools/ffmpeg_mux_init.c
@@ -2113,8 +2113,10 @@ static int of_parse_iamf_submixes(Muxer *mux, AVStreamGroup *stg, char *ptr)
                 char *endptr = NULL;
                 int64_t idx = -1;

-                if (e = av_dict_get(dict, "stg", NULL, 0))
+                if (e = av_dict_get(dict, "stg", NULL, 0)) {
                     idx = strtoll(e->value, &endptr, 0);
+                    av_log(0,0, "B idx:%"PRId64" NSG:%d endptr: %p endptr:%s value:%s\n", idx, oc->nb_stream_groups, endptr, endptr, e->value);
+                }
                 av_dict_set(&dict, "stg", NULL, 0);
                 if (!endptr || *endptr || idx < 0 || idx >= oc->nb_stream_groups - 1 ||
                     oc->stream_groups[idx]->type != AV_STREAM_GROUP_PARAMS_IAMF_AUDIO_ELEMENT) {
@@ -2245,6 +2247,7 @@ static int of_parse_group_token(Muxer *mux, const char *token, char *ptr)
     while (e = av_dict_get(dict, "stg", e, 0)) {
         char *endptr;
         int64_t idx = strtoll(e->value, &endptr, 0);
+        av_log(0,0, "idx:%"PRId64" NSG:%d endptr:%s\n", idx, oc->nb_stream_groups, endptr);
         if (*endptr || idx < 0 || idx >= oc->nb_stream_groups - 1) {
             av_log(mux, AV_LOG_ERROR, "Invalid stream group index %"PRId64"\n", idx);
             ret = AVERROR(EINVAL);


i get:
[aist#0:0/pcm_s16le @ 0x55ae216e6680] Guessed Channel Layout: stereo
Input #0, wav, from 'ffmpeg/tests/data/asynth-44100-2.wav':
  Duration: 00:00:06.00, bitrate: 1411 kb/s
  Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s
[in#0/wav @ 0x55ae216d8400] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some decoder which was not actually used for any stream.
[out#0/iamf @ 0x55ae21720f80] Codec AVOption dct (DCT algorithm) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[out#0/iamf @ 0x55ae21720f80] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
idx:0 NSG:2 endptr:
B idx:0 NSG:2 endptr: 0x55ae21728b81 endptr: value:0
[out#0/iamf @ 0x55ae21720f80] Invalid or missing stream group index in submix element specification "stg=0:parameter_id=100:headphones_rendering_mode=stereo:annotations=en-us=Scalable_Submix"
Error opening output file ffmpeg/tests/data/fate/iamf-stereo.iamf.
Error opening output files: Invalid argument
threads=1
tests/Makefile:317: recipe for target 'fate-iamf-stereo' failed
make: *** [fate-iamf-stereo] Error 234

i also see other failures:
make: *** [fate-iamf-stereo] Error 234
make: *** [fate-iamf-5_1_4] Error 234
make: *** [fate-iamf-7_1_4] Error 234

thx

[...]
James Almer Jan. 11, 2024, 12:02 p.m. UTC | #4
On 1/11/2024 12:17 AM, Michael Niedermayer wrote:
> On Wed, Jan 10, 2024 at 09:52:28AM -0300, James Almer wrote:
>> On 1/10/2024 12:05 AM, Michael Niedermayer wrote:
>>> On Sun, Jan 07, 2024 at 06:31:00PM -0300, James Almer wrote:
>>>> Covers muxing from raw pcm audio input into FLAC, using several scalable layouts,
>>>> and demuxing the result.
>>>>
>>>> Signed-off-by: James Almer <jamrial@gmail.com>
>>>> ---
>>>>    tests/Makefile                             |   7 +-
>>>>    tests/fate/iamf.mak                        |  31 ++++++
>>>>    tests/filtergraphs/iamf_5_1                |   4 +
>>>>    tests/filtergraphs/iamf_5_1_2              |   5 +
>>>>    tests/filtergraphs/iamf_5_1_4              |   6 ++
>>>>    tests/filtergraphs/iamf_7_1_4              |   7 ++
>>>>    tests/ref/fate/iamf-5_1_4                  |  98 ++++++++++++++++++
>>>>    tests/ref/fate/iamf-7_1_4                  | 114 +++++++++++++++++++++
>>>>    tests/ref/fate/iamf-stereo                 |  18 ++++
>>>>    tests/streamgroups/audio_element-5_1_4     |   7 ++
>>>>    tests/streamgroups/audio_element-7_1_4     |   6 ++
>>>>    tests/streamgroups/audio_element-stereo    |   3 +
>>>>    tests/streamgroups/mix_presentation-5_1_4  |   2 +
>>>>    tests/streamgroups/mix_presentation-7_1_4  |   2 +
>>>>    tests/streamgroups/mix_presentation-stereo |   3 +
>>>>    15 files changed, 312 insertions(+), 1 deletion(-)
>>>>    create mode 100644 tests/fate/iamf.mak
>>>>    create mode 100644 tests/filtergraphs/iamf_5_1
>>>>    create mode 100644 tests/filtergraphs/iamf_5_1_2
>>>>    create mode 100644 tests/filtergraphs/iamf_5_1_4
>>>>    create mode 100644 tests/filtergraphs/iamf_7_1_4
>>>>    create mode 100644 tests/ref/fate/iamf-5_1_4
>>>>    create mode 100644 tests/ref/fate/iamf-7_1_4
>>>>    create mode 100644 tests/ref/fate/iamf-stereo
>>>>    create mode 100644 tests/streamgroups/audio_element-5_1_4
>>>>    create mode 100644 tests/streamgroups/audio_element-7_1_4
>>>>    create mode 100644 tests/streamgroups/audio_element-stereo
>>>>    create mode 100644 tests/streamgroups/mix_presentation-5_1_4
>>>>    create mode 100644 tests/streamgroups/mix_presentation-7_1_4
>>>>    create mode 100644 tests/streamgroups/mix_presentation-stereo
>>>
>>> Iam probably missing some dependancies but, reporting anyway
>>> this fails fate:
>>>
>>> [aist#0:0/pcm_s16le @ 0x5645f5820680] Guessed Channel Layout: stereo
>>> Input #0, wav, from 'ffmpeg/tests/data/asynth-44100-2.wav':
>>>     Duration: 00:00:06.00, bitrate: 1411 kb/s
>>>     Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s
>>> [in#0/wav @ 0x5645f5812400] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some decoder which was not actually used for any stream.
>>> [out#0/iamf @ 0x5645f585af80] Codec AVOption dct (DCT algorithm) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
>>> [out#0/iamf @ 0x5645f585af80] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
>>> [out#0/iamf @ 0x5645f585af80] Invalid or missing stream group index in submix element specification "stg=0:parameter_id=100:headphones_rendering_mode=stereo:annotations=en-us=Scalable_Submix"
>>> Error opening output file ffmpeg/tests/data/fate/iamf-stereo.iamf.
>>> Error opening output files: Invalid argument
>>> threads=1
>>> tests/Makefile:317: recipe for target 'fate-iamf-stereo' failed
>>> make: *** [fate-iamf-stereo] Error 234
>>>
>>> thx
>>
>> I can't reproduce this. Tried with these four patches using current master
>> and it works.
>> Could it be strtoll misbehaving? Can you check what values are in idx,
>> oc->nb_stream_groups, and endptr?
> 
> didnt had time to look its 4am i need to eat and go to bed :)
> but a quick test with this:
> diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c
> index 1b42ac9a1d7..224e9e8268e 100644
> --- a/fftools/ffmpeg_mux_init.c
> +++ b/fftools/ffmpeg_mux_init.c
> @@ -2113,8 +2113,10 @@ static int of_parse_iamf_submixes(Muxer *mux, AVStreamGroup *stg, char *ptr)
>                   char *endptr = NULL;
>                   int64_t idx = -1;
> 
> -                if (e = av_dict_get(dict, "stg", NULL, 0))
> +                if (e = av_dict_get(dict, "stg", NULL, 0)) {
>                       idx = strtoll(e->value, &endptr, 0);
> +                    av_log(0,0, "B idx:%"PRId64" NSG:%d endptr: %p endptr:%s value:%s\n", idx, oc->nb_stream_groups, endptr, endptr, e->value);
> +                }
>                   av_dict_set(&dict, "stg", NULL, 0);

I guess this called before the checks is what's wrong.

>                   if (!endptr || *endptr || idx < 0 || idx >= oc->nb_stream_groups - 1 ||
>                       oc->stream_groups[idx]->type != AV_STREAM_GROUP_PARAMS_IAMF_AUDIO_ELEMENT) {
> @@ -2245,6 +2247,7 @@ static int of_parse_group_token(Muxer *mux, const char *token, char *ptr)
>       while (e = av_dict_get(dict, "stg", e, 0)) {
>           char *endptr;
>           int64_t idx = strtoll(e->value, &endptr, 0);
> +        av_log(0,0, "idx:%"PRId64" NSG:%d endptr:%s\n", idx, oc->nb_stream_groups, endptr);
>           if (*endptr || idx < 0 || idx >= oc->nb_stream_groups - 1) {
>               av_log(mux, AV_LOG_ERROR, "Invalid stream group index %"PRId64"\n", idx);
>               ret = AVERROR(EINVAL);
> 
> 
> i get:
> [aist#0:0/pcm_s16le @ 0x55ae216e6680] Guessed Channel Layout: stereo
> Input #0, wav, from 'ffmpeg/tests/data/asynth-44100-2.wav':
>    Duration: 00:00:06.00, bitrate: 1411 kb/s
>    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s
> [in#0/wav @ 0x55ae216d8400] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some decoder which was not actually used for any stream.
> [out#0/iamf @ 0x55ae21720f80] Codec AVOption dct (DCT algorithm) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
> [out#0/iamf @ 0x55ae21720f80] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
> idx:0 NSG:2 endptr:
> B idx:0 NSG:2 endptr: 0x55ae21728b81 endptr: value:0
> [out#0/iamf @ 0x55ae21720f80] Invalid or missing stream group index in submix element specification "stg=0:parameter_id=100:headphones_rendering_mode=stereo:annotations=en-us=Scalable_Submix"
> Error opening output file ffmpeg/tests/data/fate/iamf-stereo.iamf.
> Error opening output files: Invalid argument
> threads=1
> tests/Makefile:317: recipe for target 'fate-iamf-stereo' failed
> make: *** [fate-iamf-stereo] Error 234
> 
> i also see other failures:
> make: *** [fate-iamf-stereo] Error 234
> make: *** [fate-iamf-5_1_4] Error 234
> make: *** [fate-iamf-7_1_4] Error 234
> 
> thx
> 
> [...]
> 
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff mbox series

Patch

diff --git a/tests/Makefile b/tests/Makefile
index e89ce7f8e6..e76163acf3 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -23,7 +23,7 @@  FFMPEG=ffmpeg$(PROGSSUF)$(EXESUF)
 $(AREF): CMP=
 
 APITESTSDIR := tests/api
-FATE_OUTDIRS = tests/data tests/data/fate tests/data/filtergraphs tests/data/maps tests/data/lavf tests/data/lavf-fate tests/data/pixfmt tests/vsynth1 $(APITESTSDIR)
+FATE_OUTDIRS = tests/data tests/data/fate tests/data/filtergraphs tests/data/maps tests/data/streamgroups tests/data/lavf tests/data/lavf-fate tests/data/pixfmt tests/vsynth1 $(APITESTSDIR)
 OUTDIRS += $(FATE_OUTDIRS)
 
 $(VREF): tests/videogen$(HOSTEXESUF) | tests/vsynth1
@@ -70,6 +70,10 @@  tests/data/maps/%: TAG = COPY
 tests/data/maps/%: $(SRC_PATH)/tests/maps/% | tests/data/maps
 	$(M)cp $< $@
 
+tests/data/streamgroups/%: TAG = COPY
+tests/data/streamgroups/%: $(SRC_PATH)/tests/streamgroups/% | tests/data/streamgroups
+	$(M)cp $< $@
+
 RUNNING_FATE := $(filter check fate%,$(filter-out fate-rsync,$(MAKECMDGOALS)))
 
 # Check sanity of dependencies when running FATE tests.
@@ -199,6 +203,7 @@  include $(SRC_PATH)/tests/fate/hap.mak
 include $(SRC_PATH)/tests/fate/hevc.mak
 include $(SRC_PATH)/tests/fate/hlsenc.mak
 include $(SRC_PATH)/tests/fate/hw.mak
+include $(SRC_PATH)/tests/fate/iamf.mak
 include $(SRC_PATH)/tests/fate/id3v2.mak
 include $(SRC_PATH)/tests/fate/image.mak
 include $(SRC_PATH)/tests/fate/imf.mak
diff --git a/tests/fate/iamf.mak b/tests/fate/iamf.mak
new file mode 100644
index 0000000000..a1ba5916ba
--- /dev/null
+++ b/tests/fate/iamf.mak
@@ -0,0 +1,31 @@ 
+FATE_IAMF += fate-iamf-stereo
+fate-iamf-stereo: tests/data/asynth-44100-2.wav tests/data/streamgroups/audio_element-stereo tests/data/streamgroups/mix_presentation-stereo
+fate-iamf-stereo: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav
+fate-iamf-stereo: CMD = transcode wav $(SRC) iamf " \
+  -stream_group_script $(TARGET_PATH)/tests/data/streamgroups/audio_element-stereo \
+  -stream_group_script $(TARGET_PATH)/tests/data/streamgroups/mix_presentation-stereo \
+  -streamid 0:0 -c:a flac -t 1" "-c:a copy -map 0"
+
+FATE_IAMF += fate-iamf-5_1_4
+fate-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-iamf-5_1_4: SRC = $(TARGET_PATH)/tests/data/asynth-44100-10.wav
+fate-iamf-5_1_4: CMD = transcode wav $(SRC) iamf "-auto_conversion_filters \
+  -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/iamf_5_1_4 \
+  -stream_group_script $(TARGET_PATH)/tests/data/streamgroups/audio_element-5_1_4 \
+  -stream_group_script $(TARGET_PATH)/tests/data/streamgroups/mix_presentation-5_1_4 \
+  -streamid 0:0 -streamid 1:1 -streamid 2:2 -streamid 3:3 -streamid 4:4 -streamid 5:5 -map [FRONT] -map [BACK] -map [CENTER] -map [LFE] -map [TOP_FRONT] -map [TOP_BACK] -c:a flac -t 1" "-c:a copy -map 0"
+
+FATE_IAMF += fate-iamf-7_1_4
+fate-iamf-7_1_4: tests/data/asynth-44100-12.wav tests/data/filtergraphs/iamf_7_1_4 tests/data/streamgroups/audio_element-7_1_4 tests/data/streamgroups/mix_presentation-7_1_4
+fate-iamf-7_1_4: SRC = $(TARGET_PATH)/tests/data/asynth-44100-12.wav
+fate-iamf-7_1_4: CMD = transcode wav $(SRC) iamf "-auto_conversion_filters \
+  -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/iamf_7_1_4 \
+  -stream_group_script $(TARGET_PATH)/tests/data/streamgroups/audio_element-7_1_4 \
+  -stream_group_script $(TARGET_PATH)/tests/data/streamgroups/mix_presentation-7_1_4 \
+  -streamid 0:0 -streamid 1:1 -streamid 2:2 -streamid 3:3 -streamid 4:4 -streamid 5:5 -streamid 6:6 -map [FRONT] -map [BACK] -map [CENTER] -map [LFE] -map [SIDE] -map [TOP_FRONT] -map [TOP_BACK] -c:a flac -t 1" "-c:a copy -map 0"
+
+FATE_IAMF-$(call TRANSCODE, FLAC, IAMF, WAV_DEMUXER PCM_S16LE_DECODER) += $(FATE_IAMF)
+
+FATE_FFMPEG += $(FATE_IAMF-yes)
+
+fate-iamf: $(FATE_IAMF-yes)
diff --git a/tests/filtergraphs/iamf_5_1 b/tests/filtergraphs/iamf_5_1
new file mode 100644
index 0000000000..b1eedda4a0
--- /dev/null
+++ b/tests/filtergraphs/iamf_5_1
@@ -0,0 +1,4 @@ 
+[0:a]channelmap=0|1:stereo[FRONT];
+[0:a]channelmap=4|5:stereo[BACK];
+[0:a]channelmap=2:mono[CENTER];
+[0:a]channelmap=3:mono[LFE];
diff --git a/tests/filtergraphs/iamf_5_1_2 b/tests/filtergraphs/iamf_5_1_2
new file mode 100644
index 0000000000..c18510f4b4
--- /dev/null
+++ b/tests/filtergraphs/iamf_5_1_2
@@ -0,0 +1,5 @@ 
+[0:a]channelmap=0|1:stereo[FRONT];
+[0:a]channelmap=4|5:stereo[BACK];
+[0:a]channelmap=2:mono[CENTER];
+[0:a]channelmap=3:mono[LFE];
+[0:a]channelmap=6|7:stereo[TOP_FRONT];
diff --git a/tests/filtergraphs/iamf_5_1_4 b/tests/filtergraphs/iamf_5_1_4
new file mode 100644
index 0000000000..80dcc1f580
--- /dev/null
+++ b/tests/filtergraphs/iamf_5_1_4
@@ -0,0 +1,6 @@ 
+[0:a]channelmap=0|1:stereo[FRONT];
+[0:a]channelmap=4|5:stereo[BACK];
+[0:a]channelmap=2:mono[CENTER];
+[0:a]channelmap=3:mono[LFE];
+[0:a]channelmap=6|7:stereo[TOP_FRONT];
+[0:a]channelmap=8|9:stereo[TOP_BACK];
diff --git a/tests/filtergraphs/iamf_7_1_4 b/tests/filtergraphs/iamf_7_1_4
new file mode 100644
index 0000000000..4a2c5a834c
--- /dev/null
+++ b/tests/filtergraphs/iamf_7_1_4
@@ -0,0 +1,7 @@ 
+[0:a]channelmap=0|1:stereo[FRONT];
+[0:a]channelmap=4|5:stereo[BACK];
+[0:a]channelmap=2:mono[CENTER];
+[0:a]channelmap=3:mono[LFE];
+[0:a]channelmap=6|7:stereo[SIDE];
+[0:a]channelmap=8|9:stereo[TOP_FRONT];
+[0:a]channelmap=10|11:stereo[TOP_BACK];
diff --git a/tests/ref/fate/iamf-5_1_4 b/tests/ref/fate/iamf-5_1_4
new file mode 100644
index 0000000000..e6eb356ff0
--- /dev/null
+++ b/tests/ref/fate/iamf-5_1_4
@@ -0,0 +1,98 @@ 
+c447cbbc8943cfb751fdf1145a094250 *tests/data/fate/iamf-5_1_4.iamf
+85603 tests/data/fate/iamf-5_1_4.iamf
+#extradata 0:       34, 0x40a802c6
+#extradata 1:       34, 0x40a802c6
+#extradata 2:       34, 0x407c02c4
+#extradata 3:       34, 0x407c02c4
+#extradata 4:       34, 0x40a802c6
+#extradata 5:       34, 0x40a802c6
+#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
+#tb 2: 1/44100
+#media_type 2: audio
+#codec_id 2: flac
+#sample_rate 2: 44100
+#channel_layout_name 2: mono
+#tb 3: 1/44100
+#media_type 3: audio
+#codec_id 3: flac
+#sample_rate 3: 44100
+#channel_layout_name 3: mono
+#tb 4: 1/44100
+#media_type 4: audio
+#codec_id 4: flac
+#sample_rate 4: 44100
+#channel_layout_name 4: stereo
+#tb 5: 1/44100
+#media_type 5: audio
+#codec_id 5: flac
+#sample_rate 5: 44100
+#channel_layout_name 5: stereo
+0,          0,          0,     4608,     1399, 0x6e89566e
+1,          0,          0,     4608,     1399, 0x6e89566e
+2,          0,          0,     4608,     1396, 0x0dcb5677
+3,          0,          0,     4608,     1396, 0x0dcb5677
+4,          0,          0,     4608,     1399, 0x6e89566e
+5,          0,          0,     4608,     1399, 0x6e89566e
+0,       4608,       4608,     4608,     1442, 0x6c3c5b13
+1,       4608,       4608,     4608,     1442, 0x6c3c5b13
+2,       4608,       4608,     4608,     1439, 0xc46b5ac5
+3,       4608,       4608,     4608,     1439, 0xc46b5ac5
+4,       4608,       4608,     4608,     1442, 0x6c3c5b13
+5,       4608,       4608,     4608,     1442, 0x6c3c5b13
+0,       9216,       9216,     4608,     1380, 0xc497571b
+1,       9216,       9216,     4608,     1380, 0xc497571b
+2,       9216,       9216,     4608,     1377, 0x5b2a55fe
+3,       9216,       9216,     4608,     1377, 0x5b2a55fe
+4,       9216,       9216,     4608,     1380, 0xc497571b
+5,       9216,       9216,     4608,     1380, 0xc497571b
+0,      13824,      13824,     4608,     1383, 0x48e9510f
+1,      13824,      13824,     4608,     1383, 0x48e9510f
+2,      13824,      13824,     4608,     1380, 0x045550d3
+3,      13824,      13824,     4608,     1380, 0x045550d3
+4,      13824,      13824,     4608,     1383, 0x48e9510f
+5,      13824,      13824,     4608,     1383, 0x48e9510f
+0,      18432,      18432,     4608,     1572, 0x9a514719
+1,      18432,      18432,     4608,     1572, 0x9a514719
+2,      18432,      18432,     4608,     1568, 0xa2bc45f4
+3,      18432,      18432,     4608,     1568, 0xa2bc45f4
+4,      18432,      18432,     4608,     1572, 0x9a514719
+5,      18432,      18432,     4608,     1572, 0x9a514719
+0,      23040,      23040,     4608,     1391, 0x74ac5014
+1,      23040,      23040,     4608,     1391, 0x74ac5014
+2,      23040,      23040,     4608,     1388, 0x96c85007
+3,      23040,      23040,     4608,     1388, 0x96c85007
+4,      23040,      23040,     4608,     1391, 0x74ac5014
+5,      23040,      23040,     4608,     1391, 0x74ac5014
+0,      27648,      27648,     4608,     1422, 0x2f9d47c5
+1,      27648,      27648,     4608,     1422, 0x2f9d47c5
+2,      27648,      27648,     4608,     1419, 0x4d4d466a
+3,      27648,      27648,     4608,     1419, 0x4d4d466a
+4,      27648,      27648,     4608,     1422, 0x2f9d47c5
+5,      27648,      27648,     4608,     1422, 0x2f9d47c5
+0,      32256,      32256,     4608,     1768, 0x2a044b99
+1,      32256,      32256,     4608,     1768, 0x2a044b99
+2,      32256,      32256,     4608,     1765, 0xacb84b24
+3,      32256,      32256,     4608,     1765, 0xacb84b24
+4,      32256,      32256,     4608,     1768, 0x2a044b99
+5,      32256,      32256,     4608,     1768, 0x2a044b99
+0,      36864,      36864,     4608,     1534, 0xb0b35a3f
+1,      36864,      36864,     4608,     1534, 0xb0b35a3f
+2,      36864,      36864,     4608,     1531, 0x996458aa
+3,      36864,      36864,     4608,     1531, 0x996458aa
+4,      36864,      36864,     4608,     1534, 0xb0b35a3f
+5,      36864,      36864,     4608,     1534, 0xb0b35a3f
+0,      41472,      41472,     4608,      926, 0xc26a5eae
+1,      41472,      41472,     4608,      926, 0xc26a5eae
+2,      41472,      41472,     4608,      923, 0xa7225edf
+3,      41472,      41472,     4608,      923, 0xa7225edf
+4,      41472,      41472,     4608,      926, 0xc26a5eae
+5,      41472,      41472,     4608,      926, 0xc26a5eae
diff --git a/tests/ref/fate/iamf-7_1_4 b/tests/ref/fate/iamf-7_1_4
new file mode 100644
index 0000000000..c176f4a1cd
--- /dev/null
+++ b/tests/ref/fate/iamf-7_1_4
@@ -0,0 +1,114 @@ 
+157c3185684e12cc8385ee7c3ef2fb4c *tests/data/fate/iamf-7_1_4.iamf
+99851 tests/data/fate/iamf-7_1_4.iamf
+#extradata 0:       34, 0x40a802c6
+#extradata 1:       34, 0x40a802c6
+#extradata 2:       34, 0x407c02c4
+#extradata 3:       34, 0x407c02c4
+#extradata 4:       34, 0x40a802c6
+#extradata 5:       34, 0x40a802c6
+#extradata 6:       34, 0x40a802c6
+#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
+#tb 2: 1/44100
+#media_type 2: audio
+#codec_id 2: flac
+#sample_rate 2: 44100
+#channel_layout_name 2: mono
+#tb 3: 1/44100
+#media_type 3: audio
+#codec_id 3: flac
+#sample_rate 3: 44100
+#channel_layout_name 3: mono
+#tb 4: 1/44100
+#media_type 4: audio
+#codec_id 4: flac
+#sample_rate 4: 44100
+#channel_layout_name 4: stereo
+#tb 5: 1/44100
+#media_type 5: audio
+#codec_id 5: flac
+#sample_rate 5: 44100
+#channel_layout_name 5: stereo
+#tb 6: 1/44100
+#media_type 6: audio
+#codec_id 6: flac
+#sample_rate 6: 44100
+#channel_layout_name 6: stereo
+0,          0,          0,     4608,     1399, 0x6e89566e
+1,          0,          0,     4608,     1399, 0x6e89566e
+2,          0,          0,     4608,     1396, 0x0dcb5677
+3,          0,          0,     4608,     1396, 0x0dcb5677
+4,          0,          0,     4608,     1399, 0x6e89566e
+5,          0,          0,     4608,     1399, 0x6e89566e
+6,          0,          0,     4608,     1399, 0x6e89566e
+0,       4608,       4608,     4608,     1442, 0x6c3c5b13
+1,       4608,       4608,     4608,     1442, 0x6c3c5b13
+2,       4608,       4608,     4608,     1439, 0xc46b5ac5
+3,       4608,       4608,     4608,     1439, 0xc46b5ac5
+4,       4608,       4608,     4608,     1442, 0x6c3c5b13
+5,       4608,       4608,     4608,     1442, 0x6c3c5b13
+6,       4608,       4608,     4608,     1442, 0x6c3c5b13
+0,       9216,       9216,     4608,     1380, 0xc497571b
+1,       9216,       9216,     4608,     1380, 0xc497571b
+2,       9216,       9216,     4608,     1377, 0x5b2a55fe
+3,       9216,       9216,     4608,     1377, 0x5b2a55fe
+4,       9216,       9216,     4608,     1380, 0xc497571b
+5,       9216,       9216,     4608,     1380, 0xc497571b
+6,       9216,       9216,     4608,     1380, 0xc497571b
+0,      13824,      13824,     4608,     1383, 0x48e9510f
+1,      13824,      13824,     4608,     1383, 0x48e9510f
+2,      13824,      13824,     4608,     1380, 0x045550d3
+3,      13824,      13824,     4608,     1380, 0x045550d3
+4,      13824,      13824,     4608,     1383, 0x48e9510f
+5,      13824,      13824,     4608,     1383, 0x48e9510f
+6,      13824,      13824,     4608,     1383, 0x48e9510f
+0,      18432,      18432,     4608,     1572, 0x9a514719
+1,      18432,      18432,     4608,     1572, 0x9a514719
+2,      18432,      18432,     4608,     1568, 0xa2bc45f4
+3,      18432,      18432,     4608,     1568, 0xa2bc45f4
+4,      18432,      18432,     4608,     1572, 0x9a514719
+5,      18432,      18432,     4608,     1572, 0x9a514719
+6,      18432,      18432,     4608,     1572, 0x9a514719
+0,      23040,      23040,     4608,     1391, 0x74ac5014
+1,      23040,      23040,     4608,     1391, 0x74ac5014
+2,      23040,      23040,     4608,     1388, 0x96c85007
+3,      23040,      23040,     4608,     1388, 0x96c85007
+4,      23040,      23040,     4608,     1391, 0x74ac5014
+5,      23040,      23040,     4608,     1391, 0x74ac5014
+6,      23040,      23040,     4608,     1391, 0x74ac5014
+0,      27648,      27648,     4608,     1422, 0x2f9d47c5
+1,      27648,      27648,     4608,     1422, 0x2f9d47c5
+2,      27648,      27648,     4608,     1419, 0x4d4d466a
+3,      27648,      27648,     4608,     1419, 0x4d4d466a
+4,      27648,      27648,     4608,     1422, 0x2f9d47c5
+5,      27648,      27648,     4608,     1422, 0x2f9d47c5
+6,      27648,      27648,     4608,     1422, 0x2f9d47c5
+0,      32256,      32256,     4608,     1768, 0x2a044b99
+1,      32256,      32256,     4608,     1768, 0x2a044b99
+2,      32256,      32256,     4608,     1765, 0xacb84b24
+3,      32256,      32256,     4608,     1765, 0xacb84b24
+4,      32256,      32256,     4608,     1768, 0x2a044b99
+5,      32256,      32256,     4608,     1768, 0x2a044b99
+6,      32256,      32256,     4608,     1768, 0x2a044b99
+0,      36864,      36864,     4608,     1534, 0xb0b35a3f
+1,      36864,      36864,     4608,     1534, 0xb0b35a3f
+2,      36864,      36864,     4608,     1531, 0x996458aa
+3,      36864,      36864,     4608,     1531, 0x996458aa
+4,      36864,      36864,     4608,     1534, 0xb0b35a3f
+5,      36864,      36864,     4608,     1534, 0xb0b35a3f
+6,      36864,      36864,     4608,     1534, 0xb0b35a3f
+0,      41472,      41472,     4608,      926, 0xc26a5eae
+1,      41472,      41472,     4608,      926, 0xc26a5eae
+2,      41472,      41472,     4608,      923, 0xa7225edf
+3,      41472,      41472,     4608,      923, 0xa7225edf
+4,      41472,      41472,     4608,      926, 0xc26a5eae
+5,      41472,      41472,     4608,      926, 0xc26a5eae
+6,      41472,      41472,     4608,      926, 0xc26a5eae
diff --git a/tests/ref/fate/iamf-stereo b/tests/ref/fate/iamf-stereo
new file mode 100644
index 0000000000..65d6b506d4
--- /dev/null
+++ b/tests/ref/fate/iamf-stereo
@@ -0,0 +1,18 @@ 
+ace731a4fbc302e24498d6b64daa16e7 *tests/data/fate/iamf-stereo.iamf
+14426 tests/data/fate/iamf-stereo.iamf
+#extradata 0:       34, 0x40a802c6
+#tb 0: 1/44100
+#media_type 0: audio
+#codec_id 0: flac
+#sample_rate 0: 44100
+#channel_layout_name 0: stereo
+0,          0,          0,     4608,     1399, 0x6e89566e
+0,       4608,       4608,     4608,     1442, 0x6c3c5b13
+0,       9216,       9216,     4608,     1380, 0xc497571b
+0,      13824,      13824,     4608,     1383, 0x48e9510f
+0,      18432,      18432,     4608,     1572, 0x9a514719
+0,      23040,      23040,     4608,     1391, 0x74ac5014
+0,      27648,      27648,     4608,     1422, 0x2f9d47c5
+0,      32256,      32256,     4608,     1768, 0x2a044b99
+0,      36864,      36864,     4608,     1534, 0xb0b35a3f
+0,      41472,      41472,     4608,      926, 0xc26a5eae
diff --git a/tests/streamgroups/audio_element-5_1_4 b/tests/streamgroups/audio_element-5_1_4
new file mode 100644
index 0000000000..f537d1dc5d
--- /dev/null
+++ b/tests/streamgroups/audio_element-5_1_4
@@ -0,0 +1,7 @@ 
+type=iamf_audio_element:id=1:st=0:st=1:st=2:st=3:st=4:st=5:default_w=10,
+demixing=dmixp_mode=1:parameter_id=998,
+recon_gain=parameter_id=101,
+layer=ch_layout=stereo,
+layer=ch_layout=5.1,
+layer=ch_layout=5.1.2,
+layer=ch_layout=5.1.4,
diff --git a/tests/streamgroups/audio_element-7_1_4 b/tests/streamgroups/audio_element-7_1_4
new file mode 100644
index 0000000000..67acd1ebfc
--- /dev/null
+++ b/tests/streamgroups/audio_element-7_1_4
@@ -0,0 +1,6 @@ 
+type=iamf_audio_element:id=1:st=0:st=1:st=2:st=3:st=4:st=5:st=6:default_w=10,
+demixing=dmixp_mode=1:parameter_id=998,recon_gain=parameter_id=101,
+layer=ch_layout=stereo,
+layer=ch_layout=3.1.2,
+layer=ch_layout=7.1.2,
+layer=ch_layout=7.1.4,
diff --git a/tests/streamgroups/audio_element-stereo b/tests/streamgroups/audio_element-stereo
new file mode 100644
index 0000000000..b10d73adc5
--- /dev/null
+++ b/tests/streamgroups/audio_element-stereo
@@ -0,0 +1,3 @@ 
+type=iamf_audio_element:id=1:st=0:default_w=10,demixing=dmixp_mode=1:parameter_id=998,
+recon_gain=parameter_id=101,
+layer=ch_layout=stereo,
diff --git a/tests/streamgroups/mix_presentation-5_1_4 b/tests/streamgroups/mix_presentation-5_1_4
new file mode 100644
index 0000000000..36fcd20124
--- /dev/null
+++ b/tests/streamgroups/mix_presentation-5_1_4
@@ -0,0 +1,2 @@ 
+type=iamf_mix_presentation:id=2:stg=0:annotations=en-us=Mix_Presentation,
+submix=parameter_id=100:parameter_rate=48000:default_mix_gain=1.0|element=stg=0:parameter_id=100:headphones_rendering_mode=stereo:annotations=en-us=Scalable_Submix|layout=sound_system=stereo:integrated_loudness=1.0|layout=sound_system=5.1|layout=sound_system=5.1.2|layout=sound_system=5.1.4,
diff --git a/tests/streamgroups/mix_presentation-7_1_4 b/tests/streamgroups/mix_presentation-7_1_4
new file mode 100644
index 0000000000..eee67b28e8
--- /dev/null
+++ b/tests/streamgroups/mix_presentation-7_1_4
@@ -0,0 +1,2 @@ 
+type=iamf_mix_presentation:id=2:stg=0:annotations=en-us=Mix_Presentation,
+submix=parameter_id=100:parameter_rate=48000:default_mix_gain=1.0|element=stg=0:parameter_id=100:headphones_rendering_mode=stereo:annotations=en-us=Scalable_Submix|layout=sound_system=stereo:integrated_loudness=1.0|layout=sound_system=3.1.2|layout=sound_system=7.1.2|layout=sound_system=7.1.4,
diff --git a/tests/streamgroups/mix_presentation-stereo b/tests/streamgroups/mix_presentation-stereo
new file mode 100644
index 0000000000..0ade6352ff
--- /dev/null
+++ b/tests/streamgroups/mix_presentation-stereo
@@ -0,0 +1,3 @@ 
+type=iamf_mix_presentation:id=2:stg=0:annotations=en-us=Mix_Presentation,
+submix=parameter_id=100:parameter_rate=48000:default_mix_gain=1.0|element=stg=0:parameter_id=100:headphones_rendering_mode=stereo:annotations=en-us=Scalable_Submix|layout=sound_system=stereo:integrated_loudness=1.0,
+submix=parameter_id=100|element=stg=0:parameter_id=100:headphones_rendering_mode=binaural:default_mix_gain=1.0:annotations=en-us=Binaural_submix|layout=layout_type=binaural,