diff --git a/lib_com/ivas_stereo_td_bit_alloc.c b/lib_com/ivas_stereo_td_bit_alloc.c index cdcfa3cbc10f49f2a435a4a2fc8770875f7ad724..07bdfb73a8bc0ad506554b79e8d020befc97db17 100644 --- a/lib_com/ivas_stereo_td_bit_alloc.c +++ b/lib_com/ivas_stereo_td_bit_alloc.c @@ -456,17 +456,48 @@ void td_stereo_param_updt( if ( tdm_use_IAWB_Ave_lpc == 1 ) { mvr2r( IAWB_Ave, tdm_lsfQ_PCh, M ); + +#ifdef FIX_1111_TDM_LSP_BUFFER + if ( tdm_lspQ_PCh != NULL ) + { + lsf2lsp( tdm_lsfQ_PCh, tdm_lspQ_PCh, M, INT_FS_12k8 ); + } +#else lsf2lsp( tdm_lsfQ_PCh, tdm_lspQ_PCh, M, INT_FS_12k8 ); +#endif } else if ( flag_ACELP16k == 1 ) { +#ifdef FIX_1111_TDM_LSP_BUFFER + if ( tdm_lspQ_PCh != NULL ) + { + mvr2r( lsp_old_PCh, tdm_lspQ_PCh, M ); + lsp_convert_poly( tdm_lspQ_PCh, L_FRAME, 0 ); + lsp2lsf( tdm_lspQ_PCh, tdm_lsfQ_PCh, M, INT_FS_12k8 ); + } + else + { + float lsp_temp[M]; + mvr2r( lsp_old_PCh, lsp_temp, M ); + lsp_convert_poly( lsp_temp, L_FRAME, 0 ); + lsp2lsf( lsp_temp, tdm_lsfQ_PCh, M, INT_FS_12k8 ); + } +#else mvr2r( lsp_old_PCh, tdm_lspQ_PCh, M ); lsp_convert_poly( tdm_lspQ_PCh, L_FRAME, 0 ); lsp2lsf( tdm_lspQ_PCh, tdm_lsfQ_PCh, M, INT_FS_12k8 ); +#endif } else { +#ifdef FIX_1111_TDM_LSP_BUFFER + if ( tdm_lspQ_PCh != NULL ) + { + mvr2r( lsp_old_PCh, tdm_lspQ_PCh, M ); + } +#else mvr2r( lsp_old_PCh, tdm_lspQ_PCh, M ); +#endif mvr2r( lsf_old_PCh, tdm_lsfQ_PCh, M ); } diff --git a/lib_com/options.h b/lib_com/options.h index 02e3196e52d0c359de038b315a8ac36681f206ca..bd7e7965aeba7a811bb335d67eb794ec64bba46e 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -161,7 +161,7 @@ #define FIX_1099_JBM_MD_HANDLE_ALLOC /* VA: issue 1099: Limit the allocation of `hJbmMetadata` handle to MASA and OMASA only */ - +#define FIX_1111_TDM_LSP_BUFFER /* VA: issue 1111: remove unused buffer `tdm_lspQ_PCh[]' */ /* #################### End BE switches ################################## */ diff --git a/lib_enc/ivas_core_enc.c b/lib_enc/ivas_core_enc.c index 27161bec33b9df8d2231325bea95292c8adb5827..e8a3267687b2bee8825c8d791ac1f199862c441c 100644 --- a/lib_enc/ivas_core_enc.c +++ b/lib_enc/ivas_core_enc.c @@ -99,7 +99,11 @@ ivas_error ivas_core_enc( int16_t Voicing_flag[CPE_CHANNELS]; float pitch_buf[CPE_CHANNELS][NB_SUBFR16k]; int16_t unbits[CPE_CHANNELS]; +#ifdef FIX_1111_TDM_LSP_BUFFER + float tdm_lsfQ_PCh[M]; +#else float tdm_lspQ_PCh[M], tdm_lsfQ_PCh[M]; +#endif int16_t last_element_mode, tdm_Pitch_reuse_flag; int32_t element_brate, last_element_brate, input_Fs; int16_t diff_nBits; @@ -270,7 +274,11 @@ ivas_error ivas_core_enc( if ( st->element_mode == IVAS_CPE_TD && n == 0 ) { +#ifdef FIX_1111_TDM_LSP_BUFFER + td_stereo_param_updt( st->lsp_old, st->lsf_old, pitch_buf[0], NULL, tdm_lsfQ_PCh, hStereoTD->tdm_Pri_pitch_buf, st->flag_ACELP16k, hStereoTD->tdm_use_IAWB_Ave_lpc ); +#else td_stereo_param_updt( st->lsp_old, st->lsf_old, pitch_buf[0], tdm_lspQ_PCh, tdm_lsfQ_PCh, hStereoTD->tdm_Pri_pitch_buf, st->flag_ACELP16k, hStereoTD->tdm_use_IAWB_Ave_lpc ); +#endif } }