Commit 6f010395 authored by Manuel Jander's avatar Manuel Jander
Browse files

Simplify calculation in ivas_map_prior_coeffs_quant as suggested. Activate...

Simplify calculation in ivas_map_prior_coeffs_quant as suggested. Activate macro FIX_2493_CHECK_EXTRACT_L_FIX_INSTRUMENTATION.
parent 90aceb9e
Loading
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -356,22 +356,22 @@ void ivas_map_prior_coeffs_quant(
        {
            FOR( j = 0; j < IVAS_SPAR_MAX_CH - 1; j++ )
            {
                Word32 trial1 = L_mult0( sub( qs.PR.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].pred_index_re[j] ); /*q0*/
                trial1 = L_shl( trial1, 16 );                                                                                /*q16*/
#ifdef FIX_2493_CHECK_EXTRACT_L_FIX_INSTRUMENTATION
                trial1 = Mpy_32_32( trial1, one_by_q_lvl_PR_fx );                                /*q16+q31-31-16->0*/
                pSpar_md_prior->band_coeffs_idx_mapped[i].pred_index_re[j] = round_fx( trial1 ); /*q0*/
                Word16 trial1_16 = imult1616 ( sub( qs.PR.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].pred_index_re[j] ); /*q0*/
                pSpar_md_prior->band_coeffs_idx_mapped[i].pred_index_re[j] = round_fx( Mpy_32_16_1( one_by_q_lvl_PR_fx, trial1_16 ) ); /*q0*/
#else
                Word32 trial1 = L_mult0( sub( qs.PR.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].pred_index_re[j] ); /*q0*/
                trial1 = L_shl( trial1, 16 );                                                                                /*q16*/
                trial1 = round_fx( Mpy_32_32( trial1, one_by_q_lvl_PR_fx ) );                     /*q16+q31-31-16->0*/
                pSpar_md_prior->band_coeffs_idx_mapped[i].pred_index_re[j] = extract_l( trial1 ); /*q0*/
#endif
                move16();
                Word32 trial2 = L_mult0( sub( qs.P_r.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].decd_index_re[j] ); /*q0*/
                trial2 = L_shl( trial2, 16 );                                                                                 /*q16*/
#ifdef FIX_2493_CHECK_EXTRACT_L_FIX_INSTRUMENTATION
                trial2 = Mpy_32_32( trial2, one_by_q_lvl_P_r_fx );                               /*q16+q31-31-16->0*/
                pSpar_md_prior->band_coeffs_idx_mapped[i].decd_index_re[j] = round_fx( trial2 ); /*q0*/
                Word16 trial2_16 = imult1616( sub( qs.P_r.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].decd_index_re[j] ); /*q0*/
                pSpar_md_prior->band_coeffs_idx_mapped[i].decd_index_re[j] = round_fx( Mpy_32_16_1( one_by_q_lvl_P_r_fx, trial2_16 ) ); /*q0*/
#else
                Word32 trial2 = L_mult0( sub( qs.P_r.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].decd_index_re[j] ); /*q0*/
                trial2 = L_shl( trial2, 16 );                                                                                 /*q16*/
                trial2 = round_fx( Mpy_32_32( trial2, one_by_q_lvl_P_r_fx ) );                    /*q16+q31-31-16->0*/
                pSpar_md_prior->band_coeffs_idx_mapped[i].decd_index_re[j] = extract_l( trial2 ); /*q0*/
#endif
@@ -379,12 +379,12 @@ void ivas_map_prior_coeffs_quant(
            }
            FOR( j = 0; j < IVAS_SPAR_MAX_C_COEFF; j++ )
            {
                Word32 trial1 = L_mult0( sub( qs.C.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].drct_index_re[j] ); /*q0*/
                trial1 = L_shl( trial1, 16 );                                                                               /*q16*/
#ifdef FIX_2493_CHECK_EXTRACT_L_FIX_INSTRUMENTATION
                trial1 = Mpy_32_32( trial1, one_by_q_lvl_C_fx );                                 /*q16+q31-31-16->0*/
                pSpar_md_prior->band_coeffs_idx_mapped[i].drct_index_re[j] = round_fx( trial1 ); /*q0*/
                Word16 trial1_16 = imult1616( sub( qs.C.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].drct_index_re[j] ); /*q0*/
                pSpar_md_prior->band_coeffs_idx_mapped[i].drct_index_re[j] = round_fx( Mpy_32_16_1( one_by_q_lvl_C_fx, trial1_16 ) ); /*q0*/
#else
                Word32 trial1 = L_mult0( sub( qs.C.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].drct_index_re[j] ); /*q0*/
                trial1 = L_shl( trial1, 16 );                                                                               /*q16*/
                trial1 = round_fx( Mpy_32_32( trial1, one_by_q_lvl_C_fx ) );                      /*q16+q31-31-16->0*/
                pSpar_md_prior->band_coeffs_idx_mapped[i].drct_index_re[j] = extract_l( trial1 ); /*q0*/
#endif
+1 −0
Original line number Diff line number Diff line
@@ -120,6 +120,7 @@
#define NONBE_FIX_2493_EXTRACT_L_acelp_fast_fx          /* FhG: Fix extract_l overflow inside acelp_fast_fx(). Saturation, not a optimal fix. */
#define NONBE_FIX_2493_EXTRACT_L_swb_tbe_enc_fx         /* FhG: Fix extract_l overflow inside swb_tbe_enc_fx() */
#define NONBE_FIX_2493_EXTRACT_L_bw_detect_fx           /* FhG: Fix extract_l overflow inside bw_detect_fx(). Saturation, not a optimal fix. */
#define FIX_2493_CHECK_EXTRACT_L_FIX_INSTRUMENTATION    /* FhG: Fix instrumentation related to extract_l. */
#define FIX_2585_BIT_ALLOCATION_DIFF                    /* VA : issue 2585, bit allocation different behaviors between float and fixed-point for corner cases */
#define FIX_BASOP_2592_OVERFLOW                         /* FhG: BASOP #2592: fix overflow in GetF0() */
#define FIX_BASOP_2591_EDGE_DETECT_COMP                 /* FhG: BASOP #2591: Wrong comparison in edge_detect_fx() */