Loading lib_rend/ivas_dirac_output_synthesis_dec.c +26 −14 Original line number Diff line number Diff line Loading @@ -6703,7 +6703,11 @@ static void computeTargetPSDs_direct_fx( /* segment auxiliary buffer */ Word32 direct_power[CLDFB_NO_CHANNELS_MAX]; /* size: num_freq_bands. */ #ifdef FIX_867 Word32 aux_buffer_res; /* size: num_freq_bands. */ #else Word32 aux_buffer_res[CLDFB_NO_CHANNELS_MAX]; /* size: num_freq_bands. */ #endif /* estimate direct and diffuse power */ v_mult_fixed( direct_power_factor, reference_power, direct_power, num_freq_bands ); /* Q31 + Q(q_reference_power) - Q31 = Q(q_reference_power) */ Loading @@ -6722,20 +6726,28 @@ static void computeTargetPSDs_direct_fx( { Word16 common1_q = s_min( q_cy_auto_dir_smooth[cur_idx + l], q_reference_power[l] ); Word16 common2_q = s_min( q_cy_cross_dir_smooth[cur_idx + l], q_reference_power[l] ); v_mult_fixed( direct_power, &direct_responses_square[cur_idx + l], aux_buffer_res, 1 ); /* Q31 + Q(q_reference_power) - Q31 = Q(q_reference_power) */ scale_sig32( &aux_buffer_res[l], 1, sub( common1_q, q_reference_power[l] ) ); /* Q(common1_q) */ scale_sig32( &cy_auto_dir_smooth[cur_idx + l], 1, sub( common1_q, q_cy_auto_dir_smooth[cur_idx + l] ) ); /* Q(common1_q) */ v_add_fixed( &cy_auto_dir_smooth[cur_idx + l], &aux_buffer_res[l], &cy_auto_dir_smooth[cur_idx + l], 1, Q1 ); /* Q(common1_q) - Q1 */ v_mult_fixed( direct_power, &direct_responses[cur_idx + l], &aux_buffer_res[l], 1 ); /* Q31 + Q(q_reference_power) - Q31 = Q(q_reference_power) */ scale_sig32( &aux_buffer_res[l], 1, sub( common2_q, q_reference_power[l] ) ); /* Q(common2_q) */ scale_sig32( &cy_cross_dir_smooth[cur_idx + l], 1, sub( common2_q, q_cy_cross_dir_smooth[cur_idx + l] ) ); /* Q(common2_q) */ v_add_fixed( &cy_cross_dir_smooth[cur_idx + l], &aux_buffer_res[l], &cy_cross_dir_smooth[cur_idx + l], 1, Q1 ); /* Q(common2_q) - Q1 */ aux_buffer_res = Mpy_32_32( direct_power[l], direct_responses_square[cur_idx + l] ); /* Q31 + Q(q_reference_power) - Q31 = Q(q_reference_power) */ /* Q adjustment */ q_cy_auto_dir_smooth[cur_idx + l] = sub( common1_q, Q1 ); aux_buffer_res = L_shl( aux_buffer_res, sub( common1_q, q_reference_power[l] ) ); /* Q(common1_q) */ cy_auto_dir_smooth[cur_idx + l] = L_shl( cy_auto_dir_smooth[cur_idx + l], sub( common1_q, q_cy_auto_dir_smooth[cur_idx + l] ) ); /* Q(common1_q) */ cy_auto_dir_smooth[cur_idx + l] = L_add( L_shr(cy_auto_dir_smooth[cur_idx + l],1), L_shr(aux_buffer_res,1) ); /* Q(common1_q) - Q1 */ aux_buffer_res = Mpy_32_32(direct_power[l], direct_responses[cur_idx + l]); /* Q31 + Q(q_reference_power) - Q31 = Q(q_reference_power) */ aux_buffer_res = L_shl( aux_buffer_res, sub( common2_q, q_reference_power[l] ) ); /* Q(common2_q) */ cy_cross_dir_smooth[cur_idx + l] = L_shl( cy_cross_dir_smooth[cur_idx + l], sub( common2_q, q_cy_cross_dir_smooth[cur_idx + l] ) ); /* Q(common2_q) */ cy_cross_dir_smooth[cur_idx + l] = L_add( L_shr(cy_cross_dir_smooth[cur_idx + l],1), L_shr(aux_buffer_res,1) ); /* Q(common2_q) - Q1 */ Word16 q_tmp = norm_l(cy_auto_dir_smooth[cur_idx + l]); cy_auto_dir_smooth[cur_idx + l] = L_shl(cy_auto_dir_smooth[cur_idx + l], q_tmp); q_cy_auto_dir_smooth[cur_idx + l] = add(sub(common1_q, Q1), q_tmp); move16(); q_cy_cross_dir_smooth[cur_idx + l] = sub( common2_q, Q1 ); q_tmp = norm_l(cy_cross_dir_smooth[cur_idx + l]); cy_cross_dir_smooth[cur_idx + l] = L_shl(cy_cross_dir_smooth[cur_idx + l], q_tmp); q_cy_cross_dir_smooth[cur_idx + l] = add(sub( common2_q, Q1 ), q_tmp); move16(); } Loading lib_dec/ivas_dirac_dec.c +23 −23 File changed.Contains only whitespace changes. Show changes lib_rend/ivas_dirac_rend.c +13 −13 File changed.Contains only whitespace changes. Show changes Loading
lib_rend/ivas_dirac_output_synthesis_dec.c +26 −14 Original line number Diff line number Diff line Loading @@ -6703,7 +6703,11 @@ static void computeTargetPSDs_direct_fx( /* segment auxiliary buffer */ Word32 direct_power[CLDFB_NO_CHANNELS_MAX]; /* size: num_freq_bands. */ #ifdef FIX_867 Word32 aux_buffer_res; /* size: num_freq_bands. */ #else Word32 aux_buffer_res[CLDFB_NO_CHANNELS_MAX]; /* size: num_freq_bands. */ #endif /* estimate direct and diffuse power */ v_mult_fixed( direct_power_factor, reference_power, direct_power, num_freq_bands ); /* Q31 + Q(q_reference_power) - Q31 = Q(q_reference_power) */ Loading @@ -6722,20 +6726,28 @@ static void computeTargetPSDs_direct_fx( { Word16 common1_q = s_min( q_cy_auto_dir_smooth[cur_idx + l], q_reference_power[l] ); Word16 common2_q = s_min( q_cy_cross_dir_smooth[cur_idx + l], q_reference_power[l] ); v_mult_fixed( direct_power, &direct_responses_square[cur_idx + l], aux_buffer_res, 1 ); /* Q31 + Q(q_reference_power) - Q31 = Q(q_reference_power) */ scale_sig32( &aux_buffer_res[l], 1, sub( common1_q, q_reference_power[l] ) ); /* Q(common1_q) */ scale_sig32( &cy_auto_dir_smooth[cur_idx + l], 1, sub( common1_q, q_cy_auto_dir_smooth[cur_idx + l] ) ); /* Q(common1_q) */ v_add_fixed( &cy_auto_dir_smooth[cur_idx + l], &aux_buffer_res[l], &cy_auto_dir_smooth[cur_idx + l], 1, Q1 ); /* Q(common1_q) - Q1 */ v_mult_fixed( direct_power, &direct_responses[cur_idx + l], &aux_buffer_res[l], 1 ); /* Q31 + Q(q_reference_power) - Q31 = Q(q_reference_power) */ scale_sig32( &aux_buffer_res[l], 1, sub( common2_q, q_reference_power[l] ) ); /* Q(common2_q) */ scale_sig32( &cy_cross_dir_smooth[cur_idx + l], 1, sub( common2_q, q_cy_cross_dir_smooth[cur_idx + l] ) ); /* Q(common2_q) */ v_add_fixed( &cy_cross_dir_smooth[cur_idx + l], &aux_buffer_res[l], &cy_cross_dir_smooth[cur_idx + l], 1, Q1 ); /* Q(common2_q) - Q1 */ aux_buffer_res = Mpy_32_32( direct_power[l], direct_responses_square[cur_idx + l] ); /* Q31 + Q(q_reference_power) - Q31 = Q(q_reference_power) */ /* Q adjustment */ q_cy_auto_dir_smooth[cur_idx + l] = sub( common1_q, Q1 ); aux_buffer_res = L_shl( aux_buffer_res, sub( common1_q, q_reference_power[l] ) ); /* Q(common1_q) */ cy_auto_dir_smooth[cur_idx + l] = L_shl( cy_auto_dir_smooth[cur_idx + l], sub( common1_q, q_cy_auto_dir_smooth[cur_idx + l] ) ); /* Q(common1_q) */ cy_auto_dir_smooth[cur_idx + l] = L_add( L_shr(cy_auto_dir_smooth[cur_idx + l],1), L_shr(aux_buffer_res,1) ); /* Q(common1_q) - Q1 */ aux_buffer_res = Mpy_32_32(direct_power[l], direct_responses[cur_idx + l]); /* Q31 + Q(q_reference_power) - Q31 = Q(q_reference_power) */ aux_buffer_res = L_shl( aux_buffer_res, sub( common2_q, q_reference_power[l] ) ); /* Q(common2_q) */ cy_cross_dir_smooth[cur_idx + l] = L_shl( cy_cross_dir_smooth[cur_idx + l], sub( common2_q, q_cy_cross_dir_smooth[cur_idx + l] ) ); /* Q(common2_q) */ cy_cross_dir_smooth[cur_idx + l] = L_add( L_shr(cy_cross_dir_smooth[cur_idx + l],1), L_shr(aux_buffer_res,1) ); /* Q(common2_q) - Q1 */ Word16 q_tmp = norm_l(cy_auto_dir_smooth[cur_idx + l]); cy_auto_dir_smooth[cur_idx + l] = L_shl(cy_auto_dir_smooth[cur_idx + l], q_tmp); q_cy_auto_dir_smooth[cur_idx + l] = add(sub(common1_q, Q1), q_tmp); move16(); q_cy_cross_dir_smooth[cur_idx + l] = sub( common2_q, Q1 ); q_tmp = norm_l(cy_cross_dir_smooth[cur_idx + l]); cy_cross_dir_smooth[cur_idx + l] = L_shl(cy_cross_dir_smooth[cur_idx + l], q_tmp); q_cy_cross_dir_smooth[cur_idx + l] = add(sub( common2_q, Q1 ), q_tmp); move16(); } Loading