Loading lib_enc/ivas_stat_enc.h +4 −4 Original line number Diff line number Diff line Loading @@ -985,12 +985,12 @@ typedef struct stereo_dmx_evs_phase_only_correlation_structure #ifdef ENHANCED_STEREO_DMX typedef struct stereo_dmx_evs_correlation_filter_structure { float ipd_ff[L_FRAME16k / 2 + 1]; float ipd_ff[L_FRAME48k / 2 + 1]; float Pr[L_FRAME48k / 2 + 1]; float Pi[L_FRAME48k / 2 + 1]; int32_t pha_len; int32_t fad_len; int16_t pha_len; int16_t fad_len; float win[L_FRAME48k]; float fad_g[L_FRAME48k]; Loading @@ -1008,7 +1008,7 @@ typedef struct stereo_dmx_evs_correlation_filter_structure STEREO_DMX_EVS_PRC prev_prc; int16_t prc_hys_cnt; float fad_g_prc[L_FRAME48k]; int32_t fad_len_prc; int16_t fad_len_prc; } STEREO_DMX_EVS_PHA_DATA, *STEREO_DMX_EVS_PHA_HANDLE; Loading lib_enc/ivas_stereo_dmx_evs.c +76 −55 Original line number Diff line number Diff line Loading @@ -67,10 +67,10 @@ #ifdef ENHANCED_STEREO_DMX #define STEREO_DMX_EVS_PHA_LEN_16 20.0f #define STEREO_DMX_EVS_FAD_LEN_16 20.0f #define STEREO_DMX_EVS_PHA_LEN_32 10.0f #define STEREO_DMX_EVS_FAD_LEN_32 10.0f #define STEREO_DMX_EVS_PHA_LEN_16 15.0f #define STEREO_DMX_EVS_FAD_LEN_16 15.0f #define STEREO_DMX_EVS_PHA_LEN_32 5.0f #define STEREO_DMX_EVS_FAD_LEN_32 5.0f #define STEREO_DMX_EVS_PHA_LEN_48 5.0f #define STEREO_DMX_EVS_FAD_LEN_48 5.0f Loading Loading @@ -200,7 +200,7 @@ static void calc_poc( float *Pr, *Pi, *ipd_ff; float tPr, tPi, Pn; float *p_curr_taps, *p_curr_taps_l2r; double energy; float energy; #endif /* Initialization */ Loading Loading @@ -400,13 +400,13 @@ static void calc_poc( // ISD isd_cnt = 0; for ( int i = 1; i <= end8 ; i++ ) for ( i = 1; i <= end8 ; i++ ) { Nr = ( specLr[i] - specRr[i] ); Ni = ( specLi[i] - specRi[i] ); Dr = ( specLr[i] + specRr[i] ); Di = ( specLi[i] + specRi[i] ); ISD = sqrt( (Nr*Nr + Ni*Ni) / (Dr*Dr + Di*Di) ); ISD = sqrtf( (Nr*Nr + Ni*Ni) / (Dr*Dr + Di*Di) ); if (ISD > STEREO_DMX_EVS_ISD_THRES) { isd_cnt++; Loading Loading @@ -456,35 +456,34 @@ static void calc_poc( } if (hPHA->curr_pha != STEREO_DMX_EVS_NO_PHA) { if (hPHA->curr_pha == STEREO_DMX_EVS_PHA_IPD) { ipd_ff = hPHA->ipd_ff; for ( i = 0; i < ( end8 + 1 ); i++ ) { tPr = ( specLr[i] * specRr[i] + specLi[i] * specRi[i] ); tPi = ( specLi[i] * specRr[i] - specLr[i] * specRi[i] ); Pn = sqrt( tPr * tPr + tPi * tPi ); Pn = sqrtf( tPr * tPr + tPi * tPi ); tPr /= (Pn+EPSILON); tPi /= (Pn+EPSILON); if (fabs(tPr*tPi) < EPSILON) if (fabs((double)tPr* (double)tPi) < EPSILON) { tPr = 1.; tPi = 0.; } Pr[i] = ipd_ff[i]*Pr[i] + (1.0 - ipd_ff[i])*tPr; Pi[i] = ipd_ff[i]*Pi[i] + (1.0 - ipd_ff[i])*tPi; Pr[i] = ipd_ff[i]*Pr[i] + (1.0f - ipd_ff[i])*tPr; Pi[i] = ipd_ff[i]*Pi[i] + (1.0f - ipd_ff[i])*tPi; } for ( i = end8+1; i < n0; i++ ) for ( ; i < ( n0 + 1 ); i++ ) { Pr[i] = 1.0; Pi[i] = 0.0; } if (hPHA->curr_pha == STEREO_DMX_EVS_PHA_IPD) { // PHA R2L hPHA->p_curr_taps[1] = hPHA->curr_taps[1]; Loading @@ -492,7 +491,7 @@ static void calc_poc( p_curr_taps[0] = Pr[0]; p_curr_taps[1] = Pr[n0]; for ( i = 1; i < n0; i++ ) for ( i = 1; i < n0+1; i++ ) { p_curr_taps[i * 2] = Pr[i]; p_curr_taps[i * 2 + 1] = Pi[i]; Loading @@ -501,17 +500,36 @@ static void calc_poc( } else { ipd_ff = hPHA->ipd_ff; for ( i = 0; i < ( n0 + 1 ); i++ ) { tPr = ( specLr[i] * specRr[i] + specLi[i] * specRi[i] ); tPi = ( specLi[i] * specRr[i] - specLr[i] * specRi[i] ); Pn = sqrtf( tPr * tPr + tPi * tPi ); tPr /= (Pn+EPSILON); tPi /= (Pn+EPSILON); if (fabs((double)tPr* (double)tPi) < EPSILON) { tPr = 1.; tPi = 0.; } Pr[i] = ipd_ff[i]*Pr[i] + (1.0f - ipd_ff[i])*tPr; Pi[i] = ipd_ff[i]*Pi[i] + (1.0f - ipd_ff[i])*tPi; } // PHA R2L hPHA->p_curr_taps[1] = hPHA->curr_taps[1]; p_curr_taps = hPHA->p_curr_taps[1]; for ( i = 1; i < n0; i++ ) for ( i = 1; i < n0+1; i++ ) { Pn = sqrt( Pr[i] * Pr[i] + Pi[i] * Pi[i] ); Pn = sqrtf(Pr[i] * Pr[i] + Pi[i] * Pi[i] ); tPr = Pr[i]/(Pn+EPSILON); p_curr_taps[i * 2] = sqrt((1.+tPr)/2.); p_curr_taps[i * 2 + 1] = sqrt((1.-tPr)/2.)*sign(Pi[i]); p_curr_taps[i * 2] = sqrtf((1.0f+tPr)/2.0f); p_curr_taps[i * 2 + 1] = sqrtf((1.0f-tPr)/2.0f)*sign(Pi[i]); } p_curr_taps[0] = 1; Loading Loading @@ -541,7 +559,7 @@ static void calc_poc( hPHA->p_curr_taps[n][i] *= hPHA->win[i]; } energy = 0; energy = 0.; for ( i = 0; i < hPHA->pha_len; i++ ) { energy += hPHA->p_curr_taps[n][i] *hPHA->p_curr_taps[n][i]; Loading Loading @@ -1021,8 +1039,7 @@ void stereo_dmx_evs_enc( float data_f[CPE_CHANNELS][L_FRAME48k]; #ifdef ENHANCED_STEREO_DMX int16_t k, m; int32_t pha_len, fad_len; int16_t k, m, pha_len, fad_len; float mem_out_curr[CPE_CHANNELS][L_FRAME48k], mem_out_last[L_FRAME48k]; float *p_data_mem, *p_prev_taps, *p_curr_taps, *fad_g, *p_mem_out_curr, *p_data_f; float dmx_itd_data[L_FRAME48k], dmx_ipd_data[L_FRAME48k], *p_dmx_data; Loading Loading @@ -1142,7 +1159,7 @@ void stereo_dmx_evs_enc( for ( n=0; n < input_frame; n++ ) { dmx_ipd_data[n] = (mem_out_curr[0][n] + mem_out_curr[1][n])*0.5; dmx_ipd_data[n] = (mem_out_curr[0][n] + mem_out_curr[1][n])*0.5f; } // prc switch Loading Loading @@ -1201,7 +1218,7 @@ void stereo_dmx_evs_enc( for (n = 0; n < fad_len; n++) { p_dmx_data[n] *= fad_g[n]; p_dmx_data[n] += (1.-fad_g[n]) * dmx_ipd_data[n]; p_dmx_data[n] += (1.0f-fad_g[n]) * dmx_ipd_data[n]; } } } Loading @@ -1217,7 +1234,7 @@ void stereo_dmx_evs_enc( for (n = 0; n < fad_len; n++) { p_dmx_data[n] *= fad_g[n]; p_dmx_data[n] += (1.-fad_g[n]) * dmx_itd_data[n]; p_dmx_data[n] += (1.0f-fad_g[n]) * dmx_itd_data[n]; } } } Loading Loading @@ -1263,7 +1280,7 @@ ivas_error stereo_dmx_evs_init_encoder( int16_t n, input_frame; #ifdef ENHANCED_STEREO_DMX int32_t f_len, pha_len, fad_len; int16_t f_len, pha_len, fad_len; float *win, *fad_g; float a_min, a_max, a_step, n0, itrh; Loading Loading @@ -1379,18 +1396,18 @@ ivas_error stereo_dmx_evs_init_encoder( if ( input_Fs == 16000 ) { f_len = STEREO_DMX_EVS_PHA_LEN_16 * input_Fs / 1000; hStereoDmxEVS->hPHA->fad_len = STEREO_DMX_EVS_FAD_LEN_16 * input_Fs / 1000; f_len = (int16_t)(STEREO_DMX_EVS_PHA_LEN_16 * (float)input_Fs / 1000.0f); hStereoDmxEVS->hPHA->fad_len = (int16_t)(STEREO_DMX_EVS_FAD_LEN_16 * (float)input_Fs / 1000.0f); } else if ( input_Fs == 32000 ) { f_len = STEREO_DMX_EVS_PHA_LEN_32 * input_Fs / 1000; hStereoDmxEVS->hPHA->fad_len = STEREO_DMX_EVS_FAD_LEN_32 * input_Fs / 1000; f_len = (int16_t)(STEREO_DMX_EVS_PHA_LEN_32 * (float)input_Fs / 1000.0f); hStereoDmxEVS->hPHA->fad_len = (int16_t)(STEREO_DMX_EVS_FAD_LEN_32 * (float)input_Fs / 1000.0f); } else if ( input_Fs == 48000 ) { f_len = STEREO_DMX_EVS_PHA_LEN_48 * input_Fs / 1000; hStereoDmxEVS->hPHA->fad_len = STEREO_DMX_EVS_FAD_LEN_48 * input_Fs / 1000; f_len = (int16_t)(STEREO_DMX_EVS_PHA_LEN_48 * (float)input_Fs / 1000.0f); hStereoDmxEVS->hPHA->fad_len = (int16_t)(STEREO_DMX_EVS_FAD_LEN_48 * (float)input_Fs / 1000.0f); } else { Loading Loading @@ -1420,8 +1437,8 @@ ivas_error stereo_dmx_evs_init_encoder( hStereoDmxEVS->hPHA->pha_hys_cnt = 0; // Compute the forgetting factor a_min = 0.8576958985908941; a_max = 0.9440608762859234; a_min = 0.8576958985908941f; a_max = 0.9440608762859234f; itrh = 60; n0 = L_FRAME16k / 2; a_step = ( a_min - a_max ) / (n0+1-itrh); Loading @@ -1434,16 +1451,20 @@ ivas_error stereo_dmx_evs_init_encoder( { ipd_ff[n] = a_max + (n-itrh) * a_step; } set_zero( hStereoDmxEVS->hPHA->Pr, L_FRAME48k / 2 + 1 ); for ( ; n < L_FRAME48k/2+1; n++ ) { ipd_ff[n] = a_min; } set_f( hStereoDmxEVS->hPHA->Pr, 1.0, L_FRAME48k / 2 + 1 ); set_zero( hStereoDmxEVS->hPHA->Pi, L_FRAME48k / 2 + 1 ); hStereoDmxEVS->hPHA->prc_thres = STEREO_DMX_EVS_SWTCH_PRC_THRES * input_Fs / 1000; hStereoDmxEVS->hPHA->prc_thres = (int16_t)(STEREO_DMX_EVS_SWTCH_PRC_THRES * (float)input_Fs / 1000.0); hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; hStereoDmxEVS->hPHA->prev_prc = STEREO_DMX_EVS_PRC_POC; hStereoDmxEVS->hPHA->prc_hys_cnt = 0; hStereoDmxEVS->hPHA->fad_len_prc = STEREO_DMX_EVS_FADE_LEN_PRC * input_Fs / 1000; hStereoDmxEVS->hPHA->fad_len_prc = (int16_t)(STEREO_DMX_EVS_FADE_LEN_PRC * (float)input_Fs / 1000.0); fad_len = hStereoDmxEVS->hPHA->fad_len_prc; fad_g = hStereoDmxEVS->hPHA->fad_g_prc; for ( n = 0; n < fad_len; n++ ) Loading Loading
lib_enc/ivas_stat_enc.h +4 −4 Original line number Diff line number Diff line Loading @@ -985,12 +985,12 @@ typedef struct stereo_dmx_evs_phase_only_correlation_structure #ifdef ENHANCED_STEREO_DMX typedef struct stereo_dmx_evs_correlation_filter_structure { float ipd_ff[L_FRAME16k / 2 + 1]; float ipd_ff[L_FRAME48k / 2 + 1]; float Pr[L_FRAME48k / 2 + 1]; float Pi[L_FRAME48k / 2 + 1]; int32_t pha_len; int32_t fad_len; int16_t pha_len; int16_t fad_len; float win[L_FRAME48k]; float fad_g[L_FRAME48k]; Loading @@ -1008,7 +1008,7 @@ typedef struct stereo_dmx_evs_correlation_filter_structure STEREO_DMX_EVS_PRC prev_prc; int16_t prc_hys_cnt; float fad_g_prc[L_FRAME48k]; int32_t fad_len_prc; int16_t fad_len_prc; } STEREO_DMX_EVS_PHA_DATA, *STEREO_DMX_EVS_PHA_HANDLE; Loading
lib_enc/ivas_stereo_dmx_evs.c +76 −55 Original line number Diff line number Diff line Loading @@ -67,10 +67,10 @@ #ifdef ENHANCED_STEREO_DMX #define STEREO_DMX_EVS_PHA_LEN_16 20.0f #define STEREO_DMX_EVS_FAD_LEN_16 20.0f #define STEREO_DMX_EVS_PHA_LEN_32 10.0f #define STEREO_DMX_EVS_FAD_LEN_32 10.0f #define STEREO_DMX_EVS_PHA_LEN_16 15.0f #define STEREO_DMX_EVS_FAD_LEN_16 15.0f #define STEREO_DMX_EVS_PHA_LEN_32 5.0f #define STEREO_DMX_EVS_FAD_LEN_32 5.0f #define STEREO_DMX_EVS_PHA_LEN_48 5.0f #define STEREO_DMX_EVS_FAD_LEN_48 5.0f Loading Loading @@ -200,7 +200,7 @@ static void calc_poc( float *Pr, *Pi, *ipd_ff; float tPr, tPi, Pn; float *p_curr_taps, *p_curr_taps_l2r; double energy; float energy; #endif /* Initialization */ Loading Loading @@ -400,13 +400,13 @@ static void calc_poc( // ISD isd_cnt = 0; for ( int i = 1; i <= end8 ; i++ ) for ( i = 1; i <= end8 ; i++ ) { Nr = ( specLr[i] - specRr[i] ); Ni = ( specLi[i] - specRi[i] ); Dr = ( specLr[i] + specRr[i] ); Di = ( specLi[i] + specRi[i] ); ISD = sqrt( (Nr*Nr + Ni*Ni) / (Dr*Dr + Di*Di) ); ISD = sqrtf( (Nr*Nr + Ni*Ni) / (Dr*Dr + Di*Di) ); if (ISD > STEREO_DMX_EVS_ISD_THRES) { isd_cnt++; Loading Loading @@ -456,35 +456,34 @@ static void calc_poc( } if (hPHA->curr_pha != STEREO_DMX_EVS_NO_PHA) { if (hPHA->curr_pha == STEREO_DMX_EVS_PHA_IPD) { ipd_ff = hPHA->ipd_ff; for ( i = 0; i < ( end8 + 1 ); i++ ) { tPr = ( specLr[i] * specRr[i] + specLi[i] * specRi[i] ); tPi = ( specLi[i] * specRr[i] - specLr[i] * specRi[i] ); Pn = sqrt( tPr * tPr + tPi * tPi ); Pn = sqrtf( tPr * tPr + tPi * tPi ); tPr /= (Pn+EPSILON); tPi /= (Pn+EPSILON); if (fabs(tPr*tPi) < EPSILON) if (fabs((double)tPr* (double)tPi) < EPSILON) { tPr = 1.; tPi = 0.; } Pr[i] = ipd_ff[i]*Pr[i] + (1.0 - ipd_ff[i])*tPr; Pi[i] = ipd_ff[i]*Pi[i] + (1.0 - ipd_ff[i])*tPi; Pr[i] = ipd_ff[i]*Pr[i] + (1.0f - ipd_ff[i])*tPr; Pi[i] = ipd_ff[i]*Pi[i] + (1.0f - ipd_ff[i])*tPi; } for ( i = end8+1; i < n0; i++ ) for ( ; i < ( n0 + 1 ); i++ ) { Pr[i] = 1.0; Pi[i] = 0.0; } if (hPHA->curr_pha == STEREO_DMX_EVS_PHA_IPD) { // PHA R2L hPHA->p_curr_taps[1] = hPHA->curr_taps[1]; Loading @@ -492,7 +491,7 @@ static void calc_poc( p_curr_taps[0] = Pr[0]; p_curr_taps[1] = Pr[n0]; for ( i = 1; i < n0; i++ ) for ( i = 1; i < n0+1; i++ ) { p_curr_taps[i * 2] = Pr[i]; p_curr_taps[i * 2 + 1] = Pi[i]; Loading @@ -501,17 +500,36 @@ static void calc_poc( } else { ipd_ff = hPHA->ipd_ff; for ( i = 0; i < ( n0 + 1 ); i++ ) { tPr = ( specLr[i] * specRr[i] + specLi[i] * specRi[i] ); tPi = ( specLi[i] * specRr[i] - specLr[i] * specRi[i] ); Pn = sqrtf( tPr * tPr + tPi * tPi ); tPr /= (Pn+EPSILON); tPi /= (Pn+EPSILON); if (fabs((double)tPr* (double)tPi) < EPSILON) { tPr = 1.; tPi = 0.; } Pr[i] = ipd_ff[i]*Pr[i] + (1.0f - ipd_ff[i])*tPr; Pi[i] = ipd_ff[i]*Pi[i] + (1.0f - ipd_ff[i])*tPi; } // PHA R2L hPHA->p_curr_taps[1] = hPHA->curr_taps[1]; p_curr_taps = hPHA->p_curr_taps[1]; for ( i = 1; i < n0; i++ ) for ( i = 1; i < n0+1; i++ ) { Pn = sqrt( Pr[i] * Pr[i] + Pi[i] * Pi[i] ); Pn = sqrtf(Pr[i] * Pr[i] + Pi[i] * Pi[i] ); tPr = Pr[i]/(Pn+EPSILON); p_curr_taps[i * 2] = sqrt((1.+tPr)/2.); p_curr_taps[i * 2 + 1] = sqrt((1.-tPr)/2.)*sign(Pi[i]); p_curr_taps[i * 2] = sqrtf((1.0f+tPr)/2.0f); p_curr_taps[i * 2 + 1] = sqrtf((1.0f-tPr)/2.0f)*sign(Pi[i]); } p_curr_taps[0] = 1; Loading Loading @@ -541,7 +559,7 @@ static void calc_poc( hPHA->p_curr_taps[n][i] *= hPHA->win[i]; } energy = 0; energy = 0.; for ( i = 0; i < hPHA->pha_len; i++ ) { energy += hPHA->p_curr_taps[n][i] *hPHA->p_curr_taps[n][i]; Loading Loading @@ -1021,8 +1039,7 @@ void stereo_dmx_evs_enc( float data_f[CPE_CHANNELS][L_FRAME48k]; #ifdef ENHANCED_STEREO_DMX int16_t k, m; int32_t pha_len, fad_len; int16_t k, m, pha_len, fad_len; float mem_out_curr[CPE_CHANNELS][L_FRAME48k], mem_out_last[L_FRAME48k]; float *p_data_mem, *p_prev_taps, *p_curr_taps, *fad_g, *p_mem_out_curr, *p_data_f; float dmx_itd_data[L_FRAME48k], dmx_ipd_data[L_FRAME48k], *p_dmx_data; Loading Loading @@ -1142,7 +1159,7 @@ void stereo_dmx_evs_enc( for ( n=0; n < input_frame; n++ ) { dmx_ipd_data[n] = (mem_out_curr[0][n] + mem_out_curr[1][n])*0.5; dmx_ipd_data[n] = (mem_out_curr[0][n] + mem_out_curr[1][n])*0.5f; } // prc switch Loading Loading @@ -1201,7 +1218,7 @@ void stereo_dmx_evs_enc( for (n = 0; n < fad_len; n++) { p_dmx_data[n] *= fad_g[n]; p_dmx_data[n] += (1.-fad_g[n]) * dmx_ipd_data[n]; p_dmx_data[n] += (1.0f-fad_g[n]) * dmx_ipd_data[n]; } } } Loading @@ -1217,7 +1234,7 @@ void stereo_dmx_evs_enc( for (n = 0; n < fad_len; n++) { p_dmx_data[n] *= fad_g[n]; p_dmx_data[n] += (1.-fad_g[n]) * dmx_itd_data[n]; p_dmx_data[n] += (1.0f-fad_g[n]) * dmx_itd_data[n]; } } } Loading Loading @@ -1263,7 +1280,7 @@ ivas_error stereo_dmx_evs_init_encoder( int16_t n, input_frame; #ifdef ENHANCED_STEREO_DMX int32_t f_len, pha_len, fad_len; int16_t f_len, pha_len, fad_len; float *win, *fad_g; float a_min, a_max, a_step, n0, itrh; Loading Loading @@ -1379,18 +1396,18 @@ ivas_error stereo_dmx_evs_init_encoder( if ( input_Fs == 16000 ) { f_len = STEREO_DMX_EVS_PHA_LEN_16 * input_Fs / 1000; hStereoDmxEVS->hPHA->fad_len = STEREO_DMX_EVS_FAD_LEN_16 * input_Fs / 1000; f_len = (int16_t)(STEREO_DMX_EVS_PHA_LEN_16 * (float)input_Fs / 1000.0f); hStereoDmxEVS->hPHA->fad_len = (int16_t)(STEREO_DMX_EVS_FAD_LEN_16 * (float)input_Fs / 1000.0f); } else if ( input_Fs == 32000 ) { f_len = STEREO_DMX_EVS_PHA_LEN_32 * input_Fs / 1000; hStereoDmxEVS->hPHA->fad_len = STEREO_DMX_EVS_FAD_LEN_32 * input_Fs / 1000; f_len = (int16_t)(STEREO_DMX_EVS_PHA_LEN_32 * (float)input_Fs / 1000.0f); hStereoDmxEVS->hPHA->fad_len = (int16_t)(STEREO_DMX_EVS_FAD_LEN_32 * (float)input_Fs / 1000.0f); } else if ( input_Fs == 48000 ) { f_len = STEREO_DMX_EVS_PHA_LEN_48 * input_Fs / 1000; hStereoDmxEVS->hPHA->fad_len = STEREO_DMX_EVS_FAD_LEN_48 * input_Fs / 1000; f_len = (int16_t)(STEREO_DMX_EVS_PHA_LEN_48 * (float)input_Fs / 1000.0f); hStereoDmxEVS->hPHA->fad_len = (int16_t)(STEREO_DMX_EVS_FAD_LEN_48 * (float)input_Fs / 1000.0f); } else { Loading Loading @@ -1420,8 +1437,8 @@ ivas_error stereo_dmx_evs_init_encoder( hStereoDmxEVS->hPHA->pha_hys_cnt = 0; // Compute the forgetting factor a_min = 0.8576958985908941; a_max = 0.9440608762859234; a_min = 0.8576958985908941f; a_max = 0.9440608762859234f; itrh = 60; n0 = L_FRAME16k / 2; a_step = ( a_min - a_max ) / (n0+1-itrh); Loading @@ -1434,16 +1451,20 @@ ivas_error stereo_dmx_evs_init_encoder( { ipd_ff[n] = a_max + (n-itrh) * a_step; } set_zero( hStereoDmxEVS->hPHA->Pr, L_FRAME48k / 2 + 1 ); for ( ; n < L_FRAME48k/2+1; n++ ) { ipd_ff[n] = a_min; } set_f( hStereoDmxEVS->hPHA->Pr, 1.0, L_FRAME48k / 2 + 1 ); set_zero( hStereoDmxEVS->hPHA->Pi, L_FRAME48k / 2 + 1 ); hStereoDmxEVS->hPHA->prc_thres = STEREO_DMX_EVS_SWTCH_PRC_THRES * input_Fs / 1000; hStereoDmxEVS->hPHA->prc_thres = (int16_t)(STEREO_DMX_EVS_SWTCH_PRC_THRES * (float)input_Fs / 1000.0); hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; hStereoDmxEVS->hPHA->prev_prc = STEREO_DMX_EVS_PRC_POC; hStereoDmxEVS->hPHA->prc_hys_cnt = 0; hStereoDmxEVS->hPHA->fad_len_prc = STEREO_DMX_EVS_FADE_LEN_PRC * input_Fs / 1000; hStereoDmxEVS->hPHA->fad_len_prc = (int16_t)(STEREO_DMX_EVS_FADE_LEN_PRC * (float)input_Fs / 1000.0); fad_len = hStereoDmxEVS->hPHA->fad_len_prc; fad_g = hStereoDmxEVS->hPHA->fad_g_prc; for ( n = 0; n < fad_len; n++ ) Loading