Commit 76d77857 authored by Manuel Jander's avatar Manuel Jander
Browse files

Use num_cldfb_bands instead of CLDFB_NO_CHANNELS_MAX for searching headroom...

Use num_cldfb_bands instead of CLDFB_NO_CHANNELS_MAX for searching headroom and rescaling as suggested by @malenovskyvl
parent 74c4c4ed
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -1819,7 +1819,7 @@ static void isar_rend_CldfbSplitPostRendProcessTdIn(
            RealBuffer_fx[slot_idx] = Cldfb_RealBuffer_Binaural_fx[ch_idx][slot_idx];
            ImagBuffer_fx[slot_idx] = Cldfb_ImagBuffer_Binaural_fx[ch_idx][slot_idx];
#ifdef NONBE_FIX_ISSUE_2232_CHECK_CLDFB_STATES
            scaleFactor = s_min( scaleFactor, s_min( L_norm_arr( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ), L_norm_arr( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ) ) );
            scaleFactor = s_min( scaleFactor, s_min( L_norm_arr( RealBuffer_fx[slot_idx], num_cldfb_bands ), L_norm_arr( ImagBuffer_fx[slot_idx], num_cldfb_bands ) ) );
            scaleFactor = s_min( scaleFactor, L_norm_arr( hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_fx, hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_length ) );
#else
            scaleFactor = s_min( scaleFactor, s_min( getScaleFactor32( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ), getScaleFactor32( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ) ) );
@@ -1828,8 +1828,13 @@ static void isar_rend_CldfbSplitPostRendProcessTdIn(
        scaleFactor = s_min( sub( scaleFactor, 6 ), Q24 ); // guarded bits
        FOR( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ )
        {
#ifdef NONBE_FIX_ISSUE_2232_CHECK_CLDFB_STATES
            Scale_sig32( RealBuffer_fx[slot_idx], num_cldfb_bands, scaleFactor );
            Scale_sig32( ImagBuffer_fx[slot_idx], num_cldfb_bands, scaleFactor );
#else
            Scale_sig32( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX, scaleFactor );
            Scale_sig32( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX, scaleFactor );
#endif
        }
        Q_cldfb = add( scaleFactor, Q_in );
        Scale_sig32( hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_fx, hBinHrSplitPostRend->cldfbSyn[ch_idx]->p_filter_length, sub( sub( Q_cldfb, 1 ), Q11 ) );
@@ -1886,7 +1891,7 @@ void isar_rend_CldfbSplitPostRendProcess(
            RealBuffer_fx[slot_idx] = Cldfb_RealBuffer_Binaural_fx[ch_idx][slot_idx];
            ImagBuffer_fx[slot_idx] = Cldfb_ImagBuffer_Binaural_fx[ch_idx][slot_idx];
#ifdef NONBE_FIX_ISSUE_2232_CHECK_CLDFB_STATES
            scaleFactor = s_min( scaleFactor, s_min( L_norm_arr( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ), L_norm_arr( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ) ) );
            scaleFactor = s_min( scaleFactor, s_min( L_norm_arr( RealBuffer_fx[slot_idx], num_cldfb_bands ), L_norm_arr( ImagBuffer_fx[slot_idx], num_cldfb_bands ) ) );
            scaleFactor = s_min( scaleFactor, L_norm_arr( hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_fx, hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_length ) );
#else
            scaleFactor = s_min( scaleFactor, s_min( getScaleFactor32( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ), getScaleFactor32( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ) ) );
@@ -1896,8 +1901,13 @@ void isar_rend_CldfbSplitPostRendProcess(
        scaleFactor = s_min( sub( scaleFactor, 6 ), Q24 ); // guarded bits
        FOR( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ )
        {
#ifdef NONBE_FIX_ISSUE_2232_CHECK_CLDFB_STATES
            Scale_sig32( RealBuffer_fx[slot_idx], num_cldfb_bands, scaleFactor );
            Scale_sig32( ImagBuffer_fx[slot_idx], num_cldfb_bands, scaleFactor );
#else
            Scale_sig32( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX, scaleFactor );
            Scale_sig32( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX, scaleFactor );
#endif
        }
        Q_cldfb = scaleFactor + Q_cldfb_in;
        Scale_sig32( hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_fx, hBinHrSplitPostRend->cldfbSyn[ch_idx]->p_filter_length, sub( sub( Q_cldfb, 1 ), Q11 ) );