Loading lib_com/ivas_prot.h +7 −2 Original line number Diff line number Diff line Loading @@ -1684,8 +1684,13 @@ int16_t res_bpf_adapt( const float *bpf_error_signal_8k, /* i : BPF modification signal */ float res_buf[STEREO_DFT_N_8k] /* i : residual buffer */ ); #endif // IVAS_FLOAT_FIXED #else // IVAS_FLOAT_FIXED Word16 res_bpf_adapt_ivas_fx( STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: DFT stereo decoder handle */ const Word32 *bpf_error_signal_8k, /* i : BPF modification signal */ Word32 res_buf[STEREO_DFT_N_8k] /* i : residual buffer Q12 */ ); #endif void bpf_pitch_coherence( Decoder_State *st, /* i/o: decoder state structure */ const float pitch_buf[] /* i : pitch for each subframe [0,1,2,3] */ Loading lib_dec/ivas_stereo_dft_dec.c +0 −100 Original line number Diff line number Diff line Loading @@ -350,11 +350,7 @@ ivas_error stereo_dft_dec_create( } else { #ifdef IVAS_FLOAT_FIXED stereo_dft_config_fx( hStereoDft_loc->hConfig, element_brate, &tmpS, &tmpS ); #else stereo_dft_config( hStereoDft_loc->hConfig, element_brate, &tmpS, &tmpS ); #endif } stereo_dft_dec_open( hStereoDft_loc, output_Fs, nchan_transport ); Loading Loading @@ -483,51 +479,16 @@ void stereo_dft_dec_open( hStereoDft->dft_trigo_8k = dft_trigo_32k; hStereoDft->dft_trigo_12k8 = dft_trigo_12k8; hStereoDft->dft_trigo_16k = dft_trigo_32k; #ifdef IVAS_FLOAT_FIXED switch (output_Fs) { case 48000: hStereoDft->ONE_NFFT = (Word32) ( 0x00222222 ); BREAK; case 32000: hStereoDft->ONE_NFFT = (Word32) ( 0x00333333 ); BREAK; case 16000: hStereoDft->ONE_NFFT = (Word32) ( 0x00666666 ); BREAK; case 8000: hStereoDft->ONE_NFFT = (Word32) ( 0x00CCCCCC ); BREAK; default: assert(0); } hStereoDft->dft_trigo_8k_fx = dft_trigo_32k_fx; hStereoDft->dft_trigo_12k8_fx = dft_trigo_12k8_fx; hStereoDft->dft_trigo_16k_fx = dft_trigo_32k_fx; #endif hStereoDft->dft32ms_ovl = (int16_t) ( ( STEREO_DFT32MS_OVL_MAX * output_Fs ) / 48000 ); hStereoDft->win232ms_8k = dft_win232ms_8k; hStereoDft->win232ms_12k8 = dft_win232ms_12k8; hStereoDft->win232ms_16k = dft_win232ms_16k; #ifdef IVAS_FLOAT_FIXED hStereoDft->win232ms_8k_fx = dft_win232ms_8k_fx; hStereoDft->win232ms_12k8_fx = dft_win232ms_12k8_fx; hStereoDft->win232ms_16k_fx = dft_win232ms_16k_fx; #endif hStereoDft->dft32ms_ovl2 = (int16_t) ( ( STEREO_DFT32MS_OVL2_MAX * output_Fs ) / 48000 ); hStereoDft->win32ms_8k = dft_win232ms_8k + 1; hStereoDft->win32ms_12k8 = dft_win232ms_12k8 + 1; hStereoDft->win32ms_16k = dft_win232ms_16k + 1; #ifdef IVAS_FLOAT_FIXED hStereoDft->win32ms_8k_fx = dft_win232ms_8k_fx + 1; hStereoDft->win32ms_12k8_fx = dft_win232ms_12k8_fx + 1; hStereoDft->win32ms_16k_fx = dft_win232ms_16k_fx + 1; #endif if ( output_Fs == 16000 ) { Loading @@ -535,12 +496,6 @@ void stereo_dft_dec_open( hStereoDft->dft_trigo_step = STEREO_DFT_TRIGO_SRATE_16k_STEP; hStereoDft->win232ms = dft_win232ms_16k; hStereoDft->win32ms = dft_win232ms_16k + 1; #ifdef IVAS_FLOAT_FIXED hStereoDft->dft_trigo_fx = dft_trigo_32k_fx; hStereoDft->win232ms_fx = dft_win232ms_16k_fx; hStereoDft->win32ms_fx = dft_win232ms_16k_fx + 1; #endif } else if ( output_Fs == 32000 ) { Loading @@ -548,12 +503,6 @@ void stereo_dft_dec_open( hStereoDft->dft_trigo_step = STEREO_DFT_TRIGO_SRATE_32k_STEP; hStereoDft->win232ms = dft_win232ms_32k; hStereoDft->win32ms = dft_win232ms_32k + 1; #ifdef IVAS_FLOAT_FIXED hStereoDft->dft_trigo_fx = dft_trigo_32k_fx; hStereoDft->win232ms_fx = dft_win232ms_32k_fx; hStereoDft->win32ms_fx = dft_win232ms_32k_fx + 1; #endif } else { Loading @@ -562,27 +511,14 @@ void stereo_dft_dec_open( hStereoDft->dft_trigo_step = STEREO_DFT_TRIGO_SRATE_48k_STEP; hStereoDft->win232ms = dft_win232ms_48k; hStereoDft->win32ms = dft_win232ms_48k + 1; #ifdef IVAS_FLOAT_FIXED hStereoDft->dft_trigo_fx = dft_trigo_48k_fx; hStereoDft->win232ms_fx = dft_win232ms_48k_fx; hStereoDft->win32ms_fx = dft_win232ms_48k_fx + 1; #endif } hStereoDft->win_8k = dft_win_8k; #ifdef IVAS_FLOAT_FIXED hStereoDft->win_8k_fx = dft_win_8k_fx; #endif /*Bands: find the number of bands, Nyquist freq. is not taken into account*/ set_s( hStereoDft->band_res, hStereoDft->hConfig->band_res, STEREO_DFT_DEC_DFT_NB ); #ifdef IVAS_FLOAT_FIXED hStereoDft->nbands = stereo_dft_band_config_fx( hStereoDft->band_limits, hStereoDft->band_res[0], hStereoDft->NFFT, DEC ); #else hStereoDft->nbands = stereo_dft_band_config( hStereoDft->band_limits, hStereoDft->band_res[0], hStereoDft->NFFT, DEC ); #endif hStereoDft->hb_stefi_delay = NS2SA( output_Fs, STEREO_DFT_TD_STEFI_DELAY_NS ); if ( nchan_transport > 2 ) Loading @@ -596,19 +532,6 @@ void stereo_dft_dec_open( hStereoDft->max_smooth_gains = max_smooth_gains1; } #ifdef IVAS_FLOAT_FIXED if ( nchan_transport > 2 ) { hStereoDft->min_smooth_gains_fx = min_smooth_gains2_fx; hStereoDft->max_smooth_gains_fx = max_smooth_gains2_fx; } else { hStereoDft->min_smooth_gains_fx = min_smooth_gains1_fx; hStereoDft->max_smooth_gains_fx = max_smooth_gains1_fx; } #endif /* reset DFT stereo memories */ stereo_dft_dec_reset( hStereoDft ); Loading Loading @@ -2231,11 +2154,7 @@ void stereo_dft_dec( /* make sure number of bands corresponds to output bwidth in case it is lower than parameter bwidth */ if ( output_frame < inner_frame_tbl[st0->bwidth] && !sba_dirac_stereo_flag ) { #ifdef IVAS_FLOAT_FIXED hStereoDft->nbands = stereo_dft_band_config_fx( hStereoDft->band_limits, hStereoDft->band_res[k_offset], hStereoDft->NFFT, DEC ); #else hStereoDft->nbands = stereo_dft_band_config( hStereoDft->band_limits, hStereoDft->band_res[k_offset], hStereoDft->NFFT, DEC ); #endif } if ( !st0->bfi ) Loading Loading @@ -2304,11 +2223,7 @@ void stereo_dft_dec( if ( hStereoDft->frame_sid_nodata && !sba_dirac_stereo_flag ) { NFFT_inner = STEREO_DFT32MS_N_MAX * inner_frame_tbl[st0->bwidth] / L_FRAME48k; #ifdef IVAS_FLOAT_FIXED hStereoDft->nbands = stereo_dft_band_config_fx( hStereoDft->band_limits, 2, NFFT_inner, DEC ); #else hStereoDft->nbands = stereo_dft_band_config( hStereoDft->band_limits, 2, NFFT_inner, DEC ); #endif } Loading Loading @@ -2800,22 +2715,7 @@ void stereo_dft_dec_res( bass_psfilter( hCPE->hStereoDft->hBpf, hCPE->hCoreCoder[0]->Opt_AMR_WB, output, L_FRAME8k, hCPE->hCoreCoder[0]->old_pitch_buf + ( L_FRAME8k / STEREO_DFT_L_SUBFR_8k ), hCPE->hCoreCoder[0]->bpf_off, hCPE->hCoreCoder[0]->stab_fac, &hCPE->hStereoDft->stab_fac_smooth_res, hCPE->hCoreCoder[0]->last_coder_type, bpf_error_signal_8k ); #ifndef IVAS_FLOAT_FIXED res_bpf_flag = res_bpf_adapt( hCPE->hStereoDft, bpf_error_signal_8k, res_buf ); #else Word32 bpf_error_signal_8k_fx[L_FRAME8k]; Word32 res_buf_fx[STEREO_DFT_N_8k]; FOR( int k = 0; k < STEREO_DFT_N_8k; k++ ) { res_buf_fx[k] = (Word32) ( res_buf[k] * ONE_IN_Q12 ); } FOR( int k = 0; k < L_FRAME8k; k++ ) { bpf_error_signal_8k_fx[k] = (Word32) ( bpf_error_signal_8k[k] * ONE_IN_Q16 ); } res_bpf_flag = res_bpf_adapt_ivas_fx( hCPE->hStereoDft, bpf_error_signal_8k_fx, res_buf_fx ); #endif // IVAS_FLOAT_FIXED if ( prev_bfi ) { Loading lib_dec/ivas_stereo_dft_dec_fx.c +2 −2 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ #include "ivas_prot_fx.h" #include "basop_util.h" #include "prot_fx1.h" #endif // IVAS_FLOAT_FIXED /*-------------------------------------------------------------------* * Local constants Loading Loading @@ -3737,3 +3736,4 @@ void stereo_dft_dec_read_BS_fx( } #endif #endif // IVAS_FLOAT_FIXED Loading
lib_com/ivas_prot.h +7 −2 Original line number Diff line number Diff line Loading @@ -1684,8 +1684,13 @@ int16_t res_bpf_adapt( const float *bpf_error_signal_8k, /* i : BPF modification signal */ float res_buf[STEREO_DFT_N_8k] /* i : residual buffer */ ); #endif // IVAS_FLOAT_FIXED #else // IVAS_FLOAT_FIXED Word16 res_bpf_adapt_ivas_fx( STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: DFT stereo decoder handle */ const Word32 *bpf_error_signal_8k, /* i : BPF modification signal */ Word32 res_buf[STEREO_DFT_N_8k] /* i : residual buffer Q12 */ ); #endif void bpf_pitch_coherence( Decoder_State *st, /* i/o: decoder state structure */ const float pitch_buf[] /* i : pitch for each subframe [0,1,2,3] */ Loading
lib_dec/ivas_stereo_dft_dec.c +0 −100 Original line number Diff line number Diff line Loading @@ -350,11 +350,7 @@ ivas_error stereo_dft_dec_create( } else { #ifdef IVAS_FLOAT_FIXED stereo_dft_config_fx( hStereoDft_loc->hConfig, element_brate, &tmpS, &tmpS ); #else stereo_dft_config( hStereoDft_loc->hConfig, element_brate, &tmpS, &tmpS ); #endif } stereo_dft_dec_open( hStereoDft_loc, output_Fs, nchan_transport ); Loading Loading @@ -483,51 +479,16 @@ void stereo_dft_dec_open( hStereoDft->dft_trigo_8k = dft_trigo_32k; hStereoDft->dft_trigo_12k8 = dft_trigo_12k8; hStereoDft->dft_trigo_16k = dft_trigo_32k; #ifdef IVAS_FLOAT_FIXED switch (output_Fs) { case 48000: hStereoDft->ONE_NFFT = (Word32) ( 0x00222222 ); BREAK; case 32000: hStereoDft->ONE_NFFT = (Word32) ( 0x00333333 ); BREAK; case 16000: hStereoDft->ONE_NFFT = (Word32) ( 0x00666666 ); BREAK; case 8000: hStereoDft->ONE_NFFT = (Word32) ( 0x00CCCCCC ); BREAK; default: assert(0); } hStereoDft->dft_trigo_8k_fx = dft_trigo_32k_fx; hStereoDft->dft_trigo_12k8_fx = dft_trigo_12k8_fx; hStereoDft->dft_trigo_16k_fx = dft_trigo_32k_fx; #endif hStereoDft->dft32ms_ovl = (int16_t) ( ( STEREO_DFT32MS_OVL_MAX * output_Fs ) / 48000 ); hStereoDft->win232ms_8k = dft_win232ms_8k; hStereoDft->win232ms_12k8 = dft_win232ms_12k8; hStereoDft->win232ms_16k = dft_win232ms_16k; #ifdef IVAS_FLOAT_FIXED hStereoDft->win232ms_8k_fx = dft_win232ms_8k_fx; hStereoDft->win232ms_12k8_fx = dft_win232ms_12k8_fx; hStereoDft->win232ms_16k_fx = dft_win232ms_16k_fx; #endif hStereoDft->dft32ms_ovl2 = (int16_t) ( ( STEREO_DFT32MS_OVL2_MAX * output_Fs ) / 48000 ); hStereoDft->win32ms_8k = dft_win232ms_8k + 1; hStereoDft->win32ms_12k8 = dft_win232ms_12k8 + 1; hStereoDft->win32ms_16k = dft_win232ms_16k + 1; #ifdef IVAS_FLOAT_FIXED hStereoDft->win32ms_8k_fx = dft_win232ms_8k_fx + 1; hStereoDft->win32ms_12k8_fx = dft_win232ms_12k8_fx + 1; hStereoDft->win32ms_16k_fx = dft_win232ms_16k_fx + 1; #endif if ( output_Fs == 16000 ) { Loading @@ -535,12 +496,6 @@ void stereo_dft_dec_open( hStereoDft->dft_trigo_step = STEREO_DFT_TRIGO_SRATE_16k_STEP; hStereoDft->win232ms = dft_win232ms_16k; hStereoDft->win32ms = dft_win232ms_16k + 1; #ifdef IVAS_FLOAT_FIXED hStereoDft->dft_trigo_fx = dft_trigo_32k_fx; hStereoDft->win232ms_fx = dft_win232ms_16k_fx; hStereoDft->win32ms_fx = dft_win232ms_16k_fx + 1; #endif } else if ( output_Fs == 32000 ) { Loading @@ -548,12 +503,6 @@ void stereo_dft_dec_open( hStereoDft->dft_trigo_step = STEREO_DFT_TRIGO_SRATE_32k_STEP; hStereoDft->win232ms = dft_win232ms_32k; hStereoDft->win32ms = dft_win232ms_32k + 1; #ifdef IVAS_FLOAT_FIXED hStereoDft->dft_trigo_fx = dft_trigo_32k_fx; hStereoDft->win232ms_fx = dft_win232ms_32k_fx; hStereoDft->win32ms_fx = dft_win232ms_32k_fx + 1; #endif } else { Loading @@ -562,27 +511,14 @@ void stereo_dft_dec_open( hStereoDft->dft_trigo_step = STEREO_DFT_TRIGO_SRATE_48k_STEP; hStereoDft->win232ms = dft_win232ms_48k; hStereoDft->win32ms = dft_win232ms_48k + 1; #ifdef IVAS_FLOAT_FIXED hStereoDft->dft_trigo_fx = dft_trigo_48k_fx; hStereoDft->win232ms_fx = dft_win232ms_48k_fx; hStereoDft->win32ms_fx = dft_win232ms_48k_fx + 1; #endif } hStereoDft->win_8k = dft_win_8k; #ifdef IVAS_FLOAT_FIXED hStereoDft->win_8k_fx = dft_win_8k_fx; #endif /*Bands: find the number of bands, Nyquist freq. is not taken into account*/ set_s( hStereoDft->band_res, hStereoDft->hConfig->band_res, STEREO_DFT_DEC_DFT_NB ); #ifdef IVAS_FLOAT_FIXED hStereoDft->nbands = stereo_dft_band_config_fx( hStereoDft->band_limits, hStereoDft->band_res[0], hStereoDft->NFFT, DEC ); #else hStereoDft->nbands = stereo_dft_band_config( hStereoDft->band_limits, hStereoDft->band_res[0], hStereoDft->NFFT, DEC ); #endif hStereoDft->hb_stefi_delay = NS2SA( output_Fs, STEREO_DFT_TD_STEFI_DELAY_NS ); if ( nchan_transport > 2 ) Loading @@ -596,19 +532,6 @@ void stereo_dft_dec_open( hStereoDft->max_smooth_gains = max_smooth_gains1; } #ifdef IVAS_FLOAT_FIXED if ( nchan_transport > 2 ) { hStereoDft->min_smooth_gains_fx = min_smooth_gains2_fx; hStereoDft->max_smooth_gains_fx = max_smooth_gains2_fx; } else { hStereoDft->min_smooth_gains_fx = min_smooth_gains1_fx; hStereoDft->max_smooth_gains_fx = max_smooth_gains1_fx; } #endif /* reset DFT stereo memories */ stereo_dft_dec_reset( hStereoDft ); Loading Loading @@ -2231,11 +2154,7 @@ void stereo_dft_dec( /* make sure number of bands corresponds to output bwidth in case it is lower than parameter bwidth */ if ( output_frame < inner_frame_tbl[st0->bwidth] && !sba_dirac_stereo_flag ) { #ifdef IVAS_FLOAT_FIXED hStereoDft->nbands = stereo_dft_band_config_fx( hStereoDft->band_limits, hStereoDft->band_res[k_offset], hStereoDft->NFFT, DEC ); #else hStereoDft->nbands = stereo_dft_band_config( hStereoDft->band_limits, hStereoDft->band_res[k_offset], hStereoDft->NFFT, DEC ); #endif } if ( !st0->bfi ) Loading Loading @@ -2304,11 +2223,7 @@ void stereo_dft_dec( if ( hStereoDft->frame_sid_nodata && !sba_dirac_stereo_flag ) { NFFT_inner = STEREO_DFT32MS_N_MAX * inner_frame_tbl[st0->bwidth] / L_FRAME48k; #ifdef IVAS_FLOAT_FIXED hStereoDft->nbands = stereo_dft_band_config_fx( hStereoDft->band_limits, 2, NFFT_inner, DEC ); #else hStereoDft->nbands = stereo_dft_band_config( hStereoDft->band_limits, 2, NFFT_inner, DEC ); #endif } Loading Loading @@ -2800,22 +2715,7 @@ void stereo_dft_dec_res( bass_psfilter( hCPE->hStereoDft->hBpf, hCPE->hCoreCoder[0]->Opt_AMR_WB, output, L_FRAME8k, hCPE->hCoreCoder[0]->old_pitch_buf + ( L_FRAME8k / STEREO_DFT_L_SUBFR_8k ), hCPE->hCoreCoder[0]->bpf_off, hCPE->hCoreCoder[0]->stab_fac, &hCPE->hStereoDft->stab_fac_smooth_res, hCPE->hCoreCoder[0]->last_coder_type, bpf_error_signal_8k ); #ifndef IVAS_FLOAT_FIXED res_bpf_flag = res_bpf_adapt( hCPE->hStereoDft, bpf_error_signal_8k, res_buf ); #else Word32 bpf_error_signal_8k_fx[L_FRAME8k]; Word32 res_buf_fx[STEREO_DFT_N_8k]; FOR( int k = 0; k < STEREO_DFT_N_8k; k++ ) { res_buf_fx[k] = (Word32) ( res_buf[k] * ONE_IN_Q12 ); } FOR( int k = 0; k < L_FRAME8k; k++ ) { bpf_error_signal_8k_fx[k] = (Word32) ( bpf_error_signal_8k[k] * ONE_IN_Q16 ); } res_bpf_flag = res_bpf_adapt_ivas_fx( hCPE->hStereoDft, bpf_error_signal_8k_fx, res_buf_fx ); #endif // IVAS_FLOAT_FIXED if ( prev_bfi ) { Loading
lib_dec/ivas_stereo_dft_dec_fx.c +2 −2 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ #include "ivas_prot_fx.h" #include "basop_util.h" #include "prot_fx1.h" #endif // IVAS_FLOAT_FIXED /*-------------------------------------------------------------------* * Local constants Loading Loading @@ -3737,3 +3736,4 @@ void stereo_dft_dec_read_BS_fx( } #endif #endif // IVAS_FLOAT_FIXED