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

Michael Niedermayer michael at niedermayer.cc
Thu Jan 11 05:17:17 EET 2024


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 at 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

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

He who knows, does not speak. He who speaks, does not know. -- Lao Tsu
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20240111/9ed998d0/attachment.sig>


More information about the ffmpeg-devel mailing list