Loading lib_com/ivas_stat_com.h +3 −1 Original line number Diff line number Diff line Loading @@ -75,7 +75,9 @@ typedef struct int16_t ism_md_fec_cnt_enc; /* counter of continuous frames where MD are not transmitted */ int16_t ism_md_inc_diff_cnt; /* counter of continuous frames where MD are transmitted in inactive segments when MD significantly changes */ #endif #ifdef FIX_435_ISM_MERGE_BUG float last_true_radius; /* last true Q radius value */ #endif } ISM_METADATA_FRAME, *ISM_METADATA_HANDLE; Loading lib_com/options.h +6 −0 Original line number Diff line number Diff line Loading @@ -157,10 +157,14 @@ #define FIX_422 /* FhG: Issue 422: re-introduce fix for noisy speech buffer in ParamISM */ #define ERI_MSVQ_CLEANUP /* Eri: Contribution #31 BE modularization of msvq encoder side DCT21&DCT24 within msvq_enc() */ #define FIX_416_ISM_BR_SWITCHING /* FhG: add missing CLDFB reconfig to ISM BR switching */ #define FIX_SP2A /* VA: Issue 412: Adjust threshold for the S_p2a feature in the tonal detector */ #define FIX_413_SBA_DTX /* Dlb: Fix for issue 413, SBA DTX CNG in 2TC mode*/ #define FIX_417_TD_DECORR_BRATE_SW /* VA: Issue 417: fix incorrect use of TD decorrelator in bitrate switching */ #define FIX_368_SBA_MODE /* Dlb: Fix for issue 368 */ #define FIX_427_MAXIMUM_S_INDEX /* VA: issue 427: fix return index of function maximum_s() */ #define FIX_431_PARAMMC_PLC_INTERPOLATOR /* FhG: Issue 431: fix missing interpolator reset for ParamMC PCL */ #define FIX_391_SBA /* Dlb: Fix for issue 391 for SBA */ Loading @@ -169,6 +173,8 @@ #define EUALER2QUAT_FIX /*Dlb :fix for issue 430 issue in euler2quat, sign of quat y is inverted*/ #define HR_METADATA /* Nok: encode directional MASA metadata with more bits at 384k and 512k */ #define FIX_435_ISM_MERGE_BUG /* Eri: Merge bug fix for ISM NULL metadata and tcx_only cases */ #define FIX_355_REFACTOR_PARAMBIN_TO_5MS /* Nokia: Fixes issue 355 by refactoring parametric binauralizer code to 5 ms mode */ /* ################## End DEVELOPMENT switches ######################### */ Loading lib_com/prot.h +37 −0 Original line number Diff line number Diff line Loading @@ -8076,6 +8076,7 @@ void msvq_dec( Word16 *uq_ind /* o : quantized vector (fixed point) */ ); void dec_FDCNG_MSVQ_stage1( int16_t j_full, /* i: index full range */ int16_t n, /* i: dimension to generate */ Loading Loading @@ -8112,6 +8113,42 @@ void extend_dctN_input( const int16_t n_cols, /* i: number of columns == truncation length */ DCTTYPE dcttype ); /* i: matrix type */ #ifdef ERI_MSVQ_CLEANUP int16_t msvq_stage1_dct_search( /* o : (p_max , best candidate sofar ) */ const float *u, /* i : target */ const int16_t N, /* i : target length and IDCT synthesis length */ const int16_t maxC_st1, /* i : number of final stage 1 candidates to provide */ const DCTTYPE dcttype, /* e.g. DCT_T2_16_XX, DCT_T2_24_XX; */ const int16_t max_dct_trunc, /* i: maximum of truncation lenghts */ float *invTrfMatrix, /* i : IDCT synthesis matrix for dim N */ const float *midQ_truncQ, /* i: midQ vector */ const float *dct_invScaleF, /* i: global inv scale factors*/ const float *dct_scaleF, /* i: global scale factors*/ const Word16 n_segm, /* i: number of segments */ const Word16 *cols_per_segment, /* i: remaining length per segment */ const Word16 *trunc_dct_cols_per_segment, /* i: trunc length per segment */ const Word16 *entries_per_segment, /* i: number of rows per segment */ const Word16 *cum_entries_per_segment, /* i: number of cumulative entries */ const Word8 *const W8Qx_dct_sections[], /*i: Word8(byte) segment table ptrs */ const Word16 *col_syn_shift[], /*i: columnwise syn shift tables */ const Word8 *segm_neighbour_fwd, /*i: circular neighbour list fwd */ const Word8 *segm_neighbour_rev, /*i: circular neighbour list reverse */ const Word16 npost_check, /*i: number of neigbours to check , should be even */ float *st1_mse_ptr, /*i: dynRAM buffer for MSEs */ int16_t *indices_st1_local, /*o: selected cand indices */ float *st1_syn_vec_ptr, /*i/o: buffer for IDCT24 synthesis */ float *dist1_ptr /*o: resulting stage 1 MSEs in DCT-N domain */ ); int16_t msvq_stage1_dct_recalc_candidates_fdcng_wb( /* o : (updated p_max) */ const float *st1_syn_vec_ptr, /* i : IDCT24 synthesis vectors */ const float *u, /* i : target signal */ const int16_t maxC_st1, /* i : number of candidates in stage1 */ float *dist_ptr /* i/o: updated MSE vector for stage1 */ ); #endif void PulseResynchronization( const float *src_exc, /* i : Input excitation buffer */ float *dst_exc, /* o : output excitation buffer */ Loading lib_enc/dtx.c +6 −6 Original line number Diff line number Diff line Loading @@ -64,8 +64,11 @@ #define LTE_VAR -4.0f #define MAX_BRATE_DTX_EVS ACELP_24k40 /* maximum bitrate to which the default DTX is applied in EVS; otherwise DTX is applied only in silence */ #ifndef FIX_368_SBA_MODE #define MAX_BRATE_DTX_IVAS IVAS_64k /* maximum bitrate to which the default DTX is applied in IVAS; otherwise DTX is applied only in silence */ #else #define MAX_BRATE_DTX_IVAS IVAS_80k /* maximum bitrate to which the default DTX is applied in IVAS; otherwise DTX is applied only in silence */ #endif /*-------------------------------------------------------------------* * Local function prototypes *-------------------------------------------------------------------*/ Loading @@ -86,9 +89,7 @@ void dtx( ) { float alpha; DTX_ENC_HANDLE hDtxEnc = st->hDtxEnc; int16_t last_br_cng_flag, last_br_flag, br_dtx_flag; if ( st->dtx_sce_sba != 0 ) { Loading @@ -99,7 +100,6 @@ void dtx( else { last_br_cng_flag = st->last_total_brate_cng <= MAX_BRATE_DTX_EVS || st->lp_noise < 15 || ( st->element_mode == IVAS_SCE && st->last_total_brate_cng <= MAX_BRATE_DTX_IVAS ); last_br_flag = st->last_total_brate <= MAX_BRATE_DTX_EVS || st->lp_noise < 15 || ( st->element_mode == IVAS_SCE && st->last_total_brate <= MAX_BRATE_DTX_IVAS ); br_dtx_flag = 0; } Loading lib_enc/fd_cng_enc.c +1 −0 Original line number Diff line number Diff line Loading @@ -1264,6 +1264,7 @@ void FdCngEncodeDiracMDCTStereoSID( E[0] = sum_f( ms_ptr[0], NPART ); /* TBD Note: NPART should likely be N[0] if N[0] may change */ /* Quantize M noise shape */ /* Normalize MSVQ input */ gain[0] = sum_f( ms_ptr[0] + N_GAIN_MIN, N_GAIN_MAX - N_GAIN_MIN ); Loading Loading
lib_com/ivas_stat_com.h +3 −1 Original line number Diff line number Diff line Loading @@ -75,7 +75,9 @@ typedef struct int16_t ism_md_fec_cnt_enc; /* counter of continuous frames where MD are not transmitted */ int16_t ism_md_inc_diff_cnt; /* counter of continuous frames where MD are transmitted in inactive segments when MD significantly changes */ #endif #ifdef FIX_435_ISM_MERGE_BUG float last_true_radius; /* last true Q radius value */ #endif } ISM_METADATA_FRAME, *ISM_METADATA_HANDLE; Loading
lib_com/options.h +6 −0 Original line number Diff line number Diff line Loading @@ -157,10 +157,14 @@ #define FIX_422 /* FhG: Issue 422: re-introduce fix for noisy speech buffer in ParamISM */ #define ERI_MSVQ_CLEANUP /* Eri: Contribution #31 BE modularization of msvq encoder side DCT21&DCT24 within msvq_enc() */ #define FIX_416_ISM_BR_SWITCHING /* FhG: add missing CLDFB reconfig to ISM BR switching */ #define FIX_SP2A /* VA: Issue 412: Adjust threshold for the S_p2a feature in the tonal detector */ #define FIX_413_SBA_DTX /* Dlb: Fix for issue 413, SBA DTX CNG in 2TC mode*/ #define FIX_417_TD_DECORR_BRATE_SW /* VA: Issue 417: fix incorrect use of TD decorrelator in bitrate switching */ #define FIX_368_SBA_MODE /* Dlb: Fix for issue 368 */ #define FIX_427_MAXIMUM_S_INDEX /* VA: issue 427: fix return index of function maximum_s() */ #define FIX_431_PARAMMC_PLC_INTERPOLATOR /* FhG: Issue 431: fix missing interpolator reset for ParamMC PCL */ #define FIX_391_SBA /* Dlb: Fix for issue 391 for SBA */ Loading @@ -169,6 +173,8 @@ #define EUALER2QUAT_FIX /*Dlb :fix for issue 430 issue in euler2quat, sign of quat y is inverted*/ #define HR_METADATA /* Nok: encode directional MASA metadata with more bits at 384k and 512k */ #define FIX_435_ISM_MERGE_BUG /* Eri: Merge bug fix for ISM NULL metadata and tcx_only cases */ #define FIX_355_REFACTOR_PARAMBIN_TO_5MS /* Nokia: Fixes issue 355 by refactoring parametric binauralizer code to 5 ms mode */ /* ################## End DEVELOPMENT switches ######################### */ Loading
lib_com/prot.h +37 −0 Original line number Diff line number Diff line Loading @@ -8076,6 +8076,7 @@ void msvq_dec( Word16 *uq_ind /* o : quantized vector (fixed point) */ ); void dec_FDCNG_MSVQ_stage1( int16_t j_full, /* i: index full range */ int16_t n, /* i: dimension to generate */ Loading Loading @@ -8112,6 +8113,42 @@ void extend_dctN_input( const int16_t n_cols, /* i: number of columns == truncation length */ DCTTYPE dcttype ); /* i: matrix type */ #ifdef ERI_MSVQ_CLEANUP int16_t msvq_stage1_dct_search( /* o : (p_max , best candidate sofar ) */ const float *u, /* i : target */ const int16_t N, /* i : target length and IDCT synthesis length */ const int16_t maxC_st1, /* i : number of final stage 1 candidates to provide */ const DCTTYPE dcttype, /* e.g. DCT_T2_16_XX, DCT_T2_24_XX; */ const int16_t max_dct_trunc, /* i: maximum of truncation lenghts */ float *invTrfMatrix, /* i : IDCT synthesis matrix for dim N */ const float *midQ_truncQ, /* i: midQ vector */ const float *dct_invScaleF, /* i: global inv scale factors*/ const float *dct_scaleF, /* i: global scale factors*/ const Word16 n_segm, /* i: number of segments */ const Word16 *cols_per_segment, /* i: remaining length per segment */ const Word16 *trunc_dct_cols_per_segment, /* i: trunc length per segment */ const Word16 *entries_per_segment, /* i: number of rows per segment */ const Word16 *cum_entries_per_segment, /* i: number of cumulative entries */ const Word8 *const W8Qx_dct_sections[], /*i: Word8(byte) segment table ptrs */ const Word16 *col_syn_shift[], /*i: columnwise syn shift tables */ const Word8 *segm_neighbour_fwd, /*i: circular neighbour list fwd */ const Word8 *segm_neighbour_rev, /*i: circular neighbour list reverse */ const Word16 npost_check, /*i: number of neigbours to check , should be even */ float *st1_mse_ptr, /*i: dynRAM buffer for MSEs */ int16_t *indices_st1_local, /*o: selected cand indices */ float *st1_syn_vec_ptr, /*i/o: buffer for IDCT24 synthesis */ float *dist1_ptr /*o: resulting stage 1 MSEs in DCT-N domain */ ); int16_t msvq_stage1_dct_recalc_candidates_fdcng_wb( /* o : (updated p_max) */ const float *st1_syn_vec_ptr, /* i : IDCT24 synthesis vectors */ const float *u, /* i : target signal */ const int16_t maxC_st1, /* i : number of candidates in stage1 */ float *dist_ptr /* i/o: updated MSE vector for stage1 */ ); #endif void PulseResynchronization( const float *src_exc, /* i : Input excitation buffer */ float *dst_exc, /* o : output excitation buffer */ Loading
lib_enc/dtx.c +6 −6 Original line number Diff line number Diff line Loading @@ -64,8 +64,11 @@ #define LTE_VAR -4.0f #define MAX_BRATE_DTX_EVS ACELP_24k40 /* maximum bitrate to which the default DTX is applied in EVS; otherwise DTX is applied only in silence */ #ifndef FIX_368_SBA_MODE #define MAX_BRATE_DTX_IVAS IVAS_64k /* maximum bitrate to which the default DTX is applied in IVAS; otherwise DTX is applied only in silence */ #else #define MAX_BRATE_DTX_IVAS IVAS_80k /* maximum bitrate to which the default DTX is applied in IVAS; otherwise DTX is applied only in silence */ #endif /*-------------------------------------------------------------------* * Local function prototypes *-------------------------------------------------------------------*/ Loading @@ -86,9 +89,7 @@ void dtx( ) { float alpha; DTX_ENC_HANDLE hDtxEnc = st->hDtxEnc; int16_t last_br_cng_flag, last_br_flag, br_dtx_flag; if ( st->dtx_sce_sba != 0 ) { Loading @@ -99,7 +100,6 @@ void dtx( else { last_br_cng_flag = st->last_total_brate_cng <= MAX_BRATE_DTX_EVS || st->lp_noise < 15 || ( st->element_mode == IVAS_SCE && st->last_total_brate_cng <= MAX_BRATE_DTX_IVAS ); last_br_flag = st->last_total_brate <= MAX_BRATE_DTX_EVS || st->lp_noise < 15 || ( st->element_mode == IVAS_SCE && st->last_total_brate <= MAX_BRATE_DTX_IVAS ); br_dtx_flag = 0; } Loading
lib_enc/fd_cng_enc.c +1 −0 Original line number Diff line number Diff line Loading @@ -1264,6 +1264,7 @@ void FdCngEncodeDiracMDCTStereoSID( E[0] = sum_f( ms_ptr[0], NPART ); /* TBD Note: NPART should likely be N[0] if N[0] may change */ /* Quantize M noise shape */ /* Normalize MSVQ input */ gain[0] = sum_f( ms_ptr[0] + N_GAIN_MIN, N_GAIN_MAX - N_GAIN_MIN ); Loading