Loading lib_com/edct_fx.c +0 −86 Original line number Diff line number Diff line Loading @@ -177,12 +177,8 @@ void edct_fx( const Word32 *x, /* i : input signal Qq */ Word32 *y, /* o : output transform Qq */ Word16 length, /* i : length Q0*/ #ifdef HARMONIZE_DCT Word16 *q, /* i : Q value of input signal */ const Word16 element_mode /* i : element mode */ #else Word16 *q /* i : Q value of input signal */ #endif ) { Word16 i; Loading @@ -208,17 +204,14 @@ void edct_fx( move32(); } #ifdef HARMONIZE_DCT IF( element_mode == EVS_MONO ) { #endif *q = sub( 15, *q ); move16(); BASOP_cfft( spec, len1, q, y ); tmp = div_s( 1, length ); /*Q15 */ tmp = round_fx( L_shl( L_mult( tmp, 19302 /*0.75f * EVS_PI in Q13*/ ), 2 ) ); /*Q15 */ #ifdef HARMONIZE_DCT } ELSE { Loading @@ -234,7 +227,6 @@ void edct_fx( tmp = div_s( 4, length ); /*Q17 */ tmp = round_fx( L_mult( tmp, 19302 /*0.75f * EVS_PI in Q13*/ ) ); /*Q15 */ } #endif FOR( i = 0; i < len1; i++ ) { Loading @@ -248,81 +240,15 @@ void edct_fx( *q = sub( 15 + 2, *q ); move16(); #ifdef HARMONIZE_DCT IF( element_mode != EVS_MONO ) { *q = add( *q, Q16 ); move16(); } #endif return; } #ifndef HARMONIZE_DCT void edct_ivas_fx( const Word32 *x, /* i : input signal Qq */ Word32 *y, /* o : output transform Qq */ Word16 length, /* i : length Q0*/ Word16 *q /* i : Q value of input signal */ ) { Word16 i; const Word16 *edct_table; /*Q16 */ Word32 re[L_FRAME_PLUS / 2]; Word32 im[L_FRAME_PLUS / 2]; Word32 L_tmp; Word16 tmp; Word16 len1; edct_table = get_edct_table( length, q ); /*q*/ len1 = shr( length, 1 ); /*Q0*/ /* Twiddling and Pre-rotate */ FOR( i = 0; i < len1; i++ ) { L_tmp = Mult_32_16( x[2 * i], edct_table[i] ); /*Q(q+1) */ re[i] = Madd_32_16( L_tmp, x[( length - ( 1 + ( i * 2 ) ) )], edct_table[( len1 - ( 1 + i ) )] ); /*Q(q+1) */ move32(); L_tmp = Mult_32_16( x[( length - ( 1 + ( i * 2 ) ) )], edct_table[i] ); /*Q(q+1) */ im[i] = Msub_32_16( L_tmp, x[( i * 2 )], edct_table[( len1 - ( 1 + i ) )] ); /*Q(q+1) */ move32(); } *q = sub( 31, *q ); move16(); tmp = sub( s_min( getScaleFactor32( re, len1 ), getScaleFactor32( im, len1 ) ), find_guarded_bits_fx( len1 ) ); scale_sig32( re, len1, tmp ); scale_sig32( im, len1, tmp ); fft_fx( re, im, len1, 1 ); *q = sub( *q, tmp ); move16(); tmp = div_s( 4, length ); /*Q17 */ tmp = round_fx( L_mult( tmp, 19302 /*0.75f * EVS_PI in Q13*/ ) ); /*Q15 */ FOR( i = 0; i < len1; i++ ) { L_tmp = Msub_32_16( re[i], im[i], tmp ); im[i] = Madd_32_16( im[i], re[i], tmp ); /*Q(q+1) */ re[i] = L_tmp; /*Q(q+1) */ move32(); move32(); } FOR( i = 0; i < len1; i++ ) { y[2 * i] = L_add( Mult_32_16( re[i], edct_table[i] ), Mult_32_16( im[i], edct_table[( len1 - ( 1 + i ) )] ) ); /*Q(q+2)*/ move32(); y[( length - ( 1 + ( i * 2 ) ) )] = L_sub( Mult_32_16( re[i], edct_table[( len1 - ( 1 + i ) )] ), Mult_32_16( im[i], edct_table[i] ) ); /*Q(q+2)*/ move32(); } /*Q(q-2) */ *q = sub( 31 + 2, *q ); move16(); return; } #endif /*-------------------------------------------------------------------------* * FUNCTION : edst_fx() Loading Loading @@ -414,10 +340,6 @@ void edct_16fx( Word16 *y, /* o : output transform Qx */ Word16 length, /* i : length */ Word16 bh /* bit-headroom */ #ifndef HARMONIZE_DCT , const Word16 element_mode #endif ) { Word16 i; Loading @@ -430,10 +352,6 @@ void edct_16fx( Word16 Len2, i2; const Word16 *px, *pt; Word16 *py; #ifndef HARMONIZE_DCT (void) element_mode; /*COMPLETE: some eDCT sub function are missing */ #endif IF( EQ_16( length, L_FRAME32k ) ) { Loading Loading @@ -580,11 +498,7 @@ void iedct_short_fx( seg_len_div4 = shr( segment_length, 2 ); /*Q0*/ seg_len_3mul_div4 = add( seg_len_div2, seg_len_div4 ); #ifdef HARMONIZE_DCT edct_fx( in, alias, seg_len_div2, Q, EVS_MONO ); #else edct_fx( in, alias, seg_len_div2, Q ); #endif FOR( i = 0; i < seg_len_div2; i++ ) { IF( alias[i] != 0 ) Loading lib_com/fft_fx.c +0 −402 Original line number Diff line number Diff line Loading @@ -109,13 +109,6 @@ static void fft5_8( Word16 n1, Word32 *zRe, Word32 *zIm, const Word16 *Idx ); static void fft4_5( Word32 *x, Word32 *y, const Word16 *Idx ); static void fft5_4( Word16 n1, Word32 *zRe, Word32 *zIm, const Word16 *Idx ); #ifndef HARMONIZE_DCT void DoRTFTn_fx_ivas( Word32 *x, /* i/o: real part of input and output data */ Word32 *y, /* i/o: imaginary part of input and output data */ const Word16 n /* i : size of the FFT n=(2^k) up to 1024 */ ); #endif /*-----------------------------------------------------------------* * fft15_shift2() * 15-point FFT with 2-point circular shift Loading Loading @@ -2440,303 +2433,6 @@ static void cftmdl( return; } #ifndef HARMONIZE_DCT static void cftbsub( Word16 n, // Q0 Word32 *a, // Qx const Word16 *w /* i : cos/sin table Q15 */ ) { Word16 j, j1, j2, j3, l; Word32 x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; l = 2; move16(); IF( GT_16( n, 8 ) ) { cft1st( n, a, w ); l = 8; move16(); WHILE( ( ( l << 2 ) < n ) ) { cftmdl( n, l, a, w ); l = shl( l, 2 ); } } IF( EQ_16( shl( l, 2 ), n ) ) { FOR( j = 0; j < l; j += 2 ) { j1 = add( j, l ); j2 = add( j1, l ); j3 = add( j2, l ); x0r = L_add( a[j], a[j1] ); // Qx x0i = L_negate( L_add( a[j + 1], a[j1 + 1] ) ); // Qx x1r = L_sub( a[j], a[j1] ); // Qx x1i = L_sub( a[j1 + 1], a[j + 1] ); // Qx x2r = L_add( a[j2], a[j3] ); // Qx x2i = L_add( a[j2 + 1], a[j3 + 1] ); // Qx x3r = L_sub( a[j2], a[j3] ); // Qx x3i = L_sub( a[j2 + 1], a[j3 + 1] ); // Qx a[j] = L_add( x0r, x2r ); move32(); a[j + 1] = L_sub( x0i, x2i ); move32(); a[j2] = L_sub( x0r, x2r ); move32(); a[j2 + 1] = L_add( x0i, x2i ); move32(); a[j1] = L_sub( x1r, x3i ); move32(); a[j1 + 1] = L_sub( x1i, x3r ); move32(); a[j3] = L_add( x1r, x3i ); move32(); a[j3 + 1] = L_add( x1i, x3r ); move32(); } } ELSE { FOR( j = 0; j < l; j += 2 ) { j1 = add( j, l ); x0r = L_sub( a[j], a[j1] ); x0i = L_sub( a[j1 + 1], a[j + 1] ); a[j] = L_add( a[j], a[j1] ); move32(); a[j + 1] = L_negate( L_add( a[j + 1], a[j1 + 1] ) ); move32(); a[j1] = x0r; move32(); a[j1 + 1] = x0i; move32(); } } return; } static void rftfsub( Word16 n, // Q0 Word32 *a, // Qx Word16 nc, // Q0 const Word16 *c // Q15 ) { Word16 j, k, kk, ks, m; Word16 wkr, wki; Word32 xr, xi, yr, yi; m = shr( n, 1 ); ks = idiv1616( shl( nc, 1 ), m ); kk = 0; move16(); FOR( j = 2; j < m; j += 2 ) { k = sub( n, j ); kk = add( kk, ks ); wkr = sub( extract_l( 0x4000 ) /*0.5.Q15*/, c[( nc - kk )] ); wki = c[kk]; // Q15 move16(); xr = L_sub( a[j], a[k] ); xi = L_add( a[j + 1], a[k + 1] ); yr = L_sub( Mpy_32_16_1( xr, wkr ), Mpy_32_16_1( xi, wki ) ); yi = L_add( Mpy_32_16_1( xi, wkr ), Mpy_32_16_1( xr, wki ) ); a[j] = L_sub( a[j], yr ); move32(); a[j + 1] = L_sub( a[j + 1], yi ); move32(); a[k] = L_add( a[k], yr ); move32(); a[k + 1] = L_sub( a[k + 1], yi ); move32(); } return; } static void rftbsub( Word16 n, // Q0 Word32 *a, // Qx Word16 nc, // Q0 const Word16 *c // Q15 ) { Word16 j, k, kk, ks, m; Word16 wkr, wki; Word32 xr, xi, yr, yi; a[1] = L_negate( a[1] ); move32(); m = shr( n, 1 ); ks = idiv1616( shl( nc, 1 ), m ); kk = 0; move16(); FOR( j = 2; j < m; j += 2 ) { k = sub( n, j ); kk = add( kk, ks ); wkr = sub( extract_l( 0x4000 ) /*0.5.Q15*/, c[( nc - kk )] ); wki = c[kk]; // Q15 xr = L_sub( a[j], a[k] ); xi = L_add( a[j + 1], a[k + 1] ); yr = L_add( Mpy_32_16_1( xr, wkr ), Mpy_32_16_1( xi, wki ) ); // Qx yi = L_sub( Mpy_32_16_1( xi, wkr ), Mpy_32_16_1( xr, wki ) ); // Qx a[j] = L_sub( a[j], yr ); move32(); a[j + 1] = L_sub( yi, a[j + 1] ); move32(); a[k] = L_add( a[k], yr ); move32(); a[k + 1] = L_sub( yi, a[k + 1] ); move32(); } a[m + 1] = L_negate( a[m + 1] ); return; } static void dctsub( Word16 n, // Q0 Word32 *a, // Qx Word16 nc, // Q0 const Word16 *c // Q15 ) { Word16 j, k, kk, ks, m; Word16 wkr, wki; Word32 xr; m = shr( n, 1 ); ks = idiv1616( nc, n ); kk = 0; move16(); FOR( j = 1; j < m; j++ ) { k = sub( n, j ); kk = add( kk, ks ); wkr = sub( c[kk], c[( nc - kk )] ); // Q15 wki = add( c[kk], c[( nc - kk )] ); // Q15 xr = L_sub( Mpy_32_16_1( a[j], wki ), Mpy_32_16_1( a[k], wkr ) ); // Qx a[j] = L_add( Mpy_32_16_1( a[j], wkr ), Mpy_32_16_1( a[k], wki ) ); // Qx move32(); a[k] = xr; move32(); } a[m] = Mpy_32_16_1( a[m], c[0] ); // Qx move32(); return; } /*-----------------------------------------------------------------* * edct2_fx_ivas() * * Transformation of the signal to DCT domain * OR Inverse EDCT-II for short frames *-----------------------------------------------------------------*/ void edct2_fx_ivas( const Word16 n, // Q0 const Word16 isgn, Word32 *in, // Qx Word32 *a, // Qx const Word16 *ip, const Word16 *w // Q15 ) { Word16 j, nw, nc; Word32 xr; Copy32( in, a, n ); nw = ip[0]; move16(); IF( GT_16( n, shl( nw, 2 ) ) ) { nw = shr( n, 2 ); } nc = ip[1]; move16(); if ( GT_16( n, nc ) ) { nc = n; move16(); } IF( isgn < 0 ) { xr = a[n - 1]; move16(); FOR( j = n - 2; j >= 2; j -= 2 ) { a[j + 1] = L_sub( a[j], a[j - 1] ); move32(); a[j] = L_add( a[j], a[j - 1] ); move32(); } a[1] = L_sub( a[0], xr ); move32(); a[0] = L_add( a[0], xr ); move32(); IF( GT_16( n, 4 ) ) { rftbsub( n, a, nc, w + nw ); bitrv2_SR( n, ip + 2, a ); cftbsub( n, a, w ); } ELSE IF( EQ_16( n, 4 ) ) { cftfsub( n, a, w ); } } IF( isgn >= 0 ) { a[0] = L_shr( a[0], 1 ); move32(); } dctsub( n, a, nc, w + nw ); IF( isgn >= 0 ) { IF( GT_16( n, 4 ) ) { bitrv2_SR( n, ip + 2, a ); cftfsub( n, a, w ); rftfsub( n, a, nc, w + nw ); } ELSE IF( EQ_16( n, 4 ) ) { cftfsub( n, a, w ); } xr = L_sub( a[0], a[1] ); a[0] = L_add( a[0], a[1] ); move32(); FOR( j = 2; j < n; j += 2 ) { a[j - 1] = L_sub( a[j], a[j + 1] ); move32(); a[j] = L_add( a[j], a[j + 1] ); move32(); } a[n - 1] = xr; move32(); FOR( j = 0; j < n; j++ ) { a[j] = L_shr( a[j], 5 ); move32(); } } } #endif void DoRTFTn_fx_ivas( Word32 *x, /* i/o: real part of input and output data Qx */ Loading Loading @@ -6430,93 +6126,6 @@ static void fft_lenN( * Complex-value FFT *-----------------------------------------------------------------*/ #ifndef HARMONIZE_DCT void fft_fx( Word32 *re, /* i/o: real part Qx */ Word32 *im, /* i/o: imag part Qx */ const Word16 length, /* i : length of fft */ const Word16 s /* i : sign */ ) { cmplx x[960]; FOR( Word16 j = 0; j < length; j++ ) { x[j].re = re[( s * j )]; move32(); x[j].im = im[( s * j )]; move32(); } SWITCH( length ) { case 20: fft_len20_fx( x ); BREAK; case 40: fft_lenN( x, FFT_RotVector_640_fx, 640, 5, 8, 8, 40 ); BREAK; case 64: fft_lenN( x, FFT_RotVector_256_fx, 256, 8, 8, 8, 64 ); BREAK; case 80: fft_lenN( x, FFT_RotVector_640_fx, 640, 10, 8, 4, 40 ); BREAK; case 100: fft_lenN( x, FFT_RotVector_400_fx, 400, 10, 10, 4, 40 ); BREAK; case 120: fft_lenN( x, FFT_RotVector_960_fx, 960, 15, 8, 4, 60 ); BREAK; case 128: fft_lenN( x, FFT_RotVector_256_fx, 256, 16, 8, 4, 64 ); BREAK; case 160: fft_lenN( x, FFT_RotVector_640_fx, 640, 20, 8, 2, 40 ); BREAK; case 200: fft_lenN( x, FFT_RotVector_400_fx, 400, 20, 10, 2, 40 ); BREAK; case 240: fft_lenN( x, FFT_RotVector_960_fx, 960, 30, 8, 2, 60 ); BREAK; case 256: fft_lenN( x, FFT_RotVector_256_fx, 256, 32, 8, 2, 64 ); BREAK; case 320: fft_lenN( x, FFT_RotVector_640_fx, 640, 20, 16, 2, 40 ); BREAK; case 400: fft_lenN( x, FFT_RotVector_400_fx, 400, 20, 20, 2, 40 ); BREAK; case 480: fft_lenN( x, FFT_RotVector_960_fx, 960, 30, 16, 2, 60 ); BREAK; case 600: fft_lenN( x, FFT_RotVector_600_fx, 600, 30, 20, 2, 60 ); BREAK; case 640: fft_lenN( x, FFT_RotVector_640_fx, 640, 20, 32, 2, 40 ); BREAK; case 960: fft_lenN( x, FFT_RotVector_960_fx, 960, 30, 32, 2, 60 ); BREAK; default: assert( !"fft length is not supported!" ); } FOR( Word16 j = 0; j < length; j++ ) { re[( s * j )] = x[j].re; move32(); im[( s * j )] = x[j].im; move32(); } return; } #else void fft_fx( cmplx *x, /* i/o: complex data */ const Word16 length /* i : length of fft */ Loading Loading @@ -6581,7 +6190,6 @@ void fft_fx( return; } #endif void rfft_fx( Loading @@ -6594,9 +6202,7 @@ void rfft_fx( Word16 i, sizeOfFft2, sizeOfFft4; Word32 tmp, t1, t2, t3, t4; Word16 s1, s2; #ifdef HARMONIZE_DCT cmplx spec[L_FRAME48k]; #endif sizeOfFft2 = shr( length, 1 ); sizeOfFft4 = shr( length, 2 ); Loading Loading @@ -6669,7 +6275,6 @@ void rfft_fx( { case -1: #ifdef HARMONIZE_DCT FOR( i = 0; i < sizeOfFft2; i++ ) { spec[i].re = x[2 * i]; Loading Loading @@ -6700,9 +6305,6 @@ void rfft_fx( x[2 * i + 1] = spec[i].im; move32(); } #else fft_fx( x, x + 1, sizeOfFft2, 2 ); #endif // Qx tmp = L_add( x[0], x[1] ); Loading Loading @@ -6759,7 +6361,6 @@ void rfft_fx( move32(); } #ifdef HARMONIZE_DCT FOR( i = 0; i < sizeOfFft2; i++ ) { spec[i].re = x[2 * i]; Loading @@ -6777,9 +6378,6 @@ void rfft_fx( x[2 * i + 1] = spec[i].im; move32(); } #else fft_fx( x, x + 1, sizeOfFft2, 2 ); #endif FOR( i = 0; i < length; i += 2 ) { Loading lib_com/gs_inact_switching_fx.c +0 −12 Original line number Diff line number Diff line Loading @@ -89,11 +89,7 @@ void Inac_switch_ematch_fx( ELSE IF( EQ_16( coder_type, VOICED ) || EQ_16( coder_type, GENERIC ) || EQ_16( coder_type, TRANSITION ) || ( last_core != ACELP_CORE ) || NE_16( last_codec_mode, MODE1 ) || ( ( element_mode > EVS_MONO ) && EQ_16( coder_type, UNVOICED ) ) ) { /* Find spectrum and energy per band for GC and VC frames */ #ifdef HARMONIZE_DCT edct_16fx( exc2, dct_exc_tmp, L_frame, 5 ); #else edct_16fx( exc2, dct_exc_tmp, L_frame, 5, element_mode ); #endif Ener_per_band_comp_fx( dct_exc_tmp, Ener_per_bd, Q_exc, MBANDS_GN, 1, L_frame ); Loading @@ -107,11 +103,7 @@ void Inac_switch_ematch_fx( ELSE IF( ( coder_type == INACTIVE ) && inactive_coder_type_flag ) { /* Find spectrum and energy per band for inactive frames */ #ifdef HARMONIZE_DCT edct_16fx( exc2, dct_exc_tmp, L_frame, 5 ); #else edct_16fx( exc2, dct_exc_tmp, L_frame, 5, element_mode ); #endif Ener_per_band_comp_fx( dct_exc_tmp, Ener_per_bd, Q_exc, MBANDS_GN, 1, L_frame ); Loading Loading @@ -196,11 +188,7 @@ void Inac_switch_ematch_fx( Scale_sig( dct_exc_tmp, 240, 1 ); // Q_exc Scale_sig( exc2, 240, 1 ); // Q_exc } #ifdef HARMONIZE_DCT edct_16fx( dct_exc_tmp, exc2, L_frame, 5 ); #else edct_16fx( dct_exc_tmp, exc2, L_frame, 5, element_mode ); #endif } return; Loading lib_com/ivas_mdft_imdft_fx.c +0 −39 Original line number Diff line number Diff line Loading @@ -214,7 +214,6 @@ static void ivas_ifft_cplx1_fx( move32(); } #ifdef HARMONIZE_DCT cmplx x[L_FRAME48k]; FOR( i = 0; i < length; i++ ) Loading @@ -234,9 +233,6 @@ static void ivas_ifft_cplx1_fx( im[i] = x[i].im; move32(); } #else fft_fx( re, im, length, 1 ); #endif return; } Loading @@ -255,12 +251,7 @@ void ivas_mdft_fx( const Word16 mdft_length /* i : MDFT length */ ) { #ifdef HARMONIZE_DCT cmplx spec[L_FRAME48k]; #else Word32 re[L_FRAME48k]; Word32 im[L_FRAME48k]; #endif Word16 j, len_by_2; const Word32 *pTwid; // Q31 len_by_2 = shr( mdft_length, 1 ); Loading @@ -270,38 +261,23 @@ void ivas_mdft_fx( { FOR( j = 0; j < mdft_length; j++ ) { #ifdef HARMONIZE_DCT spec[j].re = Mpy_32_32( pIn[j], pTwid[j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); spec[j].im = Mpy_32_32( L_negate( pIn[j] ), pTwid[mdft_length - j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); #else re[j] = Mpy_32_32( pIn[j], pTwid[j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); im[j] = Mpy_32_32( L_negate( pIn[j] ), pTwid[mdft_length - j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); #endif } } ELSE { FOR( j = 0; j < mdft_length; j++ ) { #ifdef HARMONIZE_DCT spec[j].re = Msub_32_32( Mpy_32_32( pIn[j], pTwid[j] ), pIn[add( mdft_length, j )], pTwid[mdft_length - j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); spec[j].im = Msub_32_32( Mpy_32_32( L_negate( pIn[j] ), pTwid[mdft_length - j] ), pIn[mdft_length + j], pTwid[j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); #else re[j] = Msub_32_32( Mpy_32_32( pIn[j], pTwid[j] ), pIn[add( mdft_length, j )], pTwid[mdft_length - j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); im[j] = Msub_32_32( Mpy_32_32( L_negate( pIn[j] ), pTwid[mdft_length - j] ), pIn[mdft_length + j], pTwid[j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); #endif } } #ifdef HARMONIZE_DCT fft_fx( spec, mdft_length ); FOR( j = 0; j < len_by_2; j++ ) Loading @@ -316,21 +292,6 @@ void ivas_mdft_fx( pOut_im[2 * j + 1] = L_negate( spec[mdft_length - j - 1].im ); move32(); } #else fft_fx( re, im, mdft_length, 1 ); FOR( j = 0; j < len_by_2; j++ ) { pOut_re[2 * j] = re[j]; // Qin move32(); pOut_re[2 * j + 1] = re[mdft_length - j - 1]; // Qin move32(); pOut_im[2 * j] = im[j]; // Qin move32(); pOut_im[2 * j + 1] = L_negate( im[mdft_length - j - 1] ); // Qin move32(); } #endif return; } Loading lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -92,7 +92,6 @@ #define NONBE_FIX_ISSUE_2206_AVOID_OVERFLOW_MSVQ_Interpol_Tran_fx /* FhG: Fix saturation crash in MSVQ_Interpol_Tran_fx() */ #define FIX_2452_HQ_CORE_PEAQ_AVR_RATIO_HARM /* Eri: Basop issue 2453: Fix alignment of peak_avrg_ratio_fx */ #define FIX_FLOAT_1539_G192_FORMAT_SWITCH /* VA/Nokia: reintroduce format switching for g192 bitstreams */ #define HARMONIZE_DCT /* VA: removal of duplicated DCT functions */ #define FIX_2489_HARMONIZE_FdCng_encodeSID /* FhG: harmonize FdCng_encodeSID_fx() and FdCng_encodeSID_ivas_fx() */ #define FIX_1527_CMR_BITRATE_IDX /* Fix for incorrect bitrate idx packed in rtp CMR E-byte */ #define HARMONIZE_2494_FdCng_decodeSID_fx /* FhG: harmonize FdCng_decodeSID_fx with _ivas_ version */ Loading Loading
lib_com/edct_fx.c +0 −86 Original line number Diff line number Diff line Loading @@ -177,12 +177,8 @@ void edct_fx( const Word32 *x, /* i : input signal Qq */ Word32 *y, /* o : output transform Qq */ Word16 length, /* i : length Q0*/ #ifdef HARMONIZE_DCT Word16 *q, /* i : Q value of input signal */ const Word16 element_mode /* i : element mode */ #else Word16 *q /* i : Q value of input signal */ #endif ) { Word16 i; Loading @@ -208,17 +204,14 @@ void edct_fx( move32(); } #ifdef HARMONIZE_DCT IF( element_mode == EVS_MONO ) { #endif *q = sub( 15, *q ); move16(); BASOP_cfft( spec, len1, q, y ); tmp = div_s( 1, length ); /*Q15 */ tmp = round_fx( L_shl( L_mult( tmp, 19302 /*0.75f * EVS_PI in Q13*/ ), 2 ) ); /*Q15 */ #ifdef HARMONIZE_DCT } ELSE { Loading @@ -234,7 +227,6 @@ void edct_fx( tmp = div_s( 4, length ); /*Q17 */ tmp = round_fx( L_mult( tmp, 19302 /*0.75f * EVS_PI in Q13*/ ) ); /*Q15 */ } #endif FOR( i = 0; i < len1; i++ ) { Loading @@ -248,81 +240,15 @@ void edct_fx( *q = sub( 15 + 2, *q ); move16(); #ifdef HARMONIZE_DCT IF( element_mode != EVS_MONO ) { *q = add( *q, Q16 ); move16(); } #endif return; } #ifndef HARMONIZE_DCT void edct_ivas_fx( const Word32 *x, /* i : input signal Qq */ Word32 *y, /* o : output transform Qq */ Word16 length, /* i : length Q0*/ Word16 *q /* i : Q value of input signal */ ) { Word16 i; const Word16 *edct_table; /*Q16 */ Word32 re[L_FRAME_PLUS / 2]; Word32 im[L_FRAME_PLUS / 2]; Word32 L_tmp; Word16 tmp; Word16 len1; edct_table = get_edct_table( length, q ); /*q*/ len1 = shr( length, 1 ); /*Q0*/ /* Twiddling and Pre-rotate */ FOR( i = 0; i < len1; i++ ) { L_tmp = Mult_32_16( x[2 * i], edct_table[i] ); /*Q(q+1) */ re[i] = Madd_32_16( L_tmp, x[( length - ( 1 + ( i * 2 ) ) )], edct_table[( len1 - ( 1 + i ) )] ); /*Q(q+1) */ move32(); L_tmp = Mult_32_16( x[( length - ( 1 + ( i * 2 ) ) )], edct_table[i] ); /*Q(q+1) */ im[i] = Msub_32_16( L_tmp, x[( i * 2 )], edct_table[( len1 - ( 1 + i ) )] ); /*Q(q+1) */ move32(); } *q = sub( 31, *q ); move16(); tmp = sub( s_min( getScaleFactor32( re, len1 ), getScaleFactor32( im, len1 ) ), find_guarded_bits_fx( len1 ) ); scale_sig32( re, len1, tmp ); scale_sig32( im, len1, tmp ); fft_fx( re, im, len1, 1 ); *q = sub( *q, tmp ); move16(); tmp = div_s( 4, length ); /*Q17 */ tmp = round_fx( L_mult( tmp, 19302 /*0.75f * EVS_PI in Q13*/ ) ); /*Q15 */ FOR( i = 0; i < len1; i++ ) { L_tmp = Msub_32_16( re[i], im[i], tmp ); im[i] = Madd_32_16( im[i], re[i], tmp ); /*Q(q+1) */ re[i] = L_tmp; /*Q(q+1) */ move32(); move32(); } FOR( i = 0; i < len1; i++ ) { y[2 * i] = L_add( Mult_32_16( re[i], edct_table[i] ), Mult_32_16( im[i], edct_table[( len1 - ( 1 + i ) )] ) ); /*Q(q+2)*/ move32(); y[( length - ( 1 + ( i * 2 ) ) )] = L_sub( Mult_32_16( re[i], edct_table[( len1 - ( 1 + i ) )] ), Mult_32_16( im[i], edct_table[i] ) ); /*Q(q+2)*/ move32(); } /*Q(q-2) */ *q = sub( 31 + 2, *q ); move16(); return; } #endif /*-------------------------------------------------------------------------* * FUNCTION : edst_fx() Loading Loading @@ -414,10 +340,6 @@ void edct_16fx( Word16 *y, /* o : output transform Qx */ Word16 length, /* i : length */ Word16 bh /* bit-headroom */ #ifndef HARMONIZE_DCT , const Word16 element_mode #endif ) { Word16 i; Loading @@ -430,10 +352,6 @@ void edct_16fx( Word16 Len2, i2; const Word16 *px, *pt; Word16 *py; #ifndef HARMONIZE_DCT (void) element_mode; /*COMPLETE: some eDCT sub function are missing */ #endif IF( EQ_16( length, L_FRAME32k ) ) { Loading Loading @@ -580,11 +498,7 @@ void iedct_short_fx( seg_len_div4 = shr( segment_length, 2 ); /*Q0*/ seg_len_3mul_div4 = add( seg_len_div2, seg_len_div4 ); #ifdef HARMONIZE_DCT edct_fx( in, alias, seg_len_div2, Q, EVS_MONO ); #else edct_fx( in, alias, seg_len_div2, Q ); #endif FOR( i = 0; i < seg_len_div2; i++ ) { IF( alias[i] != 0 ) Loading
lib_com/fft_fx.c +0 −402 Original line number Diff line number Diff line Loading @@ -109,13 +109,6 @@ static void fft5_8( Word16 n1, Word32 *zRe, Word32 *zIm, const Word16 *Idx ); static void fft4_5( Word32 *x, Word32 *y, const Word16 *Idx ); static void fft5_4( Word16 n1, Word32 *zRe, Word32 *zIm, const Word16 *Idx ); #ifndef HARMONIZE_DCT void DoRTFTn_fx_ivas( Word32 *x, /* i/o: real part of input and output data */ Word32 *y, /* i/o: imaginary part of input and output data */ const Word16 n /* i : size of the FFT n=(2^k) up to 1024 */ ); #endif /*-----------------------------------------------------------------* * fft15_shift2() * 15-point FFT with 2-point circular shift Loading Loading @@ -2440,303 +2433,6 @@ static void cftmdl( return; } #ifndef HARMONIZE_DCT static void cftbsub( Word16 n, // Q0 Word32 *a, // Qx const Word16 *w /* i : cos/sin table Q15 */ ) { Word16 j, j1, j2, j3, l; Word32 x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; l = 2; move16(); IF( GT_16( n, 8 ) ) { cft1st( n, a, w ); l = 8; move16(); WHILE( ( ( l << 2 ) < n ) ) { cftmdl( n, l, a, w ); l = shl( l, 2 ); } } IF( EQ_16( shl( l, 2 ), n ) ) { FOR( j = 0; j < l; j += 2 ) { j1 = add( j, l ); j2 = add( j1, l ); j3 = add( j2, l ); x0r = L_add( a[j], a[j1] ); // Qx x0i = L_negate( L_add( a[j + 1], a[j1 + 1] ) ); // Qx x1r = L_sub( a[j], a[j1] ); // Qx x1i = L_sub( a[j1 + 1], a[j + 1] ); // Qx x2r = L_add( a[j2], a[j3] ); // Qx x2i = L_add( a[j2 + 1], a[j3 + 1] ); // Qx x3r = L_sub( a[j2], a[j3] ); // Qx x3i = L_sub( a[j2 + 1], a[j3 + 1] ); // Qx a[j] = L_add( x0r, x2r ); move32(); a[j + 1] = L_sub( x0i, x2i ); move32(); a[j2] = L_sub( x0r, x2r ); move32(); a[j2 + 1] = L_add( x0i, x2i ); move32(); a[j1] = L_sub( x1r, x3i ); move32(); a[j1 + 1] = L_sub( x1i, x3r ); move32(); a[j3] = L_add( x1r, x3i ); move32(); a[j3 + 1] = L_add( x1i, x3r ); move32(); } } ELSE { FOR( j = 0; j < l; j += 2 ) { j1 = add( j, l ); x0r = L_sub( a[j], a[j1] ); x0i = L_sub( a[j1 + 1], a[j + 1] ); a[j] = L_add( a[j], a[j1] ); move32(); a[j + 1] = L_negate( L_add( a[j + 1], a[j1 + 1] ) ); move32(); a[j1] = x0r; move32(); a[j1 + 1] = x0i; move32(); } } return; } static void rftfsub( Word16 n, // Q0 Word32 *a, // Qx Word16 nc, // Q0 const Word16 *c // Q15 ) { Word16 j, k, kk, ks, m; Word16 wkr, wki; Word32 xr, xi, yr, yi; m = shr( n, 1 ); ks = idiv1616( shl( nc, 1 ), m ); kk = 0; move16(); FOR( j = 2; j < m; j += 2 ) { k = sub( n, j ); kk = add( kk, ks ); wkr = sub( extract_l( 0x4000 ) /*0.5.Q15*/, c[( nc - kk )] ); wki = c[kk]; // Q15 move16(); xr = L_sub( a[j], a[k] ); xi = L_add( a[j + 1], a[k + 1] ); yr = L_sub( Mpy_32_16_1( xr, wkr ), Mpy_32_16_1( xi, wki ) ); yi = L_add( Mpy_32_16_1( xi, wkr ), Mpy_32_16_1( xr, wki ) ); a[j] = L_sub( a[j], yr ); move32(); a[j + 1] = L_sub( a[j + 1], yi ); move32(); a[k] = L_add( a[k], yr ); move32(); a[k + 1] = L_sub( a[k + 1], yi ); move32(); } return; } static void rftbsub( Word16 n, // Q0 Word32 *a, // Qx Word16 nc, // Q0 const Word16 *c // Q15 ) { Word16 j, k, kk, ks, m; Word16 wkr, wki; Word32 xr, xi, yr, yi; a[1] = L_negate( a[1] ); move32(); m = shr( n, 1 ); ks = idiv1616( shl( nc, 1 ), m ); kk = 0; move16(); FOR( j = 2; j < m; j += 2 ) { k = sub( n, j ); kk = add( kk, ks ); wkr = sub( extract_l( 0x4000 ) /*0.5.Q15*/, c[( nc - kk )] ); wki = c[kk]; // Q15 xr = L_sub( a[j], a[k] ); xi = L_add( a[j + 1], a[k + 1] ); yr = L_add( Mpy_32_16_1( xr, wkr ), Mpy_32_16_1( xi, wki ) ); // Qx yi = L_sub( Mpy_32_16_1( xi, wkr ), Mpy_32_16_1( xr, wki ) ); // Qx a[j] = L_sub( a[j], yr ); move32(); a[j + 1] = L_sub( yi, a[j + 1] ); move32(); a[k] = L_add( a[k], yr ); move32(); a[k + 1] = L_sub( yi, a[k + 1] ); move32(); } a[m + 1] = L_negate( a[m + 1] ); return; } static void dctsub( Word16 n, // Q0 Word32 *a, // Qx Word16 nc, // Q0 const Word16 *c // Q15 ) { Word16 j, k, kk, ks, m; Word16 wkr, wki; Word32 xr; m = shr( n, 1 ); ks = idiv1616( nc, n ); kk = 0; move16(); FOR( j = 1; j < m; j++ ) { k = sub( n, j ); kk = add( kk, ks ); wkr = sub( c[kk], c[( nc - kk )] ); // Q15 wki = add( c[kk], c[( nc - kk )] ); // Q15 xr = L_sub( Mpy_32_16_1( a[j], wki ), Mpy_32_16_1( a[k], wkr ) ); // Qx a[j] = L_add( Mpy_32_16_1( a[j], wkr ), Mpy_32_16_1( a[k], wki ) ); // Qx move32(); a[k] = xr; move32(); } a[m] = Mpy_32_16_1( a[m], c[0] ); // Qx move32(); return; } /*-----------------------------------------------------------------* * edct2_fx_ivas() * * Transformation of the signal to DCT domain * OR Inverse EDCT-II for short frames *-----------------------------------------------------------------*/ void edct2_fx_ivas( const Word16 n, // Q0 const Word16 isgn, Word32 *in, // Qx Word32 *a, // Qx const Word16 *ip, const Word16 *w // Q15 ) { Word16 j, nw, nc; Word32 xr; Copy32( in, a, n ); nw = ip[0]; move16(); IF( GT_16( n, shl( nw, 2 ) ) ) { nw = shr( n, 2 ); } nc = ip[1]; move16(); if ( GT_16( n, nc ) ) { nc = n; move16(); } IF( isgn < 0 ) { xr = a[n - 1]; move16(); FOR( j = n - 2; j >= 2; j -= 2 ) { a[j + 1] = L_sub( a[j], a[j - 1] ); move32(); a[j] = L_add( a[j], a[j - 1] ); move32(); } a[1] = L_sub( a[0], xr ); move32(); a[0] = L_add( a[0], xr ); move32(); IF( GT_16( n, 4 ) ) { rftbsub( n, a, nc, w + nw ); bitrv2_SR( n, ip + 2, a ); cftbsub( n, a, w ); } ELSE IF( EQ_16( n, 4 ) ) { cftfsub( n, a, w ); } } IF( isgn >= 0 ) { a[0] = L_shr( a[0], 1 ); move32(); } dctsub( n, a, nc, w + nw ); IF( isgn >= 0 ) { IF( GT_16( n, 4 ) ) { bitrv2_SR( n, ip + 2, a ); cftfsub( n, a, w ); rftfsub( n, a, nc, w + nw ); } ELSE IF( EQ_16( n, 4 ) ) { cftfsub( n, a, w ); } xr = L_sub( a[0], a[1] ); a[0] = L_add( a[0], a[1] ); move32(); FOR( j = 2; j < n; j += 2 ) { a[j - 1] = L_sub( a[j], a[j + 1] ); move32(); a[j] = L_add( a[j], a[j + 1] ); move32(); } a[n - 1] = xr; move32(); FOR( j = 0; j < n; j++ ) { a[j] = L_shr( a[j], 5 ); move32(); } } } #endif void DoRTFTn_fx_ivas( Word32 *x, /* i/o: real part of input and output data Qx */ Loading Loading @@ -6430,93 +6126,6 @@ static void fft_lenN( * Complex-value FFT *-----------------------------------------------------------------*/ #ifndef HARMONIZE_DCT void fft_fx( Word32 *re, /* i/o: real part Qx */ Word32 *im, /* i/o: imag part Qx */ const Word16 length, /* i : length of fft */ const Word16 s /* i : sign */ ) { cmplx x[960]; FOR( Word16 j = 0; j < length; j++ ) { x[j].re = re[( s * j )]; move32(); x[j].im = im[( s * j )]; move32(); } SWITCH( length ) { case 20: fft_len20_fx( x ); BREAK; case 40: fft_lenN( x, FFT_RotVector_640_fx, 640, 5, 8, 8, 40 ); BREAK; case 64: fft_lenN( x, FFT_RotVector_256_fx, 256, 8, 8, 8, 64 ); BREAK; case 80: fft_lenN( x, FFT_RotVector_640_fx, 640, 10, 8, 4, 40 ); BREAK; case 100: fft_lenN( x, FFT_RotVector_400_fx, 400, 10, 10, 4, 40 ); BREAK; case 120: fft_lenN( x, FFT_RotVector_960_fx, 960, 15, 8, 4, 60 ); BREAK; case 128: fft_lenN( x, FFT_RotVector_256_fx, 256, 16, 8, 4, 64 ); BREAK; case 160: fft_lenN( x, FFT_RotVector_640_fx, 640, 20, 8, 2, 40 ); BREAK; case 200: fft_lenN( x, FFT_RotVector_400_fx, 400, 20, 10, 2, 40 ); BREAK; case 240: fft_lenN( x, FFT_RotVector_960_fx, 960, 30, 8, 2, 60 ); BREAK; case 256: fft_lenN( x, FFT_RotVector_256_fx, 256, 32, 8, 2, 64 ); BREAK; case 320: fft_lenN( x, FFT_RotVector_640_fx, 640, 20, 16, 2, 40 ); BREAK; case 400: fft_lenN( x, FFT_RotVector_400_fx, 400, 20, 20, 2, 40 ); BREAK; case 480: fft_lenN( x, FFT_RotVector_960_fx, 960, 30, 16, 2, 60 ); BREAK; case 600: fft_lenN( x, FFT_RotVector_600_fx, 600, 30, 20, 2, 60 ); BREAK; case 640: fft_lenN( x, FFT_RotVector_640_fx, 640, 20, 32, 2, 40 ); BREAK; case 960: fft_lenN( x, FFT_RotVector_960_fx, 960, 30, 32, 2, 60 ); BREAK; default: assert( !"fft length is not supported!" ); } FOR( Word16 j = 0; j < length; j++ ) { re[( s * j )] = x[j].re; move32(); im[( s * j )] = x[j].im; move32(); } return; } #else void fft_fx( cmplx *x, /* i/o: complex data */ const Word16 length /* i : length of fft */ Loading Loading @@ -6581,7 +6190,6 @@ void fft_fx( return; } #endif void rfft_fx( Loading @@ -6594,9 +6202,7 @@ void rfft_fx( Word16 i, sizeOfFft2, sizeOfFft4; Word32 tmp, t1, t2, t3, t4; Word16 s1, s2; #ifdef HARMONIZE_DCT cmplx spec[L_FRAME48k]; #endif sizeOfFft2 = shr( length, 1 ); sizeOfFft4 = shr( length, 2 ); Loading Loading @@ -6669,7 +6275,6 @@ void rfft_fx( { case -1: #ifdef HARMONIZE_DCT FOR( i = 0; i < sizeOfFft2; i++ ) { spec[i].re = x[2 * i]; Loading Loading @@ -6700,9 +6305,6 @@ void rfft_fx( x[2 * i + 1] = spec[i].im; move32(); } #else fft_fx( x, x + 1, sizeOfFft2, 2 ); #endif // Qx tmp = L_add( x[0], x[1] ); Loading Loading @@ -6759,7 +6361,6 @@ void rfft_fx( move32(); } #ifdef HARMONIZE_DCT FOR( i = 0; i < sizeOfFft2; i++ ) { spec[i].re = x[2 * i]; Loading @@ -6777,9 +6378,6 @@ void rfft_fx( x[2 * i + 1] = spec[i].im; move32(); } #else fft_fx( x, x + 1, sizeOfFft2, 2 ); #endif FOR( i = 0; i < length; i += 2 ) { Loading
lib_com/gs_inact_switching_fx.c +0 −12 Original line number Diff line number Diff line Loading @@ -89,11 +89,7 @@ void Inac_switch_ematch_fx( ELSE IF( EQ_16( coder_type, VOICED ) || EQ_16( coder_type, GENERIC ) || EQ_16( coder_type, TRANSITION ) || ( last_core != ACELP_CORE ) || NE_16( last_codec_mode, MODE1 ) || ( ( element_mode > EVS_MONO ) && EQ_16( coder_type, UNVOICED ) ) ) { /* Find spectrum and energy per band for GC and VC frames */ #ifdef HARMONIZE_DCT edct_16fx( exc2, dct_exc_tmp, L_frame, 5 ); #else edct_16fx( exc2, dct_exc_tmp, L_frame, 5, element_mode ); #endif Ener_per_band_comp_fx( dct_exc_tmp, Ener_per_bd, Q_exc, MBANDS_GN, 1, L_frame ); Loading @@ -107,11 +103,7 @@ void Inac_switch_ematch_fx( ELSE IF( ( coder_type == INACTIVE ) && inactive_coder_type_flag ) { /* Find spectrum and energy per band for inactive frames */ #ifdef HARMONIZE_DCT edct_16fx( exc2, dct_exc_tmp, L_frame, 5 ); #else edct_16fx( exc2, dct_exc_tmp, L_frame, 5, element_mode ); #endif Ener_per_band_comp_fx( dct_exc_tmp, Ener_per_bd, Q_exc, MBANDS_GN, 1, L_frame ); Loading Loading @@ -196,11 +188,7 @@ void Inac_switch_ematch_fx( Scale_sig( dct_exc_tmp, 240, 1 ); // Q_exc Scale_sig( exc2, 240, 1 ); // Q_exc } #ifdef HARMONIZE_DCT edct_16fx( dct_exc_tmp, exc2, L_frame, 5 ); #else edct_16fx( dct_exc_tmp, exc2, L_frame, 5, element_mode ); #endif } return; Loading
lib_com/ivas_mdft_imdft_fx.c +0 −39 Original line number Diff line number Diff line Loading @@ -214,7 +214,6 @@ static void ivas_ifft_cplx1_fx( move32(); } #ifdef HARMONIZE_DCT cmplx x[L_FRAME48k]; FOR( i = 0; i < length; i++ ) Loading @@ -234,9 +233,6 @@ static void ivas_ifft_cplx1_fx( im[i] = x[i].im; move32(); } #else fft_fx( re, im, length, 1 ); #endif return; } Loading @@ -255,12 +251,7 @@ void ivas_mdft_fx( const Word16 mdft_length /* i : MDFT length */ ) { #ifdef HARMONIZE_DCT cmplx spec[L_FRAME48k]; #else Word32 re[L_FRAME48k]; Word32 im[L_FRAME48k]; #endif Word16 j, len_by_2; const Word32 *pTwid; // Q31 len_by_2 = shr( mdft_length, 1 ); Loading @@ -270,38 +261,23 @@ void ivas_mdft_fx( { FOR( j = 0; j < mdft_length; j++ ) { #ifdef HARMONIZE_DCT spec[j].re = Mpy_32_32( pIn[j], pTwid[j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); spec[j].im = Mpy_32_32( L_negate( pIn[j] ), pTwid[mdft_length - j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); #else re[j] = Mpy_32_32( pIn[j], pTwid[j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); im[j] = Mpy_32_32( L_negate( pIn[j] ), pTwid[mdft_length - j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); #endif } } ELSE { FOR( j = 0; j < mdft_length; j++ ) { #ifdef HARMONIZE_DCT spec[j].re = Msub_32_32( Mpy_32_32( pIn[j], pTwid[j] ), pIn[add( mdft_length, j )], pTwid[mdft_length - j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); spec[j].im = Msub_32_32( Mpy_32_32( L_negate( pIn[j] ), pTwid[mdft_length - j] ), pIn[mdft_length + j], pTwid[j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); #else re[j] = Msub_32_32( Mpy_32_32( pIn[j], pTwid[j] ), pIn[add( mdft_length, j )], pTwid[mdft_length - j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); im[j] = Msub_32_32( Mpy_32_32( L_negate( pIn[j] ), pTwid[mdft_length - j] ), pIn[mdft_length + j], pTwid[j] ); // ( Qin + Q31 ) - Q31 -> Qin move32(); #endif } } #ifdef HARMONIZE_DCT fft_fx( spec, mdft_length ); FOR( j = 0; j < len_by_2; j++ ) Loading @@ -316,21 +292,6 @@ void ivas_mdft_fx( pOut_im[2 * j + 1] = L_negate( spec[mdft_length - j - 1].im ); move32(); } #else fft_fx( re, im, mdft_length, 1 ); FOR( j = 0; j < len_by_2; j++ ) { pOut_re[2 * j] = re[j]; // Qin move32(); pOut_re[2 * j + 1] = re[mdft_length - j - 1]; // Qin move32(); pOut_im[2 * j] = im[j]; // Qin move32(); pOut_im[2 * j + 1] = L_negate( im[mdft_length - j - 1] ); // Qin move32(); } #endif return; } Loading
lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -92,7 +92,6 @@ #define NONBE_FIX_ISSUE_2206_AVOID_OVERFLOW_MSVQ_Interpol_Tran_fx /* FhG: Fix saturation crash in MSVQ_Interpol_Tran_fx() */ #define FIX_2452_HQ_CORE_PEAQ_AVR_RATIO_HARM /* Eri: Basop issue 2453: Fix alignment of peak_avrg_ratio_fx */ #define FIX_FLOAT_1539_G192_FORMAT_SWITCH /* VA/Nokia: reintroduce format switching for g192 bitstreams */ #define HARMONIZE_DCT /* VA: removal of duplicated DCT functions */ #define FIX_2489_HARMONIZE_FdCng_encodeSID /* FhG: harmonize FdCng_encodeSID_fx() and FdCng_encodeSID_ivas_fx() */ #define FIX_1527_CMR_BITRATE_IDX /* Fix for incorrect bitrate idx packed in rtp CMR E-byte */ #define HARMONIZE_2494_FdCng_decodeSID_fx /* FhG: harmonize FdCng_decodeSID_fx with _ivas_ version */ Loading