From fefa52c6b7a9fbfa267a18ad8b031900930c3f4c Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 16 May 2025 12:21:52 +0200 Subject: [PATCH] port float MR !1357 --- lib_com/options.h | 1 + lib_dec/ivas_jbm_dec_fx.c | 4 ++++ lib_dec/ivas_osba_dec_fx.c | 15 ++++++++++++++- lib_rend/ivas_output_init.c | 6 ++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 25c48c3c5..2e8fa8802 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -121,6 +121,7 @@ #define NONBE_FIX_947_STEREO_DMX_EVS_POC /* Orange: Fix clicks on POC */ #define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ +#define NONBE_FIX_979_OSBA_STEREO_5MS /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 246befb84..fa0a1e630 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1877,7 +1877,11 @@ ivas_error ivas_jbm_dec_render_fx( { FOR( n = 0; n < st_ivas->hTcBuffer->nchan_buffer_full; n++ ) { +#ifdef NONBE_FIX_979_OSBA_STEREO_5MS + p_tc_fx[n] = &p_output_fx[n][st_ivas->hTcBuffer->n_samples_rendered]; +#else p_tc_fx[n] = p_output_fx[n]; +#endif } FOR( n = 0; n < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; n++ ) diff --git a/lib_dec/ivas_osba_dec_fx.c b/lib_dec/ivas_osba_dec_fx.c index c96a91d58..8445d96a3 100644 --- a/lib_dec/ivas_osba_dec_fx.c +++ b/lib_dec/ivas_osba_dec_fx.c @@ -297,10 +297,23 @@ ivas_error ivas_osba_render_sf_fx( p_output_ism[n] = &output_ism[n][0]; } - FOR( n = 0; n < st_ivas->nchan_ism; n++ ) +#ifdef NONBE_FIX_979_OSBA_STEREO_5MS + if ( !st_ivas->hDecoderConfig->Opt_tsm ) { + int16_t tc_offset; + tc_offset = st_ivas->hTcBuffer->n_samples_rendered; +#endif + for ( n = 0; n < st_ivas->nchan_ism; n++ ) + { +#ifdef NONBE_FIX_979_OSBA_STEREO_5MS + v_shr( &p_output[n][tc_offset], Q11 - Q11, &output_ism[n][tc_offset], nSamplesAsked ); // Q11 +#else v_shr( p_output[n], Q11 - Q11, output_ism[n], nSamplesAsked ); // Q11 +#endif + } +#ifdef NONBE_FIX_979_OSBA_STEREO_5MS } +#endif IF( NE_32( ( error = ivas_sba_dec_render_fx( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailableNext, p_output ) ), IVAS_ERR_OK ) ) { diff --git a/lib_rend/ivas_output_init.c b/lib_rend/ivas_output_init.c index c5271d065..ed51fbdd2 100644 --- a/lib_rend/ivas_output_init.c +++ b/lib_rend/ivas_output_init.c @@ -386,6 +386,12 @@ Word16 ivas_get_nchan_buffers_dec( { nchan_out_buff = shl( CPE_CHANNELS, 1 ); } +#ifdef NONBE_FIX_979_OSBA_STEREO_5MS + else if ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) + { + nchan_out_buff = s_max( nchan_out_buff, add( shl( BINAURAL_CHANNELS, 1 ), 2 ) ); + } +#endif ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) { nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) ); -- GitLab