Commit 9ed82aa8 authored by Fabian Bauer's avatar Fabian Bauer
Browse files

fix calculation to 64bit

parent 9ffeb1b5
Loading
Loading
Loading
Loading
Loading
+14 −6
Original line number Diff line number Diff line
@@ -1185,6 +1185,10 @@ Word16 cng_energy_fx(
    Word16 hi, lo, enr, tmp16, att;
    const Word16 *pt_res;
    Word32 L_ener, L_tmp;
#ifdef HARMONIZE_2539_cng_energy
    Word64 W_ener = 0;
    move64();
#endif

    maxv = 0;
    move16();
@@ -1206,7 +1210,7 @@ Word16 cng_energy_fx(
            L_tmp = L_mac0_sat( L_tmp, tmp16, tmp16 ); /* 2*(Q_new+scale) */
            pt_res++;
#ifdef HARMONIZE_2539_cng_energy
            L_ener = L_msu( L_ener, L_tmp, L_shr( 0x8000000, 7 ) ); /* 2*(Q_new+scale)+1, divide by L_frame done here */
            W_ener = W_msu0_32_32( W_ener, L_tmp, L_shr( 0x8000000, 7-1 ) ); /* 2*(Q_new+scale)+1, divide by L_frame done here */
#else
            L_ener = L_add( L_ener, L_shr( L_tmp, 7 ) ); /* 2*(Q_new+scale)+1, divide by L_frame done here */
#endif
@@ -1223,14 +1227,14 @@ Word16 cng_energy_fx(
            L_tmp = L_mac0_sat( L_tmp, tmp16, tmp16 ); /* 2*(Q_new+scale) */
            pt_res++;
#ifdef HARMONIZE_2539_cng_energy
            L_ener = L_msu( L_ener, Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), shr( 0x8000, 7 ) ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */
            L_ener = W_msu0_32_32( W_ener, Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), shr( 0x8000, 7-1 ) ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */
#else
            L_ener = L_add( L_ener, L_shr( Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), 7 ) ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */
#endif
        }
    }
#ifdef HARMONIZE_2539_cng_energy
    L_ener = L_negate( L_ener );
    L_ener = W_extract_h( W_neg( W_ener ) );
#endif
    hi = norm_l( L_ener );
    lo = Log2_norm_lc( L_shl( L_ener, hi ) );
@@ -1291,6 +1295,10 @@ Word16 cng_energy_ivas_fx(
    Word16 hi, lo, enr, tmp16, att;
    const Word16 *pt_res;
    Word32 L_ener, L_tmp;
#ifdef HARMONIZE_2539_cng_energy
    Word64 W_ener = 0;
    move64();
#endif

    maxv = 0;
    move16();
@@ -1312,7 +1320,7 @@ Word16 cng_energy_ivas_fx(
            L_tmp = L_mac0( L_tmp, tmp16, tmp16 );   /* 2*(Q_new+scale) + 7 */
            pt_res++;
#ifdef HARMONIZE_2539_cng_energy
            L_ener = L_msu( L_ener, L_tmp, 0x80000000 ); /* 2*(Q_new+scale)+1, divide by L_frame done here */
            W_ener = W_msu0_32_32( W_ener, L_tmp, 0x80000000 ); /* 2*(Q_new+scale)+1, divide by L_frame done here */
#else
            L_ener = L_add( L_ener, L_tmp ); /* 2*(Q_new+scale)+1, divide by L_frame done here */
#endif
@@ -1329,14 +1337,14 @@ Word16 cng_energy_ivas_fx(
            L_tmp = L_mac( L_tmp, tmp16, tmp16 );    /* 2*(Q_new+scale) - 7 */
            pt_res++;
#ifdef HARMONIZE_2539_cng_energy
            L_ener = L_msu( L_ener, Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), 0x8000 ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */
            W_ener = W_msu0_32_32( L_ener, Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), 0x80000000 ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */
#else
            L_ener = L_add( L_ener, Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ) ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */
#endif
        }
    }
#ifdef HARMONIZE_2539_cng_energy
    L_ener = L_negate( L_ener );
    L_ener = L_shl( W_extract_h( W_neg( W_ener ) ), 1 );
#endif
    hi = norm_l( L_ener );
    lo = Log2_norm_lc( L_shl( L_ener, hi ) );