Loading .gitlab-ci.yml +1 −1 Original line number Diff line number Diff line Loading @@ -654,7 +654,7 @@ build-codec-linux-make: rules: - if: $CI_PIPELINE_SOURCE == 'web' - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # only have MR pipelines for MRs to main - if: $CI_PIPELINE_SOURCE == 'merge_request_event' # trigger build job for all MRs - if: $CI_PIPELINE_SOURCE == 'schedule' - if: $CI_PIPELINE_SOURCE == 'push' when: never Loading lib_com/cldfb.c +36 −25 Original line number Diff line number Diff line Loading @@ -1829,54 +1829,43 @@ ivas_error openCldfb_ivas( ivas_error openCldfb_ivas_enc( HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle */ CLDFB_TYPE type, /* i : analysis or synthesis */ const int32_t sampling_rate, /* i : sampling rate */ const Word32 sampling_rate, /* i : sampling rate */ CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */ ) { HANDLE_CLDFB_FILTER_BANK hs; int16_t buf_len; Word16 buf_len; if ( ( hs = (HANDLE_CLDFB_FILTER_BANK) malloc( sizeof( CLDFB_FILTER_BANK ) ) ) == NULL ) IF( ( hs = (HANDLE_CLDFB_FILTER_BANK) malloc( sizeof( CLDFB_FILTER_BANK ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" ); } hs->type = type; move32(); hs->prototype = prototype; move32(); #ifndef IVAS_FLOAT_FIXED configureCldfb_ivas_enc( hs, sampling_rate ); hs->memory_flt = NULL; #else configureCldfb_ivas_enc_fx( hs, sampling_rate ); #endif hs->memory_length = 0; move32(); if ( type == CLDFB_ANALYSIS ) IF( type == CLDFB_ANALYSIS ) { buf_len = hs->p_filter_length - hs->no_channels; #ifdef IVAS_FLOAT_FIXED buf_len = sub( hs->p_filter_length, hs->no_channels ); hs->FilterStates = (Word16 *) malloc( ( 9 + 16 ) * CLDFB_getNumChannels( sampling_rate ) * sizeof( Word16 ) ); hs->FilterStates_eg = 0; #endif move16(); } else ELSE { buf_len = hs->p_filter_length; #ifdef IVAS_FLOAT_FIXED move16(); hs->FilterStates = (Word16 *) malloc( 2 * ( 9 + 16 ) * CLDFB_getNumChannels( sampling_rate ) * sizeof( Word16 ) ); hs->FilterStates_eg = 0; #endif move16(); } #ifndef IVAS_FLOAT_FIXED if ( ( hs->cldfb_state = (float *) malloc( buf_len * sizeof( float ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" ); } set_f( hs->cldfb_state, 0.0f, buf_len ); #endif #ifdef IVAS_FLOAT_FIXED if ( ( hs->cldfb_state_fx = (Word32 *) malloc( buf_len * sizeof( Word32 ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" ); Loading @@ -1890,8 +1879,6 @@ ivas_error openCldfb_ivas_enc( move16(); set16_fx( hs->FilterStates, 0, i_mult( 9 + 16, hs->no_channels ) ); set16_fx( hs->FilterStates_e, 0, sizeof( hs->FilterStates_e ) / sizeof( hs->FilterStates_e[0] ) ); #endif // IVAS_FLOAT_FIXED *h_cldfb = hs; Loading Loading @@ -2843,6 +2830,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 10; hs->da = 10; move16(); move16(); hs->rot_vec_ana_delay_re_fx = NULL; hs->rot_vec_ana_delay_im_fx = NULL; hs->rot_vec_syn_delay_re_fx = NULL; Loading @@ -2857,6 +2846,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 40; hs->da = -20; move16(); move16(); hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx; hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx; hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx; Loading Loading @@ -2884,6 +2875,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 20; hs->da = 20; move16(); move16(); hs->rot_vec_ana_delay_re_fx = NULL; hs->rot_vec_ana_delay_im_fx = NULL; hs->rot_vec_syn_delay_re_fx = NULL; Loading @@ -2898,6 +2891,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 80; hs->da = -40; move16(); move16(); hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx; hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx; hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx; Loading Loading @@ -2932,6 +2927,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 20; hs->da = 20; move16(); move16(); hs->rot_vec_ana_delay_re_fx = NULL; hs->rot_vec_ana_delay_im_fx = NULL; hs->rot_vec_syn_delay_re_fx = NULL; Loading @@ -2946,6 +2943,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 80; hs->da = -40; move16(); move16(); hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx; hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx; hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx; Loading Loading @@ -2979,6 +2978,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 30; hs->da = 30; move16(); move16(); hs->rot_vec_ana_delay_re_fx = NULL; hs->rot_vec_ana_delay_im_fx = NULL; hs->rot_vec_syn_delay_re_fx = NULL; Loading @@ -2991,6 +2992,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 120; hs->da = -60; move16(); move16(); hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx; hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx; hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx; Loading Loading @@ -3018,6 +3021,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 32; hs->da = 32; move16(); move16(); hs->rot_vec_ana_delay_re_fx = NULL; hs->rot_vec_ana_delay_im_fx = NULL; hs->rot_vec_syn_delay_re_fx = NULL; Loading @@ -3032,6 +3037,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 160; hs->da = -80; move16(); move16(); hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx; hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx; hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx; Loading Loading @@ -3065,6 +3072,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 40; hs->da = 40; move16(); move16(); hs->rot_vec_ana_delay_re_fx = NULL; hs->rot_vec_ana_delay_im_fx = NULL; hs->rot_vec_syn_delay_re_fx = NULL; Loading @@ -3079,6 +3088,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 160; hs->da = -80; move16(); move16(); hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx; hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx; hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx; Loading lib_com/cldfb_evs.c +4 −0 Original line number Diff line number Diff line Loading @@ -1405,7 +1405,11 @@ void GetEnergyCldfb( Word32 *energyLookahead, /*!< o: Q(*sf_energyLookahead) { FOR( j = 20; j < numberBandsM; j++ ) { #ifdef BASOP_NOGLOB nrg = L_add_o( nrg, L_shr_o( energyValues[k][j], s, &Overflow ), &Overflow ); #else nrg = L_add( nrg, L_shr( energyValues[k][j], s ) ); #endif } } Loading lib_com/cng_exc_fx.c +2 −1 Original line number Diff line number Diff line Loading @@ -846,7 +846,8 @@ void cng_params_postupd_ivas_fx( #endif /* BASOP_NOGLOB */ L_tmp = Mult_32_16( L_tmp, 128 ); /* 2*Q_exc+1 */ tmp = add( add( Q_exc, Q_exc ), 1 ); sp[i] = L_shr( L_tmp, sub( tmp, 6 ) ); // To do : Saturation to be re-validated. sp[i] = L_shr_sat( L_tmp, sub( tmp, 6 ) ); move32(); /* Q6 */ ptR++; Loading lib_com/cnst.h +2 −0 Original line number Diff line number Diff line Loading @@ -698,6 +698,7 @@ enum #define AUTO_REGRESSIVE 2 #define INT_FS_12k8 12800 /* internal sampling frequency */ #define ONE_BY_INT_FS_12k8_Q42 343597384 /* internal sampling frequency */ #define M 16 /* order of the LP filter @ 12.8kHz */ #define L_FRAME 256 /* frame size at 12.8kHz */ #define NB_SUBFR 4 /* number of subframes per frame */ Loading Loading @@ -750,6 +751,7 @@ enum #define E_MIN_Q11_FX 7 /* minimum allowable energy in Q11*/ #define E_MIN 0.0035f /* minimum allowable energy */ #define E_MIN_Q11_FX 7 /* minimum allowable energy in Q11*/ #define E_MIN_Q16_FX 229 /* minimum allowable energy in Q16*/ #define STEP_DELTA 0.0625f /* quantization step for tilt compensation of gaussian cb. excitation */ #define GAMMA_EV 0.92f /* weighting factor for core synthesis error weighting */ #define FORMANT_SHARPENING_NOISE_THRESHOLD 21.0f /* lp_noise level above which formant sharpening is deactivated */ Loading Loading
.gitlab-ci.yml +1 −1 Original line number Diff line number Diff line Loading @@ -654,7 +654,7 @@ build-codec-linux-make: rules: - if: $CI_PIPELINE_SOURCE == 'web' - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # only have MR pipelines for MRs to main - if: $CI_PIPELINE_SOURCE == 'merge_request_event' # trigger build job for all MRs - if: $CI_PIPELINE_SOURCE == 'schedule' - if: $CI_PIPELINE_SOURCE == 'push' when: never Loading
lib_com/cldfb.c +36 −25 Original line number Diff line number Diff line Loading @@ -1829,54 +1829,43 @@ ivas_error openCldfb_ivas( ivas_error openCldfb_ivas_enc( HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle */ CLDFB_TYPE type, /* i : analysis or synthesis */ const int32_t sampling_rate, /* i : sampling rate */ const Word32 sampling_rate, /* i : sampling rate */ CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */ ) { HANDLE_CLDFB_FILTER_BANK hs; int16_t buf_len; Word16 buf_len; if ( ( hs = (HANDLE_CLDFB_FILTER_BANK) malloc( sizeof( CLDFB_FILTER_BANK ) ) ) == NULL ) IF( ( hs = (HANDLE_CLDFB_FILTER_BANK) malloc( sizeof( CLDFB_FILTER_BANK ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" ); } hs->type = type; move32(); hs->prototype = prototype; move32(); #ifndef IVAS_FLOAT_FIXED configureCldfb_ivas_enc( hs, sampling_rate ); hs->memory_flt = NULL; #else configureCldfb_ivas_enc_fx( hs, sampling_rate ); #endif hs->memory_length = 0; move32(); if ( type == CLDFB_ANALYSIS ) IF( type == CLDFB_ANALYSIS ) { buf_len = hs->p_filter_length - hs->no_channels; #ifdef IVAS_FLOAT_FIXED buf_len = sub( hs->p_filter_length, hs->no_channels ); hs->FilterStates = (Word16 *) malloc( ( 9 + 16 ) * CLDFB_getNumChannels( sampling_rate ) * sizeof( Word16 ) ); hs->FilterStates_eg = 0; #endif move16(); } else ELSE { buf_len = hs->p_filter_length; #ifdef IVAS_FLOAT_FIXED move16(); hs->FilterStates = (Word16 *) malloc( 2 * ( 9 + 16 ) * CLDFB_getNumChannels( sampling_rate ) * sizeof( Word16 ) ); hs->FilterStates_eg = 0; #endif move16(); } #ifndef IVAS_FLOAT_FIXED if ( ( hs->cldfb_state = (float *) malloc( buf_len * sizeof( float ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" ); } set_f( hs->cldfb_state, 0.0f, buf_len ); #endif #ifdef IVAS_FLOAT_FIXED if ( ( hs->cldfb_state_fx = (Word32 *) malloc( buf_len * sizeof( Word32 ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" ); Loading @@ -1890,8 +1879,6 @@ ivas_error openCldfb_ivas_enc( move16(); set16_fx( hs->FilterStates, 0, i_mult( 9 + 16, hs->no_channels ) ); set16_fx( hs->FilterStates_e, 0, sizeof( hs->FilterStates_e ) / sizeof( hs->FilterStates_e[0] ) ); #endif // IVAS_FLOAT_FIXED *h_cldfb = hs; Loading Loading @@ -2843,6 +2830,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 10; hs->da = 10; move16(); move16(); hs->rot_vec_ana_delay_re_fx = NULL; hs->rot_vec_ana_delay_im_fx = NULL; hs->rot_vec_syn_delay_re_fx = NULL; Loading @@ -2857,6 +2846,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 40; hs->da = -20; move16(); move16(); hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx; hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx; hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx; Loading Loading @@ -2884,6 +2875,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 20; hs->da = 20; move16(); move16(); hs->rot_vec_ana_delay_re_fx = NULL; hs->rot_vec_ana_delay_im_fx = NULL; hs->rot_vec_syn_delay_re_fx = NULL; Loading @@ -2898,6 +2891,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 80; hs->da = -40; move16(); move16(); hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx; hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx; hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx; Loading Loading @@ -2932,6 +2927,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 20; hs->da = 20; move16(); move16(); hs->rot_vec_ana_delay_re_fx = NULL; hs->rot_vec_ana_delay_im_fx = NULL; hs->rot_vec_syn_delay_re_fx = NULL; Loading @@ -2946,6 +2943,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 80; hs->da = -40; move16(); move16(); hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx; hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx; hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx; Loading Loading @@ -2979,6 +2978,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 30; hs->da = 30; move16(); move16(); hs->rot_vec_ana_delay_re_fx = NULL; hs->rot_vec_ana_delay_im_fx = NULL; hs->rot_vec_syn_delay_re_fx = NULL; Loading @@ -2991,6 +2992,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 120; hs->da = -60; move16(); move16(); hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx; hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx; hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx; Loading Loading @@ -3018,6 +3021,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 32; hs->da = 32; move16(); move16(); hs->rot_vec_ana_delay_re_fx = NULL; hs->rot_vec_ana_delay_im_fx = NULL; hs->rot_vec_syn_delay_re_fx = NULL; Loading @@ -3032,6 +3037,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 160; hs->da = -80; move16(); move16(); hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx; hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx; hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx; Loading Loading @@ -3065,6 +3072,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 40; hs->da = 40; move16(); move16(); hs->rot_vec_ana_delay_re_fx = NULL; hs->rot_vec_ana_delay_im_fx = NULL; hs->rot_vec_syn_delay_re_fx = NULL; Loading @@ -3079,6 +3088,8 @@ static void cldfb_init_proto_and_twiddles_enc_fx( { hs->ds = 160; hs->da = -80; move16(); move16(); hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx; hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx; hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx; Loading
lib_com/cldfb_evs.c +4 −0 Original line number Diff line number Diff line Loading @@ -1405,7 +1405,11 @@ void GetEnergyCldfb( Word32 *energyLookahead, /*!< o: Q(*sf_energyLookahead) { FOR( j = 20; j < numberBandsM; j++ ) { #ifdef BASOP_NOGLOB nrg = L_add_o( nrg, L_shr_o( energyValues[k][j], s, &Overflow ), &Overflow ); #else nrg = L_add( nrg, L_shr( energyValues[k][j], s ) ); #endif } } Loading
lib_com/cng_exc_fx.c +2 −1 Original line number Diff line number Diff line Loading @@ -846,7 +846,8 @@ void cng_params_postupd_ivas_fx( #endif /* BASOP_NOGLOB */ L_tmp = Mult_32_16( L_tmp, 128 ); /* 2*Q_exc+1 */ tmp = add( add( Q_exc, Q_exc ), 1 ); sp[i] = L_shr( L_tmp, sub( tmp, 6 ) ); // To do : Saturation to be re-validated. sp[i] = L_shr_sat( L_tmp, sub( tmp, 6 ) ); move32(); /* Q6 */ ptR++; Loading
lib_com/cnst.h +2 −0 Original line number Diff line number Diff line Loading @@ -698,6 +698,7 @@ enum #define AUTO_REGRESSIVE 2 #define INT_FS_12k8 12800 /* internal sampling frequency */ #define ONE_BY_INT_FS_12k8_Q42 343597384 /* internal sampling frequency */ #define M 16 /* order of the LP filter @ 12.8kHz */ #define L_FRAME 256 /* frame size at 12.8kHz */ #define NB_SUBFR 4 /* number of subframes per frame */ Loading Loading @@ -750,6 +751,7 @@ enum #define E_MIN_Q11_FX 7 /* minimum allowable energy in Q11*/ #define E_MIN 0.0035f /* minimum allowable energy */ #define E_MIN_Q11_FX 7 /* minimum allowable energy in Q11*/ #define E_MIN_Q16_FX 229 /* minimum allowable energy in Q16*/ #define STEP_DELTA 0.0625f /* quantization step for tilt compensation of gaussian cb. excitation */ #define GAMMA_EV 0.92f /* weighting factor for core synthesis error weighting */ #define FORMANT_SHARPENING_NOISE_THRESHOLD 21.0f /* lp_noise level above which formant sharpening is deactivated */ Loading