PR #21303 opened by James Almer (jamrial) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21303 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21303.patch
>From ce1d2a98c1e09f3080bc216713b7cae87195a4bb Mon Sep 17 00:00:00 2001 From: James Almer <[email protected]> Date: Sat, 27 Dec 2025 17:05:51 -0300 Subject: [PATCH 1/8] avutil/iamf: add an AVOption for AVIAMFLayer.demixing_matrix Plus a length field, to fulfill the requirements of AV_OPT_TYPE_FLAG_ARRAY options. Signed-off-by: James Almer <[email protected]> --- libavutil/iamf.c | 4 ++++ libavutil/iamf.h | 11 +++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/libavutil/iamf.c b/libavutil/iamf.c index 791954d951..c18069220e 100644 --- a/libavutil/iamf.c +++ b/libavutil/iamf.c @@ -239,6 +239,8 @@ AVIAMFParamDefinition *av_iamf_param_definition_alloc(enum AVIAMFParamDefinition // // Audio Element // +static const AVOptionArrayDef demixing_matrix_def = { .def = "0|0", .size_max = (255 + 255) * 255, .sep = '|' }; + #undef OFFSET #define OFFSET(x) offsetof(AVIAMFLayer, x) static const AVOption layer_options[] = { @@ -269,6 +271,8 @@ static const AVOption layer_options[] = { { .i64 = AV_IAMF_AMBISONICS_MODE_MONO }, .unit = "ambisonics_mode" }, { "projection", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_IAMF_AMBISONICS_MODE_PROJECTION }, .unit = "ambisonics_mode" }, + { "demixing_matrix", "set demixing_matrix", OFFSET(demixing_matrix), AV_OPT_TYPE_RATIONAL | AV_OPT_TYPE_FLAG_ARRAY, + { .arr = &demixing_matrix_def }, -1.0, 1.0, FLAGS }, { NULL }, }; diff --git a/libavutil/iamf.h b/libavutil/iamf.h index 855f64280a..a755e7d682 100644 --- a/libavutil/iamf.h +++ b/libavutil/iamf.h @@ -330,14 +330,17 @@ typedef struct AVIAMFLayer { /** * Demixing matrix as defined in section 3.6.3 of IAMF. * - * The length of the array is ch_layout.nb_channels multiplied by the sum of - * the amount of streams in the group plus the amount of streams in the group - * that are stereo. - * * May be set only if @ref ambisonics_mode == AV_IAMF_AMBISONICS_MODE_PROJECTION, * must be NULL otherwise. */ AVRational *demixing_matrix; + + /** + * The length of the Demixing matrix array. Must be ch_layout.nb_channels multiplied + * by the sum of the amount of streams in the group plus the amount of streams in + * the group that are stereo. + */ + unsigned int nb_demixing_matrix; } AVIAMFLayer; -- 2.49.1 >From 2899dffac22a26d124aa413d581fb01ae1c68a29 Mon Sep 17 00:00:00 2001 From: James Almer <[email protected]> Date: Sat, 27 Dec 2025 17:08:30 -0300 Subject: [PATCH 2/8] avformat/iamf_parse: fix setting denominator in AVIAMFLayer.demixing_matrix The format of demixing_matrix is Q15 fixed point values. Signed-off-by: James Almer <[email protected]> --- libavformat/iamf_parse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/iamf_parse.c b/libavformat/iamf_parse.c index b9f24c0d6a..b7d6c64b70 100644 --- a/libavformat/iamf_parse.c +++ b/libavformat/iamf_parse.c @@ -587,7 +587,7 @@ static int ambisonics_config(void *s, AVIOContext *pb, return AVERROR(ENOMEM); for (int i = 0; i < demixing_matrix_size; i++) - layer->demixing_matrix[i] = av_make_q(sign_extend(avio_rb16(pb), 16), 1 << 8); + layer->demixing_matrix[i] = av_make_q(sign_extend(avio_rb16(pb), 16), 1 << 15); for (int i = 0; i < substream_count; i++) { IAMFSubStream *substream = &audio_element->substreams[i]; -- 2.49.1 >From 458222b350b22d37d84e082e5ff2f11cf3cb3cc9 Mon Sep 17 00:00:00 2001 From: James Almer <[email protected]> Date: Sat, 27 Dec 2025 17:10:35 -0300 Subject: [PATCH 3/8] avformat/iamf_parse: set AVIAMFLayer.nb_demixing_matrix Signed-off-by: James Almer <[email protected]> --- libavformat/iamf_parse.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libavformat/iamf_parse.c b/libavformat/iamf_parse.c index b7d6c64b70..a31f7689b3 100644 --- a/libavformat/iamf_parse.c +++ b/libavformat/iamf_parse.c @@ -576,17 +576,19 @@ static int ambisonics_config(void *s, AVIOContext *pb, return ret; } else { int coupled_substream_count = avio_r8(pb); // M - int nb_demixing_matrix = substream_count + coupled_substream_count; - int demixing_matrix_size = nb_demixing_matrix * output_channel_count; + int count = substream_count + coupled_substream_count; + int nb_demixing_matrix = count * output_channel_count; audio_element->layers->coupled_substream_count = coupled_substream_count; layer->ch_layout = (AVChannelLayout){ .order = AV_CHANNEL_ORDER_AMBISONIC, .nb_channels = output_channel_count }; - layer->demixing_matrix = av_malloc_array(demixing_matrix_size, sizeof(*layer->demixing_matrix)); + layer->demixing_matrix = av_malloc_array(nb_demixing_matrix, sizeof(*layer->demixing_matrix)); if (!layer->demixing_matrix) return AVERROR(ENOMEM); - for (int i = 0; i < demixing_matrix_size; i++) + layer->nb_demixing_matrix = nb_demixing_matrix; + + for (int i = 0; i < layer->nb_demixing_matrix; i++) layer->demixing_matrix[i] = av_make_q(sign_extend(avio_rb16(pb), 16), 1 << 15); for (int i = 0; i < substream_count; i++) { -- 2.49.1 >From 1e17297ca568197321a4b11e6381d814c488994a Mon Sep 17 00:00:00 2001 From: James Almer <[email protected]> Date: Sat, 27 Dec 2025 18:06:32 -0300 Subject: [PATCH 4/8] avformat/iamf_writer: fix writting some ambisonics fields in Audio Elements The fields are defined as 8 bit long unsigned ints. Fortunately, writing most sane values as leb is equivalent, which is why no tests are affected. Signed-off-by: James Almer <[email protected]> --- libavformat/iamf_writer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavformat/iamf_writer.c b/libavformat/iamf_writer.c index b917a15978..44a32f0ce0 100644 --- a/libavformat/iamf_writer.c +++ b/libavformat/iamf_writer.c @@ -662,8 +662,8 @@ static int ambisonics_config(const IAMFAudioElement *audio_element, const AVIAMFLayer *layer = element->layers[0]; ffio_write_leb(dyn_bc, 0); // ambisonics_mode - ffio_write_leb(dyn_bc, layer->ch_layout.nb_channels); // output_channel_count - ffio_write_leb(dyn_bc, audio_element->nb_substreams); // substream_count + avio_w8(dyn_bc, layer->ch_layout.nb_channels); // output_channel_count + avio_w8(dyn_bc, audio_element->nb_substreams); // substream_count if (layer->ch_layout.order == AV_CHANNEL_ORDER_AMBISONIC) for (int i = 0; i < layer->ch_layout.nb_channels; i++) -- 2.49.1 >From 8d82cc2a1caf19830c88b341ca13099a65bfe2ce Mon Sep 17 00:00:00 2001 From: James Almer <[email protected]> Date: Sat, 27 Dec 2025 17:11:30 -0300 Subject: [PATCH 5/8] avformat/iamf_writer: add support for Projection type ambisonic Audio elements Signed-off-by: James Almer <[email protected]> --- libavformat/iamf_writer.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libavformat/iamf_writer.c b/libavformat/iamf_writer.c index 44a32f0ce0..38b8879a0d 100644 --- a/libavformat/iamf_writer.c +++ b/libavformat/iamf_writer.c @@ -235,7 +235,7 @@ int ff_iamf_add_audio_element(IAMFContext *iamf, const AVStreamGroup *stg, void av_log(log_ctx, AV_LOG_ERROR, "Invalid channel layout for SCENE_BASED audio element\n"); return AVERROR(EINVAL); } - if (layer->ambisonics_mode >= AV_IAMF_AMBISONICS_MODE_PROJECTION) { + if (layer->ambisonics_mode > AV_IAMF_AMBISONICS_MODE_PROJECTION) { av_log(log_ctx, AV_LOG_ERROR, "Unsupported ambisonics mode %d\n", layer->ambisonics_mode); return AVERROR_PATCHWELCOME; } @@ -659,18 +659,28 @@ static int ambisonics_config(const IAMFAudioElement *audio_element, AVIOContext *dyn_bc) { const AVIAMFAudioElement *element = audio_element->celement; + const IAMFLayer *ilayer = &audio_element->layers[0]; const AVIAMFLayer *layer = element->layers[0]; - ffio_write_leb(dyn_bc, 0); // ambisonics_mode + ffio_write_leb(dyn_bc, layer->ambisonics_mode); avio_w8(dyn_bc, layer->ch_layout.nb_channels); // output_channel_count avio_w8(dyn_bc, audio_element->nb_substreams); // substream_count + if (layer->ambisonics_mode == AV_IAMF_AMBISONICS_MODE_MONO) { if (layer->ch_layout.order == AV_CHANNEL_ORDER_AMBISONIC) for (int i = 0; i < layer->ch_layout.nb_channels; i++) avio_w8(dyn_bc, i); else for (int i = 0; i < layer->ch_layout.nb_channels; i++) avio_w8(dyn_bc, layer->ch_layout.u.map[i].id); + } else { + int nb_demixing_matrix = (ilayer->coupled_substream_count + ilayer->substream_count) * layer->ch_layout.nb_channels; + if (audio_element->nb_substreams != ilayer->substream_count || nb_demixing_matrix != layer->nb_demixing_matrix) + return AVERROR(EINVAL); + avio_w8(dyn_bc, ilayer->coupled_substream_count); + for (int i = 0; i < layer->nb_demixing_matrix; i++) + avio_wb16(dyn_bc, rescale_rational(layer->demixing_matrix[i], 1 << 15)); + } return 0; } -- 2.49.1 >From 91ceedcbf7ff67f81d9fcbd11f75205e35432204 Mon Sep 17 00:00:00 2001 From: James Almer <[email protected]> Date: Sat, 27 Dec 2025 18:09:03 -0300 Subject: [PATCH 6/8] avformat/iamf_writer: reindent after the previous change Signed-off-by: James Almer <[email protected]> --- libavformat/iamf_writer.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libavformat/iamf_writer.c b/libavformat/iamf_writer.c index 38b8879a0d..5fc92b282a 100644 --- a/libavformat/iamf_writer.c +++ b/libavformat/iamf_writer.c @@ -667,12 +667,12 @@ static int ambisonics_config(const IAMFAudioElement *audio_element, avio_w8(dyn_bc, audio_element->nb_substreams); // substream_count if (layer->ambisonics_mode == AV_IAMF_AMBISONICS_MODE_MONO) { - if (layer->ch_layout.order == AV_CHANNEL_ORDER_AMBISONIC) - for (int i = 0; i < layer->ch_layout.nb_channels; i++) - avio_w8(dyn_bc, i); - else - for (int i = 0; i < layer->ch_layout.nb_channels; i++) - avio_w8(dyn_bc, layer->ch_layout.u.map[i].id); + if (layer->ch_layout.order == AV_CHANNEL_ORDER_AMBISONIC) + for (int i = 0; i < layer->ch_layout.nb_channels; i++) + avio_w8(dyn_bc, i); + else + for (int i = 0; i < layer->ch_layout.nb_channels; i++) + avio_w8(dyn_bc, layer->ch_layout.u.map[i].id); } else { int nb_demixing_matrix = (ilayer->coupled_substream_count + ilayer->substream_count) * layer->ch_layout.nb_channels; if (audio_element->nb_substreams != ilayer->substream_count || nb_demixing_matrix != layer->nb_demixing_matrix) -- 2.49.1 >From ac2d7f4ac5b8a46da9390a7d62bc5776b33425ec Mon Sep 17 00:00:00 2001 From: James Almer <[email protected]> Date: Sat, 27 Dec 2025 17:12:57 -0300 Subject: [PATCH 7/8] fftools/ffprobe: print demixing_matrix in Projection type ambisonic IAMF Audio Element groups Signed-off-by: James Almer <[email protected]> --- fftools/ffprobe.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c index 17e0191844..ddd5654796 100644 --- a/fftools/ffprobe.c +++ b/fftools/ffprobe.c @@ -2078,6 +2078,10 @@ static void print_iamf_param_definition(AVTextFormatContext *tfc, const char *na static void print_iamf_audio_element_params(AVTextFormatContext *tfc, const AVStreamGroup *stg, const AVIAMFAudioElement *audio_element) { + AVBPrint pbuf; + + av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED); + avtext_print_section_header(tfc, stg, SECTION_ID_STREAM_GROUP_COMPONENT); print_int("nb_layers", audio_element->nb_layers); print_int("audio_element_type", audio_element->audio_element_type); @@ -2092,8 +2096,12 @@ static void print_iamf_audio_element_params(AVTextFormatContext *tfc, const AVSt if (audio_element->audio_element_type == AV_IAMF_AUDIO_ELEMENT_TYPE_CHANNEL) { print_int("output_gain_flags", layer->output_gain_flags); print_q("output_gain", layer->output_gain, '/'); - } else if (audio_element->audio_element_type == AV_IAMF_AUDIO_ELEMENT_TYPE_SCENE) + } else if (audio_element->audio_element_type == AV_IAMF_AUDIO_ELEMENT_TYPE_SCENE) { print_int("ambisonics_mode", layer->ambisonics_mode); + if (layer->ambisonics_mode == AV_IAMF_AMBISONICS_MODE_PROJECTION) + print_list_fmt("demixing_matrix", "%d/%d", layer->nb_demixing_matrix, 1, layer->demixing_matrix[idx].num, + layer->demixing_matrix[idx].den); + } avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_SUBCOMPONENT } if (audio_element->demixing_info) @@ -2104,6 +2112,8 @@ static void print_iamf_audio_element_params(AVTextFormatContext *tfc, const AVSt SECTION_ID_STREAM_GROUP_SUBCOMPONENT); avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_SUBCOMPONENTS avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_COMPONENT + + av_bprint_finalize(&pbuf, NULL); } static void print_iamf_submix_params(AVTextFormatContext *tfc, const AVIAMFSubmix *submix) -- 2.49.1 >From 5bef1c9ff45630bd7e09aa3b23c51a2155f24b3a Mon Sep 17 00:00:00 2001 From: James Almer <[email protected]> Date: Sat, 27 Dec 2025 17:13:56 -0300 Subject: [PATCH 8/8] tests/fate/iamf: add tests for Projection type ambisonic Audio Elements Signed-off-by: James Almer <[email protected]> --- tests/fate/iamf.mak | 20 ++ tests/ref/fate/iamf-ambisonic_1-projection | 317 ++++++++++++++++++ .../ref/fate/iamf-ambisonic_1-projection-copy | 275 +++++++++++++++ .../fate/iamf-ambisonic_1-projection-demux | 275 +++++++++++++++ .../audio_element-ambisonic_1-projection | 2 + 5 files changed, 889 insertions(+) create mode 100644 tests/ref/fate/iamf-ambisonic_1-projection create mode 100644 tests/ref/fate/iamf-ambisonic_1-projection-copy create mode 100644 tests/ref/fate/iamf-ambisonic_1-projection-demux create mode 100644 tests/streamgroups/audio_element-ambisonic_1-projection diff --git a/tests/fate/iamf.mak b/tests/fate/iamf.mak index eddea66ba1..a686be7952 100644 --- a/tests/fate/iamf.mak +++ b/tests/fate/iamf.mak @@ -48,6 +48,16 @@ fate-iamf-ambisonic_1: CMD = transcode wav $(SRC) iamf "-auto_conversion_filters -streamid 0:0 -streamid 1:1 -streamid 2:2 -streamid 3:3 -map [MONO0] -map [MONO1] -map [MONO2] -map [MONO3] -c:a flac -t 1" "-c:a copy -map 0" \ "-show_entries stream_group=index,id,nb_streams,type:stream_group_components:stream_group_stream=index,id:stream_group_stream_disposition" +FATE_IAMF-$(call TRANSCODE, FLAC, IAMF, WAV_DEMUXER PCM_S16LE_DECODER ARESAMPLE_FILTER) += fate-iamf-ambisonic_1-projection +fate-iamf-ambisonic_1-projection: tests/data/asynth-44100-4.wav tests/data/filtergraphs/iamf_ambisonic_1 tests/data/streamgroups/audio_element-ambisonic_1-projection tests/data/streamgroups/mix_presentation-ambisonic_1 +fate-iamf-ambisonic_1-projection: SRC = $(TARGET_PATH)/tests/data/asynth-44100-4.wav +fate-iamf-ambisonic_1-projection: CMD = transcode wav $(SRC) iamf "-auto_conversion_filters \ + -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/iamf_ambisonic_1 \ + -/stream_group $(TARGET_PATH)/tests/data/streamgroups/audio_element-ambisonic_1-projection \ + -/stream_group $(TARGET_PATH)/tests/data/streamgroups/mix_presentation-ambisonic_1 \ + -streamid 0:0 -streamid 1:1 -streamid 2:2 -streamid 3:3 -map [MONO0] -map [MONO1] -map [MONO2] -map [MONO3] -c:a flac -t 1" "-c:a copy -map 0" \ + "-show_entries stream_group=index,id,nb_streams,type:stream_group_components:stream_group_stream=index,id:stream_group_stream_disposition" + FATE_IAMF_SAMPLES-$(call FRAMECRC, IAMF, OPUS) += fate-iamf-stereo-demux fate-iamf-stereo-demux: CMD = stream_demux iamf $(TARGET_SAMPLES)/iamf/test_000076.iamf "" \ "-c:a copy -frames:a 0 -map 0:g:\#42" \ @@ -63,6 +73,16 @@ fate-iamf-5_1-copy: CMD = stream_remux iamf $(TARGET_SAMPLES)/iamf/test_000059.i "-map 0 -stream_group map=0=0:st=0:st=1:st=2:st=3 -stream_group map=0=1:stg=0 -streamid 0:0 -streamid 1:1 -streamid 2:2 -streamid 3:3" "" "-c:a copy -frames:a 0 -map 0:g:i:42" \ "-show_entries stream_group=index,id,nb_streams,type:stream_group_components:stream_group_stream=index,id:stream_group_stream_disposition" +FATE_IAMF_SAMPLES-$(call FRAMECRC, IAMF, OPUS) += fate-iamf-ambisonic_1-projection-demux +fate-iamf-ambisonic_1-projection-demux: CMD = stream_demux iamf $(TARGET_SAMPLES)/iamf/test_000113.iamf "" \ + "-c:a copy -frames:a 0 -map 0:g:\#300" \ + "-show_entries stream_group=index,id,nb_streams,type:stream_group_components:stream_group_stream=index,id:stream_group_stream_disposition" + +FATE_IAMF_SAMPLES-$(call REMUX, IAMF, OPUS_DECODER) += fate-iamf-ambisonic_1-projection-copy +fate-iamf-ambisonic_1-projection-copy: CMD = stream_remux iamf $(TARGET_SAMPLES)/iamf/test_000113.iamf "" iamf \ + "-map 0 -stream_group map=0=0:st=0:st=1:st=2:st=3 -stream_group map=0=1:stg=0 -streamid 0:0 -streamid 1:1 -streamid 2:2 -streamid 3:3" "" "-c:a copy -frames:a 0 -map 0:g:i:300" \ + "-show_entries stream_group=index,id,nb_streams,type:stream_group_components:stream_group_stream=index,id:stream_group_stream_disposition" + FATE_IAMF += $(FATE_IAMF-yes) FATE_IAMF_SAMPLES += $(FATE_IAMF_SAMPLES-yes) diff --git a/tests/ref/fate/iamf-ambisonic_1-projection b/tests/ref/fate/iamf-ambisonic_1-projection new file mode 100644 index 0000000000..78b5a743b6 --- /dev/null +++ b/tests/ref/fate/iamf-ambisonic_1-projection @@ -0,0 +1,317 @@ +b87b28ca89da92d540047e8ad30bd470 *tests/data/fate/iamf-ambisonic_1-projection.iamf +57035 tests/data/fate/iamf-ambisonic_1-projection.iamf +#extradata 0: 34, 0xad120cfe +#extradata 1: 34, 0xad120cfe +#extradata 2: 34, 0xad120cfe +#extradata 3: 34, 0xad120cfe +#tb 0: 1/44100 +#media_type 0: audio +#codec_id 0: flac +#sample_rate 0: 44100 +#channel_layout_name 0: mono +#tb 1: 1/44100 +#media_type 1: audio +#codec_id 1: flac +#sample_rate 1: 44100 +#channel_layout_name 1: mono +#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 +0, 0, 0, 4608, 1396, 0x0dcb5677 +1, 0, 0, 4608, 1396, 0x0dcb5677 +2, 0, 0, 4608, 1396, 0x0dcb5677 +3, 0, 0, 4608, 1396, 0x0dcb5677 +0, 4608, 4608, 4608, 1439, 0xc46b5ac5 +1, 4608, 4608, 4608, 1439, 0xc46b5ac5 +2, 4608, 4608, 4608, 1439, 0xc46b5ac5 +3, 4608, 4608, 4608, 1439, 0xc46b5ac5 +0, 9216, 9216, 4608, 1377, 0x5b2a55fe +1, 9216, 9216, 4608, 1377, 0x5b2a55fe +2, 9216, 9216, 4608, 1377, 0x5b2a55fe +3, 9216, 9216, 4608, 1377, 0x5b2a55fe +0, 13824, 13824, 4608, 1380, 0x045550d3 +1, 13824, 13824, 4608, 1380, 0x045550d3 +2, 13824, 13824, 4608, 1380, 0x045550d3 +3, 13824, 13824, 4608, 1380, 0x045550d3 +0, 18432, 18432, 4608, 1568, 0xa2bc45f4 +1, 18432, 18432, 4608, 1568, 0xa2bc45f4 +2, 18432, 18432, 4608, 1568, 0xa2bc45f4 +3, 18432, 18432, 4608, 1568, 0xa2bc45f4 +0, 23040, 23040, 4608, 1388, 0x96c85007 +1, 23040, 23040, 4608, 1388, 0x96c85007 +2, 23040, 23040, 4608, 1388, 0x96c85007 +3, 23040, 23040, 4608, 1388, 0x96c85007 +0, 27648, 27648, 4608, 1419, 0x4d4d466a +1, 27648, 27648, 4608, 1419, 0x4d4d466a +2, 27648, 27648, 4608, 1419, 0x4d4d466a +3, 27648, 27648, 4608, 1419, 0x4d4d466a +0, 32256, 32256, 4608, 1765, 0xacb84b24 +1, 32256, 32256, 4608, 1765, 0xacb84b24 +2, 32256, 32256, 4608, 1765, 0xacb84b24 +3, 32256, 32256, 4608, 1765, 0xacb84b24 +0, 36864, 36864, 4608, 1531, 0x996458aa +1, 36864, 36864, 4608, 1531, 0x996458aa +2, 36864, 36864, 4608, 1531, 0x996458aa +3, 36864, 36864, 4608, 1531, 0x996458aa +0, 41472, 41472, 4608, 923, 0xa7225edf +1, 41472, 41472, 4608, 923, 0xa7225edf +2, 41472, 41472, 4608, 923, 0xa7225edf +3, 41472, 41472, 4608, 923, 0xa7225edf +[STREAM_GROUP] +index=0 +id=0x1 +nb_streams=4 +type=IAMF Audio Element +[COMPONENT] +nb_layers=1 +audio_element_type=1 +default_w=0 +[SUBCOMPONENT] +channel_layout=ambisonic 1 +ambisonics_mode=1 +demixing_matrix=32767/32768 0/32768 0/32768 0/32768 0/32768 32767/32768 0/32768 0/32768 0/32768 0/32768 32767/32768 0/32768 0/32768 0/32768 0/32768 32767/32768 +[/SUBCOMPONENT] +[/COMPONENT] +[STREAM] +index=0 +id=0x0 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=1 +id=0x1 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=2 +id=0x2 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=3 +id=0x3 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[/STREAM_GROUP] +[STREAM_GROUP] +index=1 +id=0x2 +nb_streams=4 +type=IAMF Mix Presentation +[COMPONENT] +nb_submixes=1 +[SUBCOMPONENT] +en-us=Mix_Presentation +[/SUBCOMPONENT] +[SUBCOMPONENT] +nb_elements=1 +nb_layouts=1 +default_mix_gain=0/256 +[PIECE] +stream_id=1 +default_mix_gain=0/256 +headphones_rendering_mode=0 +[SUBPIECE] +en-us=Stereo_Submix +[/SUBPIECE] +[SUBPIECE] +name=element_mix_config +nb_subblocks=0 +type=0 +parameter_id=100 +parameter_rate=48000 +duration=0 +constant_subblock_duration=0 +[/SUBPIECE] +[/PIECE] +[PIECE] +name=output_mix_config +nb_subblocks=0 +type=0 +parameter_id=100 +parameter_rate=48000 +duration=0 +constant_subblock_duration=0 +[/PIECE] +[PIECE] +sound_system=stereo +integrated_loudness=0/256 +digital_peak=0/256 +true_peak=0/1 +dialogue_anchored_loudness=0/1 +album_anchored_loudness=0/1 +[/PIECE] +[/SUBCOMPONENT] +[/COMPONENT] +[STREAM] +index=0 +id=0x0 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=1 +id=0x1 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=2 +id=0x2 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=3 +id=0x3 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[/STREAM_GROUP] diff --git a/tests/ref/fate/iamf-ambisonic_1-projection-copy b/tests/ref/fate/iamf-ambisonic_1-projection-copy new file mode 100644 index 0000000000..f38d0f7117 --- /dev/null +++ b/tests/ref/fate/iamf-ambisonic_1-projection-copy @@ -0,0 +1,275 @@ +#extradata 0: 19, 0x3a04048f +#extradata 1: 19, 0x3a04048f +#extradata 2: 19, 0x3a04048f +#extradata 3: 19, 0x3a04048f +#tb 0: 1/48000 +#media_type 0: audio +#codec_id 0: opus +#sample_rate 0: 48000 +#channel_layout_name 0: mono +#tb 1: 1/48000 +#media_type 1: audio +#codec_id 1: opus +#sample_rate 1: 48000 +#channel_layout_name 1: mono +#tb 2: 1/48000 +#media_type 2: audio +#codec_id 2: opus +#sample_rate 2: 48000 +#channel_layout_name 2: mono +#tb 3: 1/48000 +#media_type 3: audio +#codec_id 3: opus +#sample_rate 3: 48000 +#channel_layout_name 3: mono +[STREAM_GROUP] +index=0 +id=0x12c +nb_streams=4 +type=IAMF Audio Element +[COMPONENT] +nb_layers=1 +audio_element_type=1 +default_w=0 +[SUBCOMPONENT] +channel_layout=ambisonic 1 +ambisonics_mode=1 +demixing_matrix=32767/32768 0/32768 0/32768 0/32768 0/32768 32767/32768 0/32768 0/32768 0/32768 0/32768 32767/32768 0/32768 0/32768 0/32768 0/32768 32767/32768 +[/SUBCOMPONENT] +[/COMPONENT] +[STREAM] +index=0 +id=0x0 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=1 +id=0x1 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=2 +id=0x2 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=3 +id=0x3 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[/STREAM_GROUP] +[STREAM_GROUP] +index=1 +id=0x2a +nb_streams=4 +type=IAMF Mix Presentation +[COMPONENT] +nb_submixes=1 +[SUBCOMPONENT] +en-us=test_mix_pres +[/SUBCOMPONENT] +[SUBCOMPONENT] +nb_elements=1 +nb_layouts=1 +default_mix_gain=0/256 +[PIECE] +stream_id=300 +default_mix_gain=0/256 +headphones_rendering_mode=0 +[SUBPIECE] +en-us=test_sub_mix_0_audio_element_0 +[/SUBPIECE] +[SUBPIECE] +name=element_mix_config +nb_subblocks=0 +type=0 +parameter_id=999 +parameter_rate=48000 +duration=0 +constant_subblock_duration=0 +[/SUBPIECE] +[/PIECE] +[PIECE] +name=output_mix_config +nb_subblocks=0 +type=0 +parameter_id=998 +parameter_rate=48000 +duration=0 +constant_subblock_duration=0 +[/PIECE] +[PIECE] +sound_system=stereo +integrated_loudness=-2631/256 +digital_peak=0/256 +true_peak=0/1 +dialogue_anchored_loudness=0/1 +album_anchored_loudness=0/1 +[/PIECE] +[/SUBCOMPONENT] +[/COMPONENT] +[STREAM] +index=0 +id=0x0 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=1 +id=0x1 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=2 +id=0x2 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=3 +id=0x3 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[/STREAM_GROUP] diff --git a/tests/ref/fate/iamf-ambisonic_1-projection-demux b/tests/ref/fate/iamf-ambisonic_1-projection-demux new file mode 100644 index 0000000000..f38d0f7117 --- /dev/null +++ b/tests/ref/fate/iamf-ambisonic_1-projection-demux @@ -0,0 +1,275 @@ +#extradata 0: 19, 0x3a04048f +#extradata 1: 19, 0x3a04048f +#extradata 2: 19, 0x3a04048f +#extradata 3: 19, 0x3a04048f +#tb 0: 1/48000 +#media_type 0: audio +#codec_id 0: opus +#sample_rate 0: 48000 +#channel_layout_name 0: mono +#tb 1: 1/48000 +#media_type 1: audio +#codec_id 1: opus +#sample_rate 1: 48000 +#channel_layout_name 1: mono +#tb 2: 1/48000 +#media_type 2: audio +#codec_id 2: opus +#sample_rate 2: 48000 +#channel_layout_name 2: mono +#tb 3: 1/48000 +#media_type 3: audio +#codec_id 3: opus +#sample_rate 3: 48000 +#channel_layout_name 3: mono +[STREAM_GROUP] +index=0 +id=0x12c +nb_streams=4 +type=IAMF Audio Element +[COMPONENT] +nb_layers=1 +audio_element_type=1 +default_w=0 +[SUBCOMPONENT] +channel_layout=ambisonic 1 +ambisonics_mode=1 +demixing_matrix=32767/32768 0/32768 0/32768 0/32768 0/32768 32767/32768 0/32768 0/32768 0/32768 0/32768 32767/32768 0/32768 0/32768 0/32768 0/32768 32767/32768 +[/SUBCOMPONENT] +[/COMPONENT] +[STREAM] +index=0 +id=0x0 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=1 +id=0x1 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=2 +id=0x2 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=3 +id=0x3 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[/STREAM_GROUP] +[STREAM_GROUP] +index=1 +id=0x2a +nb_streams=4 +type=IAMF Mix Presentation +[COMPONENT] +nb_submixes=1 +[SUBCOMPONENT] +en-us=test_mix_pres +[/SUBCOMPONENT] +[SUBCOMPONENT] +nb_elements=1 +nb_layouts=1 +default_mix_gain=0/256 +[PIECE] +stream_id=300 +default_mix_gain=0/256 +headphones_rendering_mode=0 +[SUBPIECE] +en-us=test_sub_mix_0_audio_element_0 +[/SUBPIECE] +[SUBPIECE] +name=element_mix_config +nb_subblocks=0 +type=0 +parameter_id=999 +parameter_rate=48000 +duration=0 +constant_subblock_duration=0 +[/SUBPIECE] +[/PIECE] +[PIECE] +name=output_mix_config +nb_subblocks=0 +type=0 +parameter_id=998 +parameter_rate=48000 +duration=0 +constant_subblock_duration=0 +[/PIECE] +[PIECE] +sound_system=stereo +integrated_loudness=-2631/256 +digital_peak=0/256 +true_peak=0/1 +dialogue_anchored_loudness=0/1 +album_anchored_loudness=0/1 +[/PIECE] +[/SUBCOMPONENT] +[/COMPONENT] +[STREAM] +index=0 +id=0x0 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=1 +id=0x1 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=2 +id=0x2 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[STREAM] +index=3 +id=0x3 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +DISPOSITION:non_diegetic=0 +DISPOSITION:captions=0 +DISPOSITION:descriptions=0 +DISPOSITION:metadata=0 +DISPOSITION:dependent=1 +DISPOSITION:still_image=0 +DISPOSITION:multilayer=0 +[/STREAM] +[/STREAM_GROUP] diff --git a/tests/streamgroups/audio_element-ambisonic_1-projection b/tests/streamgroups/audio_element-ambisonic_1-projection new file mode 100644 index 0000000000..18a75babd6 --- /dev/null +++ b/tests/streamgroups/audio_element-ambisonic_1-projection @@ -0,0 +1,2 @@ +type=iamf_audio_element:id=1:st=0:st=1:st=2:st=3:audio_element_type=scene, +layer=ch_layout=ambisonic 1:ambisonics_mode=projection:demixing_matrix=32767/32768|0/32768|0/32768|0/32768|0/32768|32767/32768|0/32768|0/32768|0/32768|0/32768|32767/32768|0/32768|0/32768|0/32768|0/32768|32767/32768, -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
