Skip to content

OSBA object-editing uses wrong number of channels

This is a follow up of #1322 (closed) where a work on !2186 (merged) revealed that the originally reported issue still exists for OSBA, Disc mode, and BINAURAL_ROOM_IR output.

in ivas_sba_dec_render() function, the SBA gain is edited as follows:

    if ( st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC )
    {
        float gain = st_ivas->hSbaIsmData->gain_bed;
        if ( gain != 1.0f && gain >= 0.0f )
        {
            for ( ch = 0; ch < nchan_out; ch++ )
            {
                int16_t i;
                for ( i = 0; i < n_samples_sf; i++ )
                {
                    output_f_local[ch][i] *= gain;
                }
            }
        }
    }

The editing is done in a loop over nchan_out = 4. However, in the case of RENDERER_BINAURAL_FASTCONV_ROOM, the rendering happens in the function ivas_osba_render_sf() and the number of processed channels in the instance above is just 2.

Consequently, when !2186 (merged) is part of the main, there happens a gaining of channels with uninitialized values.

Edited by vaclav