From 4607f48fcf464e45aeeb790c9a61b421ecf9ac93 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 14 Aug 2024 10:42:24 +0200 Subject: [PATCH 01/10] remove duplicate loop over objects in ivas_dirac_dec_renderer_sf --- lib_dec/ivas_dirac_dec.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index 92df801929..a32ddd89a8 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -2224,9 +2224,11 @@ void ivas_dirac_dec_render_sf( /* render objects in combined format onto the CICP19 channels for BINAURAL_ROOM_IR */ if ( st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC && st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { +#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING int16_t in_ch; for ( in_ch = 0; in_ch < st_ivas->nchan_ism; in_ch++ ) { +#endif int16_t j, k, j2, l; int16_t num_objects, nchan_out_woLFE, lfe_index; int16_t az1, el1; @@ -2314,7 +2316,9 @@ void ivas_dirac_dec_render_sf( } } } +#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING } +#endif #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING st_ivas->hIsmRendererData->interp_offset += hSpatParamRendCom->num_freq_bands * st_ivas->hSpar->subframe_nbslots[st_ivas->hSpar->subframes_rendered]; #endif -- GitLab From b5cba1f046d0f2b4c1c947b285b918a50fbbfbb3 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 14 Aug 2024 16:24:53 +0200 Subject: [PATCH 02/10] invert azimuth angle for panning objects to MC layout for BINAURAL_ROOM_IR rendering in OSBA mode --- lib_dec/ivas_ism_param_dec.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib_dec/ivas_ism_param_dec.c b/lib_dec/ivas_ism_param_dec.c index 534f4971d6..112c947511 100644 --- a/lib_dec/ivas_ism_param_dec.c +++ b/lib_dec/ivas_ism_param_dec.c @@ -771,7 +771,16 @@ void ivas_ism_dec_digest_tc( if ( st_ivas->hEFAPdata != NULL ) { - efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], azimuth, elevation, EFAP_MODE_EFAP ); +#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING + if (st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC) + { + efap_determine_gains(st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], -azimuth, elevation, EFAP_MODE_EFAP); + } + else +#endif + { + efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], azimuth, elevation, EFAP_MODE_EFAP ); + } } } else if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || -- GitLab From 69bc69552bc5275e03c9f61654c75076bd6e7ba0 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 14 Aug 2024 16:36:17 +0200 Subject: [PATCH 03/10] fix formatting --- lib_dec/ivas_dirac_dec.c | 4 ++-- lib_dec/ivas_ism_param_dec.c | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index a32ddd89a8..219964d495 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -2253,7 +2253,7 @@ void ivas_dirac_dec_render_sf( #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING st_ivas->hIsmRendererData->interp_offset = 0; #else - interp_offset = 0; + interp_offset = 0; #endif } @@ -2287,7 +2287,7 @@ void ivas_dirac_dec_render_sf( #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING w1 = &st_ivas->hIsmRendererData->interpolator[st_ivas->hIsmRendererData->interp_offset]; #else - w1 = &st_ivas->hIsmRendererData->interpolator[interp_offset]; + w1 = &st_ivas->hIsmRendererData->interpolator[interp_offset]; #endif tc_re = pppQMfFrame_ts_re[nchan_transport + i][0]; diff --git a/lib_dec/ivas_ism_param_dec.c b/lib_dec/ivas_ism_param_dec.c index 112c947511..e5ce91d780 100644 --- a/lib_dec/ivas_ism_param_dec.c +++ b/lib_dec/ivas_ism_param_dec.c @@ -772,15 +772,15 @@ void ivas_ism_dec_digest_tc( if ( st_ivas->hEFAPdata != NULL ) { #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING - if (st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC) - { - efap_determine_gains(st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], -azimuth, elevation, EFAP_MODE_EFAP); - } - else + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], -azimuth, elevation, EFAP_MODE_EFAP ); + } + else #endif - { - efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], azimuth, elevation, EFAP_MODE_EFAP ); - } + { + efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], azimuth, elevation, EFAP_MODE_EFAP ); + } } } else if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || -- GitLab From 9d7047a0ed1fa9a4cfdf3e306df218e6d7bc391b Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 14 Aug 2024 16:49:58 +0200 Subject: [PATCH 04/10] fix compiler warning --- lib_dec/ivas_ism_param_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_ism_param_dec.c b/lib_dec/ivas_ism_param_dec.c index e5ce91d780..5bad03889c 100644 --- a/lib_dec/ivas_ism_param_dec.c +++ b/lib_dec/ivas_ism_param_dec.c @@ -774,7 +774,7 @@ void ivas_ism_dec_digest_tc( #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { - efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], -azimuth, elevation, EFAP_MODE_EFAP ); + efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], -st_ivas->hIsmMetaData[i]->azimuth, st_ivas->hIsmMetaData[i]->elevation, EFAP_MODE_EFAP ); } else #endif -- GitLab From e3c3aef66f8076167a6b56450575a2370c9753a0 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 14 Aug 2024 17:04:57 +0200 Subject: [PATCH 05/10] add 180 degrees to object azimuth angle when calculating panning gains --- lib_dec/ivas_ism_param_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_ism_param_dec.c b/lib_dec/ivas_ism_param_dec.c index 5bad03889c..53f63e16f4 100644 --- a/lib_dec/ivas_ism_param_dec.c +++ b/lib_dec/ivas_ism_param_dec.c @@ -774,7 +774,7 @@ void ivas_ism_dec_digest_tc( #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { - efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], -st_ivas->hIsmMetaData[i]->azimuth, st_ivas->hIsmMetaData[i]->elevation, EFAP_MODE_EFAP ); + efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], st_ivas->hIsmMetaData[i]->azimuth+180.0f, st_ivas->hIsmMetaData[i]->elevation, EFAP_MODE_EFAP ); } else #endif -- GitLab From c149df771e058680980c275388c3aaf7ba2d9074 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 14 Aug 2024 17:20:59 +0200 Subject: [PATCH 06/10] fix formatting --- lib_dec/ivas_ism_param_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_ism_param_dec.c b/lib_dec/ivas_ism_param_dec.c index 53f63e16f4..8a6a8a5ff1 100644 --- a/lib_dec/ivas_ism_param_dec.c +++ b/lib_dec/ivas_ism_param_dec.c @@ -774,7 +774,7 @@ void ivas_ism_dec_digest_tc( #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { - efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], st_ivas->hIsmMetaData[i]->azimuth+180.0f, st_ivas->hIsmMetaData[i]->elevation, EFAP_MODE_EFAP ); + efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], st_ivas->hIsmMetaData[i]->azimuth + 180.0f, st_ivas->hIsmMetaData[i]->elevation, EFAP_MODE_EFAP ); } else #endif -- GitLab From 776bdf35d6358636fe96b9380cbb08e10e8e19a8 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 16 Aug 2024 12:06:07 +0200 Subject: [PATCH 07/10] do not count LFE index in the MC chennels for fastconv rendering --- lib_dec/ivas_dirac_dec.c | 18 ++++++++++++++++-- lib_dec/ivas_ism_param_dec.c | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index 219964d495..893061340b 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -2229,7 +2229,10 @@ void ivas_dirac_dec_render_sf( for ( in_ch = 0; in_ch < st_ivas->nchan_ism; in_ch++ ) { #endif - int16_t j, k, j2, l; + int16_t j, k, l; +#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING + int16_t j2; +#endif int16_t num_objects, nchan_out_woLFE, lfe_index; int16_t az1, el1; int16_t n_slots_to_render; @@ -2270,12 +2273,18 @@ void ivas_dirac_dec_render_sf( } lfe_index = 0; +#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING + for (j = 0; j < nchan_out_woLFE; j++) +#else for ( j = 0, j2 = 0; j < nchan_out_woLFE; j++, j2++ ) +#endif { +#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING if ( ( st_ivas->hIntSetup.num_lfe > 0 ) && ( st_ivas->hIntSetup.index_lfe[lfe_index] == j ) ) { ( lfe_index < ( st_ivas->hIntSetup.num_lfe - 1 ) ) ? ( lfe_index++, j2++ ) : j2++; } +#endif gain = st_ivas->hIsmRendererData->gains[i][j]; prev_gain = st_ivas->hIsmRendererData->prev_gains[i][j]; @@ -2287,7 +2296,7 @@ void ivas_dirac_dec_render_sf( #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING w1 = &st_ivas->hIsmRendererData->interpolator[st_ivas->hIsmRendererData->interp_offset]; #else - w1 = &st_ivas->hIsmRendererData->interpolator[interp_offset]; + w1 = &st_ivas->hIsmRendererData->interpolator[interp_offset]; #endif tc_re = pppQMfFrame_ts_re[nchan_transport + i][0]; @@ -2302,8 +2311,13 @@ void ivas_dirac_dec_render_sf( for ( l = 0; l < hSpatParamRendCom->num_freq_bands; l++ ) { +#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING + Cldfb_RealBuffer[j][k][l] += g * *(tc_re++); + Cldfb_ImagBuffer[j][k][l] += g * *(tc_im++); +#else Cldfb_RealBuffer[j2][k][l] += g * *( tc_re++ ); Cldfb_ImagBuffer[j2][k][l] += g * *( tc_im++ ); +#endif } w1 += hSpatParamRendCom->num_freq_bands; } diff --git a/lib_dec/ivas_ism_param_dec.c b/lib_dec/ivas_ism_param_dec.c index 8a6a8a5ff1..2eeb7e4789 100644 --- a/lib_dec/ivas_ism_param_dec.c +++ b/lib_dec/ivas_ism_param_dec.c @@ -774,7 +774,7 @@ void ivas_ism_dec_digest_tc( #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { - efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], st_ivas->hIsmMetaData[i]->azimuth + 180.0f, st_ivas->hIsmMetaData[i]->elevation, EFAP_MODE_EFAP ); + efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], st_ivas->hIsmMetaData[i]->azimuth, st_ivas->hIsmMetaData[i]->elevation, EFAP_MODE_EFAP ); } else #endif -- GitLab From 0dca2ed649ae0875fd9b1b5684983c2748426b98 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 16 Aug 2024 12:24:35 +0200 Subject: [PATCH 08/10] fix compiler warning --- lib_dec/ivas_dirac_dec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index 893061340b..e0193d3817 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -2231,9 +2231,9 @@ void ivas_dirac_dec_render_sf( #endif int16_t j, k, l; #ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING - int16_t j2; + int16_t j2, lfe_index; #endif - int16_t num_objects, nchan_out_woLFE, lfe_index; + int16_t num_objects, nchan_out_woLFE; int16_t az1, el1; int16_t n_slots_to_render; int16_t n_samples_to_render; @@ -2272,10 +2272,10 @@ void ivas_dirac_dec_render_sf( } } - lfe_index = 0; #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING for (j = 0; j < nchan_out_woLFE; j++) #else + lfe_index = 0; for ( j = 0, j2 = 0; j < nchan_out_woLFE; j++, j2++ ) #endif { -- GitLab From ab4892228d7c98b793e89faa666adbbb5532bb75 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 16 Aug 2024 12:32:34 +0200 Subject: [PATCH 09/10] fix formatting --- lib_dec/ivas_dirac_dec.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index e0193d3817..7afe0de9f6 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -2231,7 +2231,7 @@ void ivas_dirac_dec_render_sf( #endif int16_t j, k, l; #ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING - int16_t j2, lfe_index; + int16_t j2, lfe_index; #endif int16_t num_objects, nchan_out_woLFE; int16_t az1, el1; @@ -2273,10 +2273,10 @@ void ivas_dirac_dec_render_sf( } #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING - for (j = 0; j < nchan_out_woLFE; j++) + for ( j = 0; j < nchan_out_woLFE; j++ ) #else - lfe_index = 0; - for ( j = 0, j2 = 0; j < nchan_out_woLFE; j++, j2++ ) + lfe_index = 0; + for ( j = 0, j2 = 0; j < nchan_out_woLFE; j++, j2++ ) #endif { #ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING @@ -2296,7 +2296,7 @@ void ivas_dirac_dec_render_sf( #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING w1 = &st_ivas->hIsmRendererData->interpolator[st_ivas->hIsmRendererData->interp_offset]; #else - w1 = &st_ivas->hIsmRendererData->interpolator[interp_offset]; + w1 = &st_ivas->hIsmRendererData->interpolator[interp_offset]; #endif tc_re = pppQMfFrame_ts_re[nchan_transport + i][0]; @@ -2312,11 +2312,11 @@ void ivas_dirac_dec_render_sf( for ( l = 0; l < hSpatParamRendCom->num_freq_bands; l++ ) { #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING - Cldfb_RealBuffer[j][k][l] += g * *(tc_re++); - Cldfb_ImagBuffer[j][k][l] += g * *(tc_im++); + Cldfb_RealBuffer[j][k][l] += g * *( tc_re++ ); + Cldfb_ImagBuffer[j][k][l] += g * *( tc_im++ ); #else - Cldfb_RealBuffer[j2][k][l] += g * *( tc_re++ ); - Cldfb_ImagBuffer[j2][k][l] += g * *( tc_im++ ); + Cldfb_RealBuffer[j2][k][l] += g * *( tc_re++ ); + Cldfb_ImagBuffer[j2][k][l] += g * *( tc_im++ ); #endif } w1 += hSpatParamRendCom->num_freq_bands; -- GitLab From 2fd854a332a42cf7b3a02cc98b88c03fa29f6ea8 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 16 Aug 2024 14:01:26 +0200 Subject: [PATCH 10/10] delete extra gain-calculation branch for OSBA --- lib_dec/ivas_ism_param_dec.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/lib_dec/ivas_ism_param_dec.c b/lib_dec/ivas_ism_param_dec.c index 2eeb7e4789..534f4971d6 100644 --- a/lib_dec/ivas_ism_param_dec.c +++ b/lib_dec/ivas_ism_param_dec.c @@ -771,16 +771,7 @@ void ivas_ism_dec_digest_tc( if ( st_ivas->hEFAPdata != NULL ) { -#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING - if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) - { - efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], st_ivas->hIsmMetaData[i]->azimuth, st_ivas->hIsmMetaData[i]->elevation, EFAP_MODE_EFAP ); - } - else -#endif - { - efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], azimuth, elevation, EFAP_MODE_EFAP ); - } + efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], azimuth, elevation, EFAP_MODE_EFAP ); } } else if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || -- GitLab