Loading lib_rend/ivas_dirac_output_synthesis_dec_fx.c +9 −11 Original line number Diff line number Diff line Loading @@ -4292,21 +4292,20 @@ static void computeTargetPSDs_diffuse_subframe_fx( Word16 ch_idx, cur_idx; Word32 diffuse_power[CLDFB_NO_CHANNELS_MAX]; /* segment auxiliary buffer; size: num_freq_bands. */ #ifdef FIX_867_CLDFB_NRG_SCALE Word16 q_cy_auto_diff_smooth_new; Word16 q_cy_auto_diff_smooth_new, q_diffuse_power; #endif /* estimate direct and diffuse power */ v_mult_fixed( diffuse_power_factor, reference_power, diffuse_power, num_freq_bands ); // (Q31, q_reference_power) -> q_reference_power #ifdef FIX_867_CLDFB_NRG_SCALE assert( q_reference_power[0] <= q_reference_power[1] ); Scale_sig32( diffuse_power + CLDFB_NO_CHANNELS_HALF, s_max( 0, sub( num_freq_bands, CLDFB_NO_CHANNELS_HALF ) ), sub( q_reference_power[0], q_reference_power[1] ) ); q_cy_auto_diff_smooth_new = q_reference_power[0]; move16(); IF( LT_16( *q_cy_auto_diff_smooth, q_reference_power[0] ) ) q_diffuse_power = s_min( q_reference_power[0], q_reference_power[1] ); Scale_sig32( diffuse_power, s_min( num_freq_bands, CLDFB_NO_CHANNELS_HALF ), sub( q_diffuse_power, q_reference_power[0] ) ); Scale_sig32( diffuse_power + CLDFB_NO_CHANNELS_HALF, s_max( 0, sub( num_freq_bands, CLDFB_NO_CHANNELS_HALF ) ), sub( q_diffuse_power, q_reference_power[1] ) ); q_cy_auto_diff_smooth_new = q_diffuse_power; IF( LT_16( *q_cy_auto_diff_smooth, q_diffuse_power ) ) { assert( *q_cy_auto_diff_smooth <= q_reference_power[0] ); Scale_sig32( diffuse_power, num_freq_bands, sub( *q_cy_auto_diff_smooth, q_reference_power[0] ) ); Scale_sig32( diffuse_power, num_freq_bands, sub( *q_cy_auto_diff_smooth, q_cy_auto_diff_smooth_new ) ); q_cy_auto_diff_smooth_new = *q_cy_auto_diff_smooth; move16(); } Loading @@ -4317,10 +4316,9 @@ static void computeTargetPSDs_diffuse_subframe_fx( cur_idx = imult1616( ch_idx, num_freq_bands ); #ifdef FIX_867_CLDFB_NRG_SCALE IF( GT_16( *q_cy_auto_diff_smooth, q_reference_power[0] ) ) IF( GT_16( *q_cy_auto_diff_smooth, q_diffuse_power ) ) { assert( q_reference_power[0] <= *q_cy_auto_diff_smooth ); Scale_sig32( &cy_auto_diff_smooth[cur_idx], start_band, sub( q_reference_power[0], *q_cy_auto_diff_smooth ) ); Scale_sig32( &cy_auto_diff_smooth[cur_idx], start_band, sub( q_diffuse_power, *q_cy_auto_diff_smooth ) ); } #endif v_multc_fixed( &diffuse_power[start_band], diffuse_responses_square[ch_idx], &cy_auto_diff_smooth[cur_idx + start_band], sub( num_freq_bands, start_band ) ); // (q_reference_power, Q31) -> q_reference_power Loading Loading
lib_rend/ivas_dirac_output_synthesis_dec_fx.c +9 −11 Original line number Diff line number Diff line Loading @@ -4292,21 +4292,20 @@ static void computeTargetPSDs_diffuse_subframe_fx( Word16 ch_idx, cur_idx; Word32 diffuse_power[CLDFB_NO_CHANNELS_MAX]; /* segment auxiliary buffer; size: num_freq_bands. */ #ifdef FIX_867_CLDFB_NRG_SCALE Word16 q_cy_auto_diff_smooth_new; Word16 q_cy_auto_diff_smooth_new, q_diffuse_power; #endif /* estimate direct and diffuse power */ v_mult_fixed( diffuse_power_factor, reference_power, diffuse_power, num_freq_bands ); // (Q31, q_reference_power) -> q_reference_power #ifdef FIX_867_CLDFB_NRG_SCALE assert( q_reference_power[0] <= q_reference_power[1] ); Scale_sig32( diffuse_power + CLDFB_NO_CHANNELS_HALF, s_max( 0, sub( num_freq_bands, CLDFB_NO_CHANNELS_HALF ) ), sub( q_reference_power[0], q_reference_power[1] ) ); q_cy_auto_diff_smooth_new = q_reference_power[0]; move16(); IF( LT_16( *q_cy_auto_diff_smooth, q_reference_power[0] ) ) q_diffuse_power = s_min( q_reference_power[0], q_reference_power[1] ); Scale_sig32( diffuse_power, s_min( num_freq_bands, CLDFB_NO_CHANNELS_HALF ), sub( q_diffuse_power, q_reference_power[0] ) ); Scale_sig32( diffuse_power + CLDFB_NO_CHANNELS_HALF, s_max( 0, sub( num_freq_bands, CLDFB_NO_CHANNELS_HALF ) ), sub( q_diffuse_power, q_reference_power[1] ) ); q_cy_auto_diff_smooth_new = q_diffuse_power; IF( LT_16( *q_cy_auto_diff_smooth, q_diffuse_power ) ) { assert( *q_cy_auto_diff_smooth <= q_reference_power[0] ); Scale_sig32( diffuse_power, num_freq_bands, sub( *q_cy_auto_diff_smooth, q_reference_power[0] ) ); Scale_sig32( diffuse_power, num_freq_bands, sub( *q_cy_auto_diff_smooth, q_cy_auto_diff_smooth_new ) ); q_cy_auto_diff_smooth_new = *q_cy_auto_diff_smooth; move16(); } Loading @@ -4317,10 +4316,9 @@ static void computeTargetPSDs_diffuse_subframe_fx( cur_idx = imult1616( ch_idx, num_freq_bands ); #ifdef FIX_867_CLDFB_NRG_SCALE IF( GT_16( *q_cy_auto_diff_smooth, q_reference_power[0] ) ) IF( GT_16( *q_cy_auto_diff_smooth, q_diffuse_power ) ) { assert( q_reference_power[0] <= *q_cy_auto_diff_smooth ); Scale_sig32( &cy_auto_diff_smooth[cur_idx], start_band, sub( q_reference_power[0], *q_cy_auto_diff_smooth ) ); Scale_sig32( &cy_auto_diff_smooth[cur_idx], start_band, sub( q_diffuse_power, *q_cy_auto_diff_smooth ) ); } #endif v_multc_fixed( &diffuse_power[start_band], diffuse_responses_square[ch_idx], &cy_auto_diff_smooth[cur_idx + start_band], sub( num_freq_bands, start_band ) ); // (q_reference_power, Q31) -> q_reference_power Loading