Commit 2ab6e934 authored by Manuel Jander's avatar Manuel Jander
Browse files

Fix more cases where number of bands is lower than CLDFB_NO_CHANNELS_HALF.

parent 19a923a0
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -3420,12 +3420,12 @@ void ivas_dirac_dec_render_sf_fx(
            v_add_fixed_me( reference_power_fx, sub( 31, DirAC_mem.reference_power_q[0] ),
                            reference_power_smooth_fx, sub( 31, q_reference_power_smooth[0] ),
                            reference_power_smooth_fx, &temp_q,
                            CLDFB_NO_CHANNELS_HALF, 1 );
                            s_min( hSpatParamRendCom->num_freq_bands, CLDFB_NO_CHANNELS_HALF ), 1 );
            q_reference_power_smooth[0] = sub( 31, temp_q );
            v_add_fixed_me( reference_power_fx + CLDFB_NO_CHANNELS_HALF, sub( 31, DirAC_mem.reference_power_q[1] ),
                            reference_power_smooth_fx + CLDFB_NO_CHANNELS_HALF, sub( 31, q_reference_power_smooth[1] ),
                            reference_power_smooth_fx + CLDFB_NO_CHANNELS_HALF, &temp_q,
                            sub( hSpatParamRendCom->num_freq_bands, CLDFB_NO_CHANNELS_HALF ), 1 );
                            s_max( 0, sub( hSpatParamRendCom->num_freq_bands, CLDFB_NO_CHANNELS_HALF ) ), 1 );
            q_reference_power_smooth[1] = sub( 31, temp_q );
#endif
#else
@@ -3671,12 +3671,12 @@ void ivas_dirac_dec_render_sf_fx(
        }

#ifdef FIX_867_CLDFB_NRG_SCALE
        exp = L_norm_arr( reference_power_smooth_fx, CLDFB_NO_CHANNELS_HALF );
        scale_sig32( reference_power_smooth_fx, CLDFB_NO_CHANNELS_HALF, exp ); // q_reference_power_smooth[0] + exp
        exp = L_norm_arr( reference_power_smooth_fx, s_min( hSpatParamRendCom->num_freq_bands, CLDFB_NO_CHANNELS_HALF ) );
        scale_sig32( reference_power_smooth_fx, s_min( hSpatParamRendCom->num_freq_bands, CLDFB_NO_CHANNELS_HALF ), exp ); // q_reference_power_smooth[0] + exp
        q_reference_power_smooth[0] = add( q_reference_power_smooth[0], exp );
        IF( LT_16( q_reference_power_smooth[0], hDirACRend->h_output_synthesis_psd_state.reference_power_smooth_prev_q[0] ) )
        {
            scale_sig32( hDirACRend->h_output_synthesis_psd_state.reference_power_smooth_prev_fx, CLDFB_NO_CHANNELS_HALF, sub( q_reference_power_smooth[0], hDirACRend->h_output_synthesis_psd_state.reference_power_smooth_prev_q[0] ) ); // q_reference_power_smooth[0]
            scale_sig32( hDirACRend->h_output_synthesis_psd_state.reference_power_smooth_prev_fx, s_min( hSpatParamRendCom->num_freq_bands, CLDFB_NO_CHANNELS_HALF ), sub( q_reference_power_smooth[0], hDirACRend->h_output_synthesis_psd_state.reference_power_smooth_prev_q[0] ) ); // q_reference_power_smooth[0]
            hDirACRend->h_output_synthesis_psd_state.reference_power_smooth_prev_q[0] = q_reference_power_smooth[0];
            move16();
        }
@@ -3693,12 +3693,12 @@ void ivas_dirac_dec_render_sf_fx(
            move16();
        }

        exp = L_norm_arr( reference_power_smooth_fx + CLDFB_NO_CHANNELS_HALF, sub( hSpatParamRendCom->num_freq_bands, CLDFB_NO_CHANNELS_HALF ) );
        scale_sig32( reference_power_smooth_fx + CLDFB_NO_CHANNELS_HALF, sub( hSpatParamRendCom->num_freq_bands, CLDFB_NO_CHANNELS_HALF ), exp ); // q_reference_power_smooth + exp
        exp = L_norm_arr( reference_power_smooth_fx + CLDFB_NO_CHANNELS_HALF, s_max( 0, sub( hSpatParamRendCom->num_freq_bands, CLDFB_NO_CHANNELS_HALF ) ) );
        scale_sig32( reference_power_smooth_fx + CLDFB_NO_CHANNELS_HALF, s_max( 0, sub( hSpatParamRendCom->num_freq_bands, CLDFB_NO_CHANNELS_HALF ) ), exp ); // q_reference_power_smooth + exp
        q_reference_power_smooth[1] = add( q_reference_power_smooth[1], exp );
        IF( LT_16( q_reference_power_smooth[1], hDirACRend->h_output_synthesis_psd_state.reference_power_smooth_prev_q[1] ) )
        {
            scale_sig32( hDirACRend->h_output_synthesis_psd_state.reference_power_smooth_prev_fx + CLDFB_NO_CHANNELS_HALF, sub( hSpatParamRendCom->num_freq_bands, CLDFB_NO_CHANNELS_HALF ), sub( q_reference_power_smooth[1], hDirACRend->h_output_synthesis_psd_state.reference_power_smooth_prev_q[1] ) ); // q_reference_power_smooth
            scale_sig32( hDirACRend->h_output_synthesis_psd_state.reference_power_smooth_prev_fx + CLDFB_NO_CHANNELS_HALF, s_max( 0, sub( hSpatParamRendCom->num_freq_bands, CLDFB_NO_CHANNELS_HALF ) ), sub( q_reference_power_smooth[1], hDirACRend->h_output_synthesis_psd_state.reference_power_smooth_prev_q[1] ) ); // q_reference_power_smooth
            hDirACRend->h_output_synthesis_psd_state.reference_power_smooth_prev_q[1] = q_reference_power_smooth[1];
            move16();
        }