From ec500adf3a2b7fffae01db5b9e37c7dd677590dd Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Sun, 17 Aug 2025 16:25:35 +0200 Subject: [PATCH 1/2] port float MR1736 to main --- lib_dec/ivas_dirac_dec_fx.c | 53 ++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index e4311e8e1..5c6457df3 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -3706,11 +3706,16 @@ void ivas_dirac_dec_render_sf_fx( test(); IF( ( ( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) && EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) ) { +#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING Word16 in_ch; FOR( in_ch = 0; in_ch < st_ivas->nchan_ism; in_ch++ ) { - Word16 j, k, j2, l; - Word16 num_objects, nchan_out_woLFE, lfe_index; +#endif + Word16 j, k, l; +#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING + Word16 j2, lfe_index; +#endif + Word16 num_objects, nchan_out_woLFE; Word16 n_slots_to_render; Word16 n_samples_to_render; #ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING @@ -3737,7 +3742,7 @@ void ivas_dirac_dec_render_sf_fx( #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING st_ivas->hIsmRendererData->interp_offset_fx = 0; #else - interp_offset = 0; + interp_offset = 0; #endif move16(); } @@ -3761,10 +3766,15 @@ void ivas_dirac_dec_render_sf_fx( } } - lfe_index = 0; - move16(); - for ( j = 0, j2 = 0; j < nchan_out_woLFE; j++, j2++ ) +#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING + FOR( j = 0; j < nchan_out_woLFE; j++ ) +#else + lfe_index = 0; + move16(); + for ( j = 0, j2 = 0; j < nchan_out_woLFE; j++, j2++ ) +#endif { +#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING test(); IF( ( st_ivas->hIntSetup.num_lfe > 0 && ( EQ_16( st_ivas->hIntSetup.index_lfe[lfe_index], j ) ) ) ) { @@ -3778,6 +3788,7 @@ void ivas_dirac_dec_render_sf_fx( j2 = add( j2, 1 ); } } +#endif gain_fx = st_ivas->hIsmRendererData->gains_fx[i][j]; move32(); prev_gain_fx = st_ivas->hIsmRendererData->prev_gains_fx[i][j]; @@ -3791,7 +3802,7 @@ void ivas_dirac_dec_render_sf_fx( #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING w1_fx = &st_ivas->hIsmRendererData->interpolator_fx[st_ivas->hIsmRendererData->interp_offset_fx]; #else - w1_fx = &st_ivas->hIsmRendererData->interpolator_fx[interp_offset]; + w1_fx = &st_ivas->hIsmRendererData->interpolator_fx[interp_offset]; #endif tc_re_fx = pppQMfFrame_ts_re_fx[nchan_transport + i][0]; move32(); @@ -3804,23 +3815,39 @@ void ivas_dirac_dec_render_sf_fx( g_fx = Madd_32_16( Mpy_32_16_1( gain_fx, *w1_fx ), prev_gain_fx, w2_fx ); // Q15 FOR( l = 0; l < hSpatParamRendCom->num_freq_bands; l++ ) { +#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING +#ifdef FIX_CDLFB_BUFFER_SCALING + Cldfb_RealBuffer_fx[j][k][l] = Madd_32_32( Cldfb_RealBuffer_fx[j][k][l], g_fx, L_shl( *tc_re_fx, 1 ) ); +#else + Cldfb_RealBuffer_fx[j][k][l] = Madd_32_32( Cldfb_RealBuffer_fx[j][k][l], g_fx, *tc_re_fx ); +#endif +#else #ifdef FIX_CDLFB_BUFFER_SCALING - Cldfb_RealBuffer_fx[j2][k][l] = Madd_32_32( Cldfb_RealBuffer_fx[j2][k][l], g_fx, L_shl( *tc_re_fx, 1 ) ); + Cldfb_RealBuffer_fx[j2][k][l] = Madd_32_32( Cldfb_RealBuffer_fx[j2][k][l], g_fx, L_shl( *tc_re_fx, 1 ) ); #else - Cldfb_RealBuffer_fx[j2][k][l] = Madd_32_32( Cldfb_RealBuffer_fx[j2][k][l], g_fx, *tc_re_fx ); + Cldfb_RealBuffer_fx[j2][k][l] = Madd_32_32( Cldfb_RealBuffer_fx[j2][k][l], g_fx, *tc_re_fx ); +#endif #endif move32(); tc_re_fx++; +#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING #ifdef FIX_CDLFB_BUFFER_SCALING - Cldfb_ImagBuffer_fx[j2][k][l] = Madd_32_32( Cldfb_ImagBuffer_fx[j2][k][l], g_fx, L_shl( *tc_im_fx, 1 ) ); + Cldfb_ImagBuffer_fx[j][k][l] = Madd_32_32( Cldfb_ImagBuffer_fx[j][k][l], g_fx, L_shl( *tc_im_fx, 1 ) ); #else - Cldfb_ImagBuffer_fx[j2][k][l] = Madd_32_32( Cldfb_ImagBuffer_fx[j2][k][l], g_fx, *tc_im_fx ); + Cldfb_ImagBuffer_fx[j][k][l] = Madd_32_32( Cldfb_ImagBuffer_fx[j][k][l], g_fx, *tc_im_fx ); +#endif +#else +#ifdef FIX_CDLFB_BUFFER_SCALING + Cldfb_ImagBuffer_fx[j2][k][l] = Madd_32_32( Cldfb_ImagBuffer_fx[j2][k][l], g_fx, L_shl( *tc_im_fx, 1 ) ); +#else + Cldfb_ImagBuffer_fx[j2][k][l] = Madd_32_32( Cldfb_ImagBuffer_fx[j2][k][l], g_fx, *tc_im_fx ); +#endif #endif move32(); #ifdef FIX_1917_DIRAC_RENDER_PTR_INCR tc_im_fx++; #else - tc_re_fx++; + tc_re_fx++; #endif } w1_fx += hSpatParamRendCom->num_freq_bands; @@ -3835,7 +3862,9 @@ void ivas_dirac_dec_render_sf_fx( } } } +#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING } +#endif #ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING st_ivas->hIsmRendererData->interp_offset_fx = add( st_ivas->hIsmRendererData->interp_offset_fx, i_mult( hSpatParamRendCom->num_freq_bands, st_ivas->hSpar->subframe_nbslots[st_ivas->hSpar->subframes_rendered] ) ); #endif -- GitLab From c1bb286a9eb4ae7938f5c152e760c1a2c1439148 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Sun, 17 Aug 2025 16:40:20 +0200 Subject: [PATCH 2/2] whitespace to trigger pipeline --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index c7efa9e0c..c739875d4 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -142,7 +142,7 @@ #define NONBE_FIX_1110_STEREO_DTX_BRATE_SWITCHING /* VA: issue 1110: fix encoder crash in the stereo DTX bitrate switching condition */ #define NONBE_1894_OSBA_SCALING /* FhG: do not scale OSBA inputs by 0.5 any more */ -#define NONBE_FIX_1141_OSBA_ROOM_RENDERING /* FhG: Fix for issue 1141: render objects in OSBA decoder with room effect */ +#define NONBE_FIX_1141_OSBA_ROOM_RENDERING /* FhG: Fix for issue 1141: render objects in OSBA decoder with room effect */ #define NONBE_1360_LFE_DELAY /* Dlb: LFE delay alignment when rendering in CLDFB domain*/ #define NONBE_1229_FIX_ISM1_DPID /* Eri: issue 1229: fix bug causing ISM 1 to use default -dpid instead of the specified one */ -- GitLab