Loading .gitlab-ci.yml +16 −15 Original line number Diff line number Diff line Loading @@ -10,7 +10,8 @@ variables: LONG_TEST_SUITE: "tests/codec_be_on_mr_nonselection tests/renderer --param_file scripts/config/self_test_ltv.prm --use_ltv" LONG_TEST_SUITE_NO_RENDERER: "tests/codec_be_on_mr_nonselection --param_file scripts/config/self_test_ltv.prm --use_ltv" SHORT_TEST_SUITE: "tests/codec_be_on_mr_nonselection" ENCODER_TEST_SUITE: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_basop_encoder.prm" SHORT_TEST_SUITE_ENCODER: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_basop_encoder.prm" LONG_TEST_SUITE_ENCODER: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_ltv_basop_encoder.prm" TEST_SUITE: "" DUT_ENCODER_PATH: "./IVAS_cod" DUT_DECODER_PATH: "./IVAS_dec" Loading Loading @@ -733,7 +734,7 @@ build-codec-linux-debugging-make: # before_script: # - USE_LTV=0 # - DUT_DECODER_PATH=./IVAS_dec_ref # - TEST_SUITE="$SHORT_TEST_SUITE" # - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" # - LEVEL_SCALING=1.0 # <<: *ivas-pytest-on-merge-request-anchor Loading @@ -744,7 +745,7 @@ build-codec-linux-debugging-make: # before_script: # - USE_LTV=0 # - DUT_DECODER_PATH=./IVAS_dec_ref # - TEST_SUITE="$SHORT_TEST_SUITE" # - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" # - LEVEL_SCALING=0.3162 # <<: *ivas-pytest-on-merge-request-anchor Loading @@ -755,7 +756,7 @@ build-codec-linux-debugging-make: # before_script: # - USE_LTV=0 # - DUT_DECODER_PATH=./IVAS_dec_ref # - TEST_SUITE="$SHORT_TEST_SUITE" # - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" # - LEVEL_SCALING=3.162 # <<: *ivas-pytest-on-merge-request-anchor Loading Loading @@ -810,7 +811,7 @@ ivas-pytest-compare_to_ref-short-enc: - USE_LTV=0 - ENCODER_TEST="true" - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$ENCODER_TEST_SUITE" - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - LEVEL_SCALING=1.0 <<: *ivas-pytest-anchor Loading @@ -823,7 +824,7 @@ ivas-pytest-compare_to_ref-short-enc-lev-10: - USE_LTV=0 - ENCODER_TEST="true" - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$ENCODER_TEST_SUITE" - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - LEVEL_SCALING=0.3162 <<: *ivas-pytest-anchor Loading @@ -836,7 +837,7 @@ ivas-pytest-compare_to_ref-short-enc-lev+10: - USE_LTV=0 - ENCODER_TEST="true" - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$ENCODER_TEST_SUITE" - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - LEVEL_SCALING=3.162 <<: *ivas-pytest-anchor Loading @@ -846,7 +847,7 @@ ivas-pytest-enc-msan: before_script: - CLANG_NUM=1 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE=$LONG_TEST_SUITE - TEST_SUITE=$LONG_TEST_SUITE_ENCODER <<: *ivas-pytest-sanitizers-anchor ivas-pytest-enc-asan: Loading @@ -855,7 +856,7 @@ ivas-pytest-enc-asan: before_script: - CLANG_NUM=2 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE=$LONG_TEST_SUITE - TEST_SUITE=$LONG_TEST_SUITE_ENCODER <<: *ivas-pytest-sanitizers-anchor ivas-pytest-enc-usan: Loading @@ -864,7 +865,7 @@ ivas-pytest-enc-usan: before_script: - CLANG_NUM=3 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE=$ENCODER_TEST_SUITE - TEST_SUITE=$SHORT_TEST_SUITE_ENCODER <<: *ivas-pytest-sanitizers-anchor ### jobs that test flt encoder -> fx decoder Loading Loading @@ -920,7 +921,7 @@ ivas-pytest-compare-to-input-short-enc: before_script: - USE_LTV=0 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$SHORT_TEST_SUITE" - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - LEVEL_SCALING=1.0 <<: *ivas-pytest-compare-to-input-anchor Loading @@ -942,7 +943,7 @@ ivas-pytest-dec-asan: - TEST_SUITE=$LONG_TEST_SUITE_SELF_TEST <<: *ivas-pytest-sanitizers-anchor ivas-pytest-dec-usan-short: ivas-pytest-dec-usan: extends: - .test-job-linux before_script: Loading @@ -962,7 +963,7 @@ ivas-pytest-compare_ref-long-enc: before_script: - USE_LTV=1 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$LONG_TEST_SUITE" - TEST_SUITE="$LONG_TEST_SUITE_ENCODER" - LEVEL_SCALING=1.0 <<: *ivas-pytest-anchor Loading @@ -984,7 +985,7 @@ ivas-pytest-compare_ref-long-enc-lev-10: before_script: - USE_LTV=1 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$LONG_TEST_SUITE" - TEST_SUITE="$LONG_TEST_SUITE_ENCODER" - LEVEL_SCALING=0.3162 <<: *ivas-pytest-anchor Loading @@ -1006,7 +1007,7 @@ ivas-pytest-compare_ref-long-enc-lev+10: before_script: - USE_LTV=1 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$LONG_TEST_SUITE" - TEST_SUITE="$LONG_TEST_SUITE_ENCODER" - LEVEL_SCALING=3.162 <<: *ivas-pytest-anchor Loading lib_com/basop_util.c +1 −1 Original line number Diff line number Diff line Loading @@ -1555,7 +1555,7 @@ Word16 findIndexOfMinWord32( Word32 *x, const Word16 len ) Word16 imult1616( Word16 x, Word16 y ) { assert( (int) x * (int) y < 32768 && (int) x * (int) y >= -32768 ); return extract_l( L_mult0( x, y ) ); return i_mult( x, y ); } Word32 imult3216( Word32 x, Word16 y ) Loading lib_com/fft_fx.c +51 −0 Original line number Diff line number Diff line Loading @@ -7262,15 +7262,29 @@ Word16 L_norm_arr( Word32 *arr, Word16 size ) Word16 q = 31; move16(); FOR( Word16 i = 0; i < size; i++ ) #ifndef FIX_1103_OPT_L_NORM_ARR IF( arr[i] != 0 ) { q = s_min( q, norm_l( arr[i] ) ); } #else { Word16 q_tst; q_tst = norm_l( arr[i] ); if ( arr[i] != 0 ) { q = s_min( q, q_tst ); } } #endif return q; } Word16 get_min_scalefactor( Word32 x, Word32 y ) { #ifndef FIX_1104_OPT_GETMINSCALEFAC Word16 scf = Q31; move16(); test(); Loading @@ -7287,8 +7301,34 @@ Word16 get_min_scalefactor( Word32 x, Word32 y ) scf = s_min( scf, norm_l( y ) ); } return scf; #else Word16 scf_y; Word16 scf = Q31; move16(); test(); if ( x == 0 && y == 0 ) { scf = 0; move16(); } if ( x != 0 ) { scf = norm_l( x ); } scf_y = norm_l( y ); if ( y != 0 ) { scf = s_min( scf_y, scf ); } return scf; #endif } Flag is_zero_arr( Word32 *arr, Word16 size ) { FOR( Word16 i = 0; i < size; i++ ) Loading @@ -7299,3 +7339,14 @@ Flag is_zero_arr( Word32 *arr, Word16 size ) return 1; } Flag is_zero_arr16( Word16 *arr, Word16 size ) { FOR( Word16 i = 0; i < size; i++ ) IF( arr[i] != 0 ) { return 0; } return 1; } lib_com/ivas_tools.c +25 −0 Original line number Diff line number Diff line Loading @@ -308,10 +308,35 @@ void v_add_inc_fx( const Word16 N /* i : Vector length Q0*/ ) { #ifndef FIX_1107_VADDINC Word16 i; Word16 ix1 = 0; Word16 ix2 = 0; Word16 iy = 0; #else Word16 i, ix1, ix2, iy; /* The use of this function is currently always for the interleaved input format, */ /* that means, the following conditions are always true and thus obsolete. */ test(); test(); test(); test(); IF( ( sub( x_inc, 2 ) == 0 ) && ( sub( x2_inc, 2 ) == 0 ) && ( sub( y_inc, 1 ) == 0 ) && ( &x1[1] == &x2[0] ) ) { /* Interleaved input case, linear output */ FOR( i = 0; i < N; i++ ) { y[i] = L_add( x1[2 * i + 0], x1[2 * i + 1] ); /*Qx*/ move32(); } return; } ix1 = 0; ix2 = 0; iy = 0; #endif move16(); move16(); move16(); Loading lib_com/low_rate_band_att_fx.c +10 −1 Original line number Diff line number Diff line Loading @@ -75,7 +75,16 @@ void ivas_fine_gain_pred_fx( L_tmp = L_shl( xx, exp ); /*2*(15-shift)+exp */ exp = sub( 31, add( exp, sub( 30, shl( shift, 1 ) ) ) ); L_tmp = Isqrt_lc( L_tmp, &exp ); /*31 - exp */ #ifndef FIX_ISSUE_987 Mpy_32_16_ss( L_tmp, ivas_fine_gain_pred_sqrt_bw[bw_idx], &L_tmp, &lsb ); /*31-exp+11-15=27-exp */ #else Word16 norm = norm_s( bw ); Word16 tmp1, tmp_exp = sub( 15, norm ); tmp1 = Sqrt16( shl( bw, norm ), &tmp_exp ); tmp1 = shr( tmp1, sub( sub( 15, tmp_exp ), Q11 ) ); Mpy_32_16_ss( L_tmp, tmp1, &L_tmp, &lsb ); /*31-exp+11-15=27-exp */ #endif #ifdef BASOP_NOGLOB gp = round_fx_o( L_shl_o( L_tmp, add( 1, exp ), &Overflow ), &Overflow ); /*27-exp+1+exp-16=12 */ #else Loading Loading
.gitlab-ci.yml +16 −15 Original line number Diff line number Diff line Loading @@ -10,7 +10,8 @@ variables: LONG_TEST_SUITE: "tests/codec_be_on_mr_nonselection tests/renderer --param_file scripts/config/self_test_ltv.prm --use_ltv" LONG_TEST_SUITE_NO_RENDERER: "tests/codec_be_on_mr_nonselection --param_file scripts/config/self_test_ltv.prm --use_ltv" SHORT_TEST_SUITE: "tests/codec_be_on_mr_nonselection" ENCODER_TEST_SUITE: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_basop_encoder.prm" SHORT_TEST_SUITE_ENCODER: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_basop_encoder.prm" LONG_TEST_SUITE_ENCODER: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_ltv_basop_encoder.prm" TEST_SUITE: "" DUT_ENCODER_PATH: "./IVAS_cod" DUT_DECODER_PATH: "./IVAS_dec" Loading Loading @@ -733,7 +734,7 @@ build-codec-linux-debugging-make: # before_script: # - USE_LTV=0 # - DUT_DECODER_PATH=./IVAS_dec_ref # - TEST_SUITE="$SHORT_TEST_SUITE" # - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" # - LEVEL_SCALING=1.0 # <<: *ivas-pytest-on-merge-request-anchor Loading @@ -744,7 +745,7 @@ build-codec-linux-debugging-make: # before_script: # - USE_LTV=0 # - DUT_DECODER_PATH=./IVAS_dec_ref # - TEST_SUITE="$SHORT_TEST_SUITE" # - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" # - LEVEL_SCALING=0.3162 # <<: *ivas-pytest-on-merge-request-anchor Loading @@ -755,7 +756,7 @@ build-codec-linux-debugging-make: # before_script: # - USE_LTV=0 # - DUT_DECODER_PATH=./IVAS_dec_ref # - TEST_SUITE="$SHORT_TEST_SUITE" # - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" # - LEVEL_SCALING=3.162 # <<: *ivas-pytest-on-merge-request-anchor Loading Loading @@ -810,7 +811,7 @@ ivas-pytest-compare_to_ref-short-enc: - USE_LTV=0 - ENCODER_TEST="true" - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$ENCODER_TEST_SUITE" - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - LEVEL_SCALING=1.0 <<: *ivas-pytest-anchor Loading @@ -823,7 +824,7 @@ ivas-pytest-compare_to_ref-short-enc-lev-10: - USE_LTV=0 - ENCODER_TEST="true" - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$ENCODER_TEST_SUITE" - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - LEVEL_SCALING=0.3162 <<: *ivas-pytest-anchor Loading @@ -836,7 +837,7 @@ ivas-pytest-compare_to_ref-short-enc-lev+10: - USE_LTV=0 - ENCODER_TEST="true" - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$ENCODER_TEST_SUITE" - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - LEVEL_SCALING=3.162 <<: *ivas-pytest-anchor Loading @@ -846,7 +847,7 @@ ivas-pytest-enc-msan: before_script: - CLANG_NUM=1 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE=$LONG_TEST_SUITE - TEST_SUITE=$LONG_TEST_SUITE_ENCODER <<: *ivas-pytest-sanitizers-anchor ivas-pytest-enc-asan: Loading @@ -855,7 +856,7 @@ ivas-pytest-enc-asan: before_script: - CLANG_NUM=2 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE=$LONG_TEST_SUITE - TEST_SUITE=$LONG_TEST_SUITE_ENCODER <<: *ivas-pytest-sanitizers-anchor ivas-pytest-enc-usan: Loading @@ -864,7 +865,7 @@ ivas-pytest-enc-usan: before_script: - CLANG_NUM=3 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE=$ENCODER_TEST_SUITE - TEST_SUITE=$SHORT_TEST_SUITE_ENCODER <<: *ivas-pytest-sanitizers-anchor ### jobs that test flt encoder -> fx decoder Loading Loading @@ -920,7 +921,7 @@ ivas-pytest-compare-to-input-short-enc: before_script: - USE_LTV=0 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$SHORT_TEST_SUITE" - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - LEVEL_SCALING=1.0 <<: *ivas-pytest-compare-to-input-anchor Loading @@ -942,7 +943,7 @@ ivas-pytest-dec-asan: - TEST_SUITE=$LONG_TEST_SUITE_SELF_TEST <<: *ivas-pytest-sanitizers-anchor ivas-pytest-dec-usan-short: ivas-pytest-dec-usan: extends: - .test-job-linux before_script: Loading @@ -962,7 +963,7 @@ ivas-pytest-compare_ref-long-enc: before_script: - USE_LTV=1 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$LONG_TEST_SUITE" - TEST_SUITE="$LONG_TEST_SUITE_ENCODER" - LEVEL_SCALING=1.0 <<: *ivas-pytest-anchor Loading @@ -984,7 +985,7 @@ ivas-pytest-compare_ref-long-enc-lev-10: before_script: - USE_LTV=1 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$LONG_TEST_SUITE" - TEST_SUITE="$LONG_TEST_SUITE_ENCODER" - LEVEL_SCALING=0.3162 <<: *ivas-pytest-anchor Loading @@ -1006,7 +1007,7 @@ ivas-pytest-compare_ref-long-enc-lev+10: before_script: - USE_LTV=1 - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$LONG_TEST_SUITE" - TEST_SUITE="$LONG_TEST_SUITE_ENCODER" - LEVEL_SCALING=3.162 <<: *ivas-pytest-anchor Loading
lib_com/basop_util.c +1 −1 Original line number Diff line number Diff line Loading @@ -1555,7 +1555,7 @@ Word16 findIndexOfMinWord32( Word32 *x, const Word16 len ) Word16 imult1616( Word16 x, Word16 y ) { assert( (int) x * (int) y < 32768 && (int) x * (int) y >= -32768 ); return extract_l( L_mult0( x, y ) ); return i_mult( x, y ); } Word32 imult3216( Word32 x, Word16 y ) Loading
lib_com/fft_fx.c +51 −0 Original line number Diff line number Diff line Loading @@ -7262,15 +7262,29 @@ Word16 L_norm_arr( Word32 *arr, Word16 size ) Word16 q = 31; move16(); FOR( Word16 i = 0; i < size; i++ ) #ifndef FIX_1103_OPT_L_NORM_ARR IF( arr[i] != 0 ) { q = s_min( q, norm_l( arr[i] ) ); } #else { Word16 q_tst; q_tst = norm_l( arr[i] ); if ( arr[i] != 0 ) { q = s_min( q, q_tst ); } } #endif return q; } Word16 get_min_scalefactor( Word32 x, Word32 y ) { #ifndef FIX_1104_OPT_GETMINSCALEFAC Word16 scf = Q31; move16(); test(); Loading @@ -7287,8 +7301,34 @@ Word16 get_min_scalefactor( Word32 x, Word32 y ) scf = s_min( scf, norm_l( y ) ); } return scf; #else Word16 scf_y; Word16 scf = Q31; move16(); test(); if ( x == 0 && y == 0 ) { scf = 0; move16(); } if ( x != 0 ) { scf = norm_l( x ); } scf_y = norm_l( y ); if ( y != 0 ) { scf = s_min( scf_y, scf ); } return scf; #endif } Flag is_zero_arr( Word32 *arr, Word16 size ) { FOR( Word16 i = 0; i < size; i++ ) Loading @@ -7299,3 +7339,14 @@ Flag is_zero_arr( Word32 *arr, Word16 size ) return 1; } Flag is_zero_arr16( Word16 *arr, Word16 size ) { FOR( Word16 i = 0; i < size; i++ ) IF( arr[i] != 0 ) { return 0; } return 1; }
lib_com/ivas_tools.c +25 −0 Original line number Diff line number Diff line Loading @@ -308,10 +308,35 @@ void v_add_inc_fx( const Word16 N /* i : Vector length Q0*/ ) { #ifndef FIX_1107_VADDINC Word16 i; Word16 ix1 = 0; Word16 ix2 = 0; Word16 iy = 0; #else Word16 i, ix1, ix2, iy; /* The use of this function is currently always for the interleaved input format, */ /* that means, the following conditions are always true and thus obsolete. */ test(); test(); test(); test(); IF( ( sub( x_inc, 2 ) == 0 ) && ( sub( x2_inc, 2 ) == 0 ) && ( sub( y_inc, 1 ) == 0 ) && ( &x1[1] == &x2[0] ) ) { /* Interleaved input case, linear output */ FOR( i = 0; i < N; i++ ) { y[i] = L_add( x1[2 * i + 0], x1[2 * i + 1] ); /*Qx*/ move32(); } return; } ix1 = 0; ix2 = 0; iy = 0; #endif move16(); move16(); move16(); Loading
lib_com/low_rate_band_att_fx.c +10 −1 Original line number Diff line number Diff line Loading @@ -75,7 +75,16 @@ void ivas_fine_gain_pred_fx( L_tmp = L_shl( xx, exp ); /*2*(15-shift)+exp */ exp = sub( 31, add( exp, sub( 30, shl( shift, 1 ) ) ) ); L_tmp = Isqrt_lc( L_tmp, &exp ); /*31 - exp */ #ifndef FIX_ISSUE_987 Mpy_32_16_ss( L_tmp, ivas_fine_gain_pred_sqrt_bw[bw_idx], &L_tmp, &lsb ); /*31-exp+11-15=27-exp */ #else Word16 norm = norm_s( bw ); Word16 tmp1, tmp_exp = sub( 15, norm ); tmp1 = Sqrt16( shl( bw, norm ), &tmp_exp ); tmp1 = shr( tmp1, sub( sub( 15, tmp_exp ), Q11 ) ); Mpy_32_16_ss( L_tmp, tmp1, &L_tmp, &lsb ); /*31-exp+11-15=27-exp */ #endif #ifdef BASOP_NOGLOB gp = round_fx_o( L_shl_o( L_tmp, add( 1, exp ), &Overflow ), &Overflow ); /*27-exp+1+exp-16=12 */ #else Loading