TMP_FIX_OMASA_SR_BE causing Non-BE between ivas-float-update and ivas-codec/main
# Bug description For the following testcase (which is the first error reported in https://ivas-codec-pc.3gpp.org/-/ivas-codec/-/jobs/629655/artifacts/report.html), the switch `TMP_FIX_OMASA_SR_BE` seems to cause this non-BE behavior: ``` IVAS_dec -T ivas-codec/scripts/trajectories/rotate_euler_quaternion_30s_delayed.csv -render_config ivas-codec/tests/split_rendering/renderer_configs/split_renderer_config_3dofhq_768k_default.txt -voip -fr 20 BINAURAL_SPLIT_CODED 48 ISM1MASA1_32000_SPLIT_CODED_full_cfg_split_renderer_config_3dofhq_768k_default_fr_pre_20_post_20_dly_error_profile_5.netsimout ISM1MASA1_32000_SPLIT_CODED_full_cfg_split_renderer_config_3dofhq_768k_default_fr_pre_20_post_20_dly_error_profile_5.splt.bit ``` The split-rendering bitstream is different between ivas-codec/main and ivas-float-update. Disabling `TMP_FIX_OMASA_SR_BE` brings the code in `lib_dec/ivas_jbm_dec.c` inline with ivas-codec/main. Also the fixed-point code is affected by this. Bitstream: [ISM1MASA1_32000_SPLIT_CODED_full_cfg_split_renderer_config_3dofhq_768k_default_fr_pre_20_post_20_dly_error_profile_5.192](/uploads/1a5adf8a13614cf0f61a3766478f56d0/ISM1MASA1_32000_SPLIT_CODED_full_cfg_split_renderer_config_3dofhq_768k_default_fr_pre_20_post_20_dly_error_profile_5.192) Network-Simulator Output: [ISM1MASA1_32000_SPLIT_CODED_full_cfg_split_renderer_config_3dofhq_768k_default_fr_pre_20_post_20_dly_error_profile_5.netsimout](/uploads/9ad38969077b3e13d5e3bc8b503bf359/ISM1MASA1_32000_SPLIT_CODED_full_cfg_split_renderer_config_3dofhq_768k_default_fr_pre_20_post_20_dly_error_profile_5.netsimout) Code in ivas-float-update: ``` #ifndef TMP_FIX_OMASA_SR_BE if ( st_ivas->hDecoderConfig->output_config != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && st_ivas->hDecoderConfig->output_config != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) #endif { delay_signal( st_ivas->hTcBuffer->tc[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size ); } ``` Code in ivas-codec/main: ``` if ( st_ivas->hDecoderConfig->output_config != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && st_ivas->hDecoderConfig->output_config != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { delay_signal( st_ivas->hTcBuffer->tc[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size ); } ``` Hint: This is #if\*\*_n_\*\*def... Seems the macro was introduced by @vaclav in 0dbd8867a7abf66cce48d1cc36fd2f1e04fb2691 (ivas-float-update). In BASOP, the whole #ifndef-construct was removed completely by @weckbecker in 05b535ce08dc5f336f1c4a9540c30a628d759b64... Seems the original code was at least pushed by @pihlajakuja in https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/commit/a3ceaf4e5701ab25630be92ca715c5706402e4b3
issue