Skip to content

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

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

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 0dbd8867 (ivas-float-update). In BASOP, the whole #ifndef-construct was removed completely by @weckbecker in 05b535ce...

Seems the original code was at least pushed by @pihlajakuja in ivas-codec-pc/ivas-codec@a3ceaf4e

Edited by multrus