Skip to content
Commits on Source (15)
...@@ -90,6 +90,7 @@ ...@@ -90,6 +90,7 @@
#define FIX_1824 #define FIX_1824
#define FIX_1822 #define FIX_1822
#define FIX_ISSUE_1764 /* NTT: update renorm and use abs */
#define FIX_ISSUE_1817_REPLACE_CARRY_OVERFLOW /* FhG: bit-exact, replace carry and overflow operations by 64-bit operations, MR 1931 */ #define FIX_ISSUE_1817_REPLACE_CARRY_OVERFLOW /* FhG: bit-exact, replace carry and overflow operations by 64-bit operations, MR 1931 */
#define FIX_1844_MISSING_FREE /* FhG: add missing free in ivas_binRenderer_convModuleClose_fx() */ #define FIX_1844_MISSING_FREE /* FhG: add missing free in ivas_binRenderer_convModuleClose_fx() */
......
...@@ -98,8 +98,13 @@ ...@@ -98,8 +98,13 @@
#define STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 24576 #define STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 24576
#ifdef FIX_ISSUE_1764
#define STEREO_DMX_EVS_POC_RENORM_TH 1048576 // 65536 * 16
#define STEREO_DMX_EVS_POC_RENORM_SHIFT 10
#else
#define STEREO_DMX_EVS_POC_RENORM_TH 33554432 // 65536 << 9 #define STEREO_DMX_EVS_POC_RENORM_TH 33554432 // 65536 << 9
#define STEREO_DMX_EVS_POC_RENORM_SHIFT 3 #define STEREO_DMX_EVS_POC_RENORM_SHIFT 3
#endif
#define STEREO_DMX_EVS_FAD_R 3 #define STEREO_DMX_EVS_FAD_R 3
#define STEREO_DMX_EVS_FAD_IR 10923 /* 1/3 in Q15 */ #define STEREO_DMX_EVS_FAD_IR 10923 /* 1/3 in Q15 */
...@@ -227,6 +232,12 @@ static Word32 spectral_flatness_fx( ...@@ -227,6 +232,12 @@ static Word32 spectral_flatness_fx(
const Word16 *sig_fx_e, /* i : input signal (exponent) - can be NULL */ const Word16 *sig_fx_e, /* i : input signal (exponent) - can be NULL */
const Word16 sig_length /* i : input signal length */ const Word16 sig_length /* i : input signal length */
); );
#ifdef FIX_ISSUE_1764
static void renorm_poc_fx(
Word32 *real, /* i/o real-part*/
Word32 *imag /* i/o imaginary-part */
);
#endif
/*-------------------------------------------------------------------* /*-------------------------------------------------------------------*
* estimate_itd_wnd_fft() * estimate_itd_wnd_fft()
* *
...@@ -409,7 +420,11 @@ static void calc_poc_fx( ...@@ -409,7 +420,11 @@ static void calc_poc_fx(
mult_angle = 2; /*****/ mult_angle = 2; /*****/
move16(); move16();
} }
#ifdef FIX_ISSUE_1764
ELSE IF( EQ_16( input_frame, L_FRAME32k ) )
#else
if ( EQ_16( input_frame, L_FRAME32k ) ) if ( EQ_16( input_frame, L_FRAME32k ) )
#endif
{ {
mult_angle = 2; mult_angle = 2;
move16(); move16();
...@@ -437,6 +452,10 @@ static void calc_poc_fx( ...@@ -437,6 +452,10 @@ static void calc_poc_fx(
Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) ); Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) );
Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) ); Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) );
#ifdef FIX_ISSUE_1764
renorm_poc_fx( &Lr, &Li );
renorm_poc_fx( &Rr, &Ri );
#else
IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
...@@ -447,6 +466,7 @@ static void calc_poc_fx( ...@@ -447,6 +466,7 @@ static void calc_poc_fx(
Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT ); Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT ); Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT );
} }
#endif
specPOr[i] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e specPOr[i] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e
move32(); move32();
...@@ -460,6 +480,10 @@ static void calc_poc_fx( ...@@ -460,6 +480,10 @@ static void calc_poc_fx(
Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) ); Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) );
Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) ); Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) );
#ifdef FIX_ISSUE_1764
renorm_poc_fx( &Lr, &Li );
renorm_poc_fx( &Rr, &Ri );
#else
IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
...@@ -470,6 +494,7 @@ static void calc_poc_fx( ...@@ -470,6 +494,7 @@ static void calc_poc_fx(
Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT ); Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT ); Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT );
} }
#endif
specPOr[j] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e specPOr[j] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e
move32(); move32();
...@@ -492,6 +517,10 @@ static void calc_poc_fx( ...@@ -492,6 +517,10 @@ static void calc_poc_fx(
Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) ); Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) );
Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) ); Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) );
#ifdef FIX_ISSUE_1764
renorm_poc_fx( &Lr, &Li );
renorm_poc_fx( &Rr, &Ri );
#else
IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
...@@ -502,6 +531,7 @@ static void calc_poc_fx( ...@@ -502,6 +531,7 @@ static void calc_poc_fx(
Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT ); Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT ); Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT );
} }
#endif
specPOr[i] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e specPOr[i] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e
move32(); move32();
...@@ -514,6 +544,10 @@ static void calc_poc_fx( ...@@ -514,6 +544,10 @@ static void calc_poc_fx(
Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) ); Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) );
Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) ); Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) );
#ifdef FIX_ISSUE_1764
renorm_poc_fx( &Lr, &Li );
renorm_poc_fx( &Rr, &Ri );
#else
IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
...@@ -524,6 +558,7 @@ static void calc_poc_fx( ...@@ -524,6 +558,7 @@ static void calc_poc_fx(
Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT ); Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT ); Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT );
} }
#endif
specPOr[j] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e specPOr[j] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e
move32(); move32();
...@@ -537,6 +572,12 @@ static void calc_poc_fx( ...@@ -537,6 +572,12 @@ static void calc_poc_fx(
Li = L_sub( specLi[i], Mpy_32_32_r( specRr[i], EPS ) ); Li = L_sub( specLi[i], Mpy_32_32_r( specRr[i], EPS ) );
Rr = L_add( specRr[i], Mpy_32_32_r( specLi[i], EPS ) ); Rr = L_add( specRr[i], Mpy_32_32_r( specLi[i], EPS ) );
Ri = L_sub( specRi[i], Mpy_32_32_r( specLr[i], EPS ) ); Ri = L_sub( specRi[i], Mpy_32_32_r( specLr[i], EPS ) );
#ifdef FIX_ISSUE_1764
renorm_poc_fx( &Lr, &Li );
renorm_poc_fx( &Rr, &Ri );
#endif
specPOr[i] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); specPOr[i] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) );
move32(); move32();
specPOi[i] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); specPOi[i] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) );
...@@ -568,7 +609,11 @@ static void calc_poc_fx( ...@@ -568,7 +609,11 @@ static void calc_poc_fx(
{ {
tmp1 = Mpy_32_32_r( wnd[i * step + bias], gamma ); // Q31 tmp1 = Mpy_32_32_r( wnd[i * step + bias], gamma ); // Q31
#ifdef FIX_ISSUE_1764
IF( GT_32( L_abs( specPOr[i] ), L_abs( specPOi[i] ) ) )
#else
IF( W_mult0_32_32( L_sub( specPOr[i], specPOi[i] ), L_add( specPOr[i], specPOi[i] ) ) > 0 ) IF( W_mult0_32_32( L_sub( specPOr[i], specPOi[i] ), L_add( specPOr[i], specPOi[i] ) ) > 0 )
#endif
{ {
specPOr[i] = Mpy_32_16_1( tmp1, imult1616( sign_fx( specPOr[i] ), /*0.923880f*/ s[120 * mult_angle] ) ); /* cos(PI/8) Q31*/ specPOr[i] = Mpy_32_16_1( tmp1, imult1616( sign_fx( specPOr[i] ), /*0.923880f*/ s[120 * mult_angle] ) ); /* cos(PI/8) Q31*/
move32(); move32();
...@@ -587,9 +632,17 @@ static void calc_poc_fx( ...@@ -587,9 +632,17 @@ static void calc_poc_fx(
FOR( ; i < end; i++ ) /* binary search from 16 angles */ FOR( ; i < end; i++ ) /* binary search from 16 angles */
{ {
tmp1 = Mpy_32_32_r( wnd[i * step + bias], gamma ); // Q31 tmp1 = Mpy_32_32_r( wnd[i * step + bias], gamma ); // Q31
#ifdef FIX_ISSUE_1764
IF( GT_32( L_abs( specPOr[i] ), L_abs( specPOi[i] ) ) )
#else
IF( W_mult0_32_32( L_sub( specPOr[i], specPOi[i] ), L_add( specPOr[i], specPOi[i] ) ) > 0 ) IF( W_mult0_32_32( L_sub( specPOr[i], specPOi[i] ), L_add( specPOr[i], specPOi[i] ) ) > 0 )
#endif
{ {
#ifdef FIX_ISSUE_1764
IF( GT_32( L_abs( Mpy_32_16_1( specPOr[i], 13573 /*0.414213f*/ ) ), L_abs( specPOi[i] ) ) ) /*tan(PI/8)*/
#else
IF( W_mult0_32_32( L_sub( Mpy_32_16_1( specPOr[i], 13573 /*0.414213f*/ ), specPOi[i] ), L_add( Mpy_32_16_1( specPOr[i], 13573 /*0.414213f*/ ), specPOi[i] ) ) > 0 ) /*tan(PI/8)*/ IF( W_mult0_32_32( L_sub( Mpy_32_16_1( specPOr[i], 13573 /*0.414213f*/ ), specPOi[i] ), L_add( Mpy_32_16_1( specPOr[i], 13573 /*0.414213f*/ ), specPOi[i] ) ) > 0 ) /*tan(PI/8)*/
#endif
{ {
specPOr[i] = Mpy_32_16_1( tmp1 /*0.980785f */, imult1616( sign_fx( specPOr[i] ), s[140 * mult_angle] ) ); /* cos(PI/16) Q31*/ specPOr[i] = Mpy_32_16_1( tmp1 /*0.980785f */, imult1616( sign_fx( specPOr[i] ), s[140 * mult_angle] ) ); /* cos(PI/16) Q31*/
move32(); move32();
...@@ -606,7 +659,11 @@ static void calc_poc_fx( ...@@ -606,7 +659,11 @@ static void calc_poc_fx(
} }
ELSE ELSE
{ {
#ifdef FIX_ISSUE_1764
IF( GT_32( L_abs( specPOr[i] ), L_abs( Mpy_32_16_1( specPOi[i], 13573 /*0.414213f*/ ) ) ) ) /*tan(PI/8)*/
#else
IF( W_mult0_32_32( L_sub( specPOr[i], Mpy_32_16_1( specPOi[i], 13573 /*0.414213f*/ ) ), L_add( specPOr[i], Mpy_32_16_1( specPOi[i], 13573 /*0.414213f*/ ) ) ) > 0 ) /*tan(PI/8)*/ IF( W_mult0_32_32( L_sub( specPOr[i], Mpy_32_16_1( specPOi[i], 13573 /*0.414213f*/ ) ), L_add( specPOr[i], Mpy_32_16_1( specPOi[i], 13573 /*0.414213f*/ ) ) ) > 0 ) /*tan(PI/8)*/
#endif
{ {
specPOr[i] = Mpy_32_16_1( tmp1 /** 0.555570f*/, imult1616( sign_fx( specPOr[i] ), s[60 * mult_angle] ) ); /*cos(PI*5/16) Q31*/ specPOr[i] = Mpy_32_16_1( tmp1 /** 0.555570f*/, imult1616( sign_fx( specPOr[i] ), s[60 * mult_angle] ) ); /*cos(PI*5/16) Q31*/
move32(); move32();
...@@ -701,8 +758,11 @@ static void calc_poc_fx( ...@@ -701,8 +758,11 @@ static void calc_poc_fx(
hPHA->pha_hys_cnt = 0; hPHA->pha_hys_cnt = 0;
move16(); move16();
} }
#ifdef FIX_ISSUE_1764
IF( GE_32( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) )
#else
if ( GE_32( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) ) if ( GE_32( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) )
#endif
{ {
hPHA->curr_pha = STEREO_DMX_EVS_PHA_IPD; hPHA->curr_pha = STEREO_DMX_EVS_PHA_IPD;
move32(); move32();
...@@ -726,8 +786,11 @@ static void calc_poc_fx( ...@@ -726,8 +786,11 @@ static void calc_poc_fx(
hPHA->pha_hys_cnt = 0; hPHA->pha_hys_cnt = 0;
move16(); move16();
} }
#ifdef FIX_ISSUE_1764
IF( GE_16( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) )
#else
if ( GE_16( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) ) if ( GE_16( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) )
#endif
{ {
hPHA->curr_pha = STEREO_DMX_EVS_PHA_IPD2; hPHA->curr_pha = STEREO_DMX_EVS_PHA_IPD2;
move32(); move32();
...@@ -1622,9 +1685,11 @@ static Word32 find_poc_peak_fx( ...@@ -1622,9 +1685,11 @@ static Word32 find_poc_peak_fx(
{ {
Q_fx[i] = L_shr( Q_fx[i], negate( Q_e[i] ) ); // Q31 Q_fx[i] = L_shr( Q_fx[i], negate( Q_e[i] ) ); // Q31
move32(); move32();
#ifndef FIX_ISSUE_1764
} }
FOR( i = 0; i < CPE_CHANNELS; i++ ) FOR( i = 0; i < CPE_CHANNELS; i++ )
{ {
#endif
peakQ_fx[i] = L_shr( peakQ_fx[i], sub( 15, peakQ_e[i] ) ); // Q16 peakQ_fx[i] = L_shr( peakQ_fx[i], sub( 15, peakQ_e[i] ) ); // Q16
move32(); move32();
} }
...@@ -1824,6 +1889,32 @@ static Word32 spectral_flatness_fx( ...@@ -1824,6 +1889,32 @@ static Word32 spectral_flatness_fx(
return L_shl_sat( L_deposit_h( sf ), L_tmp_e ); return L_shl_sat( L_deposit_h( sf ), L_tmp_e );
} }
#ifdef FIX_ISSUE_1764
/*-------------------------------------------------------------------*
* renorm_poc_fx()
*
* two-stage renormalization of a complex number
*-------------------------------------------------------------------*/
static void renorm_poc_fx(
Word32 *real, /* i/o real-part*/
Word32 *imag /* i/o imaginary-part */
)
{
IF( ( LT_32( L_abs( *real ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
( LT_32( L_abs( *imag ), STEREO_DMX_EVS_POC_RENORM_TH ) ) )
{
*real = L_shl( *real, STEREO_DMX_EVS_POC_RENORM_SHIFT );
*imag = L_shl( *imag, STEREO_DMX_EVS_POC_RENORM_SHIFT );
IF( ( LT_32( L_abs( *real ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
( LT_32( L_abs( *imag ), STEREO_DMX_EVS_POC_RENORM_TH ) ) )
{
*real = L_shl( *real, STEREO_DMX_EVS_POC_RENORM_SHIFT );
*imag = L_shl( *imag, STEREO_DMX_EVS_POC_RENORM_SHIFT );
}
}
}
#endif
/*-------------------------------------------------------------------* /*-------------------------------------------------------------------*
* calc_energy() * calc_energy()
* *
...@@ -2344,7 +2435,11 @@ void stereo_dmx_evs_enc_fx( ...@@ -2344,7 +2435,11 @@ void stereo_dmx_evs_enc_fx(
FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ ) FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ )
{ {
// ftmp += p_data_mem[n - m] * p_prev_taps[m]; // ftmp += p_data_mem[n - m] * p_prev_taps[m];
#ifdef FIX_ISSUE_1764
fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_prev_taps[m] ) ); // Q25
#else
fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[sub( n, m )], p_prev_taps[m] ) ); // Q25 fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[sub( n, m )], p_prev_taps[m] ) ); // Q25
#endif
} }
fx_tmp = L_shl( fx_tmp, 1 ); // Q26 fx_tmp = L_shl( fx_tmp, 1 ); // Q26
mem_prev[n] = L_add( mem_prev[n], Mpy_32_32( fx_tmp, INV_SQRT_2_Q31 ) ); mem_prev[n] = L_add( mem_prev[n], Mpy_32_32( fx_tmp, INV_SQRT_2_Q31 ) );
...@@ -2369,7 +2464,11 @@ void stereo_dmx_evs_enc_fx( ...@@ -2369,7 +2464,11 @@ void stereo_dmx_evs_enc_fx(
FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ ) FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ )
{ {
// ftmp += p_data_mem[n - m] * p_curr_taps[m]; // ftmp += p_data_mem[n - m] * p_curr_taps[m];
#ifdef FIX_ISSUE_1764
fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_curr_taps[m] ) ); // Q25
#else
fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[sub( n, m )], p_curr_taps[m] ) ); // Q25 fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[sub( n, m )], p_curr_taps[m] ) ); // Q25
#endif
} }
fx_tmp = L_shl( fx_tmp, 1 ); // Q26 fx_tmp = L_shl( fx_tmp, 1 ); // Q26
// dmx_pha_data[n] += ftmp * INV_SQRT_2; // dmx_pha_data[n] += ftmp * INV_SQRT_2;
...@@ -2415,8 +2514,11 @@ void stereo_dmx_evs_enc_fx( ...@@ -2415,8 +2514,11 @@ void stereo_dmx_evs_enc_fx(
hPHA->prc_hys_cnt = 0; hPHA->prc_hys_cnt = 0;
move16(); move16();
} }
#ifdef FIX_ISSUE_1764
IF( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) )
#else
if ( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) if ( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) )
#endif
{ {
hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC;
move32(); move32();
...@@ -2440,7 +2542,11 @@ void stereo_dmx_evs_enc_fx( ...@@ -2440,7 +2542,11 @@ void stereo_dmx_evs_enc_fx(
move16(); move16();
} }
#ifdef FIX_ISSUE_1764
IF( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) )
#else
if ( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) if ( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) )
#endif
{ {
hPHA->curr_prc = STEREO_DMX_EVS_PRC_PHA; hPHA->curr_prc = STEREO_DMX_EVS_PRC_PHA;
move32(); move32();
......