Commit 0cb8ced9 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

fix crash when editing SBA gain in OSBA decoding

parent 5901df99
Loading
Loading
Loading
Loading
+19 −18
Original line number Diff line number Diff line
@@ -795,6 +795,25 @@ ivas_error ivas_sba_dec_render(
        int16_t n_samples_sf = slot_size * hSpar->subframe_nbslots[subframe_idx];

        ivas_spar_dec_upmixer_sf( st_ivas, output_f_local, nchan_internal );

#ifdef OBJ_EDITING_API
		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;
					}
				}
			}
		}
#endif

        for ( ch = 0; ch < nchan_out; ch++ )
        {
            output_f_local[ch] += n_samples_sf;
@@ -824,24 +843,6 @@ ivas_error ivas_sba_dec_render(
        }
    }

#ifdef OBJ_EDITING_API
    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 < L_FRAME48k; i++ )
                {
                    output_f_local[ch][i] *= gain;
                }
            }
        }
    }
#endif

    *nSamplesAvailableNext = ( hSpar->num_slots - hSpar->slots_rendered ) * slot_size;

    return IVAS_ERR_OK;