Commit 0a73adb3 authored by vaillancour's avatar vaillancour
Browse files

Merge branch 'main' into 802-different-bit-allocation-between-fix-and-floating-point

parents 00c9db38 7e061fca
Loading
Loading
Loading
Loading
Loading
+57 −71
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ variables:
    options:
      - 'default'
      - 'pytest-mld'
      - 'pytest-mld-interop'
      - 'pytest-mld-long'
      - 'pytest-saturation-smoke-test'
      - 'evs-26444'
@@ -53,9 +52,6 @@ workflow:
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-mld'
      variables:
        IVAS_PIPELINE_NAME: 'Run MLD tool against float ref: $CI_COMMIT_BRANCH'
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-mld-interop'
      variables:
        IVAS_PIPELINE_NAME: 'Run MLD tool agains float ref - interop: $CI_COMMIT_BRANCH'
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-mld-long'
      variables:
        IVAS_PIPELINE_NAME: 'Run MLD tool against float ref (long test vectors): $CI_COMMIT_BRANCH'
@@ -172,15 +168,6 @@ stages:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
      when: never


.rules-pytest-mld-interop:
  rules:
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "pytest-mld-interop"
    - if: $CI_PIPELINE_SOURCE == 'push'
      when: never
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
      when: never

.rules-pytest-saturation-smoke-test:
  rules:
    - if: $PYTEST_SMOKE_TEST # Set by scheduled pipeline
@@ -240,10 +227,10 @@ stages:

    ### run pytest
    - exit_code=0
    - python3 -m pytest $TEST_SUITE -v --create_cut --html=report.html --self-contained-html --junit-xml=report-junit.xml --mld --ssnr --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH -n auto --testcase_timeout $testcase_timeout || exit_code=$?
    - python3 -m pytest --tb=no $TEST_SUITE -v --create_cut --html=report.html --self-contained-html --junit-xml=report-junit.xml --mld --ssnr --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH -n auto --testcase_timeout $testcase_timeout || exit_code=$?
    - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true

    - python3 scripts/parse_mld_xml.py report-junit.xml $MLD_ARTIFACT_NAME
    - python3 scripts/parse_xml_report.py report-junit.xml $MLD_ARTIFACT_NAME

    - if [ $USE_LTV -eq 1 ] && [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]; then
    -    id_previous=$(python3 ci/get_id_of_last_job_occurence.py $CI_DEFAULT_BRANCH $CI_JOB_NAME $CI_PROJECT_ID)
@@ -302,7 +289,7 @@ stages:
    - make -j CLANG=$CLANG_NUM
    - if [[ $CLANG_NUM == 3 ]]; then export UBSAN_OPTIONS="suppressions=scripts/ubsan.supp,report_error_type=1"; fi
    - testcase_timeout=$TESTCASE_TIMEOUT_STV
    - python3 -m pytest $SHORT_TEST_SUITE -v --tb=no --update_ref 1 -m create_ref --html=report.html --self-contained-html --junit-xml=report-junit.xml --testcase_timeout $testcase_timeout --ref_encoder_path ./IVAS_cod_ref --ref_decoder_path ./IVAS_dec
    - python3 -m pytest $SHORT_TEST_SUITE -v --tb=no --update_ref 1 -m create_ref --html=report.html --self-contained-html --junit-xml=report-junit.xml --testcase_timeout $testcase_timeout --ref_encoder_path $DUT_ENCODER_PATH --ref_decoder_path $DUT_DECODER_PATH
  artifacts:
    name: "$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA--results"
    when: always
@@ -410,98 +397,94 @@ build-codec-linux-instrumented-make:
# Short test jobs 
# ---------------------------------------------------------------

#ivas-pytest-mld-enc-dec:
#  extends:
#    - .rules-pytest-mld
#    - .test-job-linux
#  before_script:
#    - USE_LTV=0
#    - TEST_SUITE="$SHORT_TEST_SUITE"
#    - LEVEL_SCALING=1.0
#  <<: *ivas-pytest-anchor
  
ivas-pytest-mld-dec:
### jobs that test fx encoder -> flt decoder
ivas-pytest-mld-enc:
  extends:
    - .rules-pytest-mld
    - .test-job-linux
  before_script:
    - USE_LTV=0
    - DUT_ENCODER_PATH=./IVAS_cod_ref
    - DUT_DECODER_PATH=./IVAS_dec_ref
    - TEST_SUITE="$SHORT_TEST_SUITE"
    - LEVEL_SCALING=1.0
  <<: *ivas-pytest-anchor

#ivas-pytest-mld-enc-dec-lev-10:
#  extends:
#    - .rules-pytest-mld
#    - .test-job-linux    
#  before_script:
#    - USE_LTV=0  
#    - TEST_SUITE="$SHORT_TEST_SUITE"
#    - LEVEL_SCALING=0.3162
#  <<: *ivas-pytest-anchor
  
ivas-pytest-mld-dec-lev-10:
ivas-pytest-mld-enc-lev-10:
  extends:
    - .rules-pytest-mld
    - .test-job-linux    
  before_script:
    - USE_LTV=0
    - DUT_ENCODER_PATH=./IVAS_cod_ref
    - DUT_DECODER_PATH=./IVAS_dec_ref
    - TEST_SUITE="$SHORT_TEST_SUITE"
    - LEVEL_SCALING=0.3162
  <<: *ivas-pytest-anchor

#ivas-pytest-mld-enc-dec-lev+10:
#  extends:
#    - .rules-pytest-mld
#    - .test-job-linux    
#  before_script:
#    - USE_LTV=0  
#    - TEST_SUITE="$SHORT_TEST_SUITE"
#    - LEVEL_SCALING=3.162
#  <<: *ivas-pytest-anchor
  
ivas-pytest-mld-dec-lev+10:
ivas-pytest-mld-enc-lev+10:
  extends:
    - .rules-pytest-mld
    - .test-job-linux    
  before_script:
    - USE_LTV=0
    - DUT_ENCODER_PATH=./IVAS_cod_ref
    - DUT_DECODER_PATH=./IVAS_dec_ref
    - TEST_SUITE="$SHORT_TEST_SUITE"
    - LEVEL_SCALING=3.162
  <<: *ivas-pytest-anchor

ivas-pytest-mld-long-enc-fx-dec-flt-interop:
ivas-pytest-enc-msan:
  extends:
    - .rules-pytest-mld-interop
    - .test-job-linux
  before_script:
    - USE_LTV=0
    - CLANG_NUM=1
    - DUT_DECODER_PATH=./IVAS_dec_ref
  <<: *ivas-pytest-sanitizers-anchor

ivas-pytest-enc-asan:
  extends:
    - .test-job-linux
  before_script:
    - CLANG_NUM=2
    - DUT_DECODER_PATH=./IVAS_dec_ref
  <<: *ivas-pytest-sanitizers-anchor

ivas-pytest-enc-usan:
  extends:
    - .test-job-linux
  before_script:
    - CLANG_NUM=3
    - DUT_DECODER_PATH=./IVAS_dec_ref
  <<: *ivas-pytest-sanitizers-anchor
  
### jobs that test flt encoder -> fx decoder
ivas-pytest-mld-dec:
  extends:
    - .rules-pytest-mld
    - .test-job-linux    
  before_script:
    - USE_LTV=0
    - DUT_ENCODER_PATH=./IVAS_cod_ref
    - TEST_SUITE="$SHORT_TEST_SUITE"
    - LEVEL_SCALING=1.0
  <<: *ivas-pytest-anchor
  
ivas-pytest-mld-long-enc-fx-dec-flt-lev-10-interop:
ivas-pytest-mld-dec-lev-10:
  extends:
    - .rules-pytest-mld-interop
    - .rules-pytest-mld
    - .test-job-linux    
  before_script:
    - USE_LTV=0  
    - DUT_DECODER_PATH=./IVAS_dec_ref
    - DUT_ENCODER_PATH=./IVAS_cod_ref
    - TEST_SUITE="$SHORT_TEST_SUITE"
    - LEVEL_SCALING=0.3162
  <<: *ivas-pytest-anchor
  
ivas-pytest-mld-long-enc-fx-dec-flt-lev+10-interop:
ivas-pytest-mld-dec-lev+10:
  extends:
    - .rules-pytest-mld-interop
    - .rules-pytest-mld
    - .test-job-linux    
  before_script:
    - USE_LTV=0  
    - DUT_DECODER_PATH=./IVAS_dec_ref
    - DUT_ENCODER_PATH=./IVAS_cod_ref
    - TEST_SUITE="$SHORT_TEST_SUITE"
    - LEVEL_SCALING=3.162
  <<: *ivas-pytest-anchor
@@ -511,6 +494,7 @@ ivas-pytest-dec-msan:
    - .test-job-linux
  before_script:
    - CLANG_NUM=1
    - DUT_ENCODER_PATH=./IVAS_cod_ref
  <<: *ivas-pytest-sanitizers-anchor

ivas-pytest-dec-asan:
@@ -518,6 +502,7 @@ ivas-pytest-dec-asan:
    - .test-job-linux
  before_script:
    - CLANG_NUM=2
    - DUT_ENCODER_PATH=./IVAS_cod_ref
  <<: *ivas-pytest-sanitizers-anchor

ivas-pytest-dec-usan:
@@ -525,6 +510,7 @@ ivas-pytest-dec-usan:
    - .test-job-linux
  before_script:
    - CLANG_NUM=3
    - DUT_ENCODER_PATH=./IVAS_cod_ref
  <<: *ivas-pytest-sanitizers-anchor

# ---------------------------------------------------------------
+2 −1
Original line number Diff line number Diff line
@@ -575,7 +575,7 @@ enum
#define FRAMES_PER_SEC                      50
#ifdef IVAS_FLOAT_FIXED
#define MAX_PARAM_SPATIAL_SUB_FRAMES_PER_SEC              200 //(FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES)
#define ONE_BY_FRAMES_PER_SEC_Q31           ((Word32)(0x028F5C29))
#define ONE_BY_FRAMES_PER_SEC_Q31           ( 42949673 )
#define FRAMES_PER_SEC_BY_2                 (FRAMES_PER_SEC >> 1)
#endif
#define INV_FRAME_PER_SEC_Q15               656
@@ -607,6 +607,7 @@ enum

#define N_WS2N_FRAMES                       40                                  /* number of frames for attenuation during the band-width switching */
#define N_NS2W_FRAMES                       20                                  /* number of frames for attenuation during the band-width switching */
#define ONE_BY_N_NS2W_FRAMES_Q15           ( 1638 )

/*----------------------------------------------------------------------------------*
 * Coder types (only for ACELP core when not running in AMR-WB IO mode)
+12 −8
Original line number Diff line number Diff line
@@ -352,13 +352,15 @@ void ivas_fill_spectrum_fx(
    IF( EQ_16( HQ_mode, HQ_HARMONIC ) )
    {
        /*high_sfm = (core_brate == HQ_BWE_CROSSOVER_BRATE) ? HVQ_THRES_SFM_24k-1 : HVQ_THRES_SFM_32k-3; */
        high_sfm = sub( HVQ_THRES_SFM_32k, 1 );
        IF( LT_32( L_core_brate, HQ_BWE_CROSSOVER_BRATE ) )
        high_sfm = HVQ_THRES_SFM_32k - 1;
        move16();
        if ( LT_32( L_core_brate, HQ_BWE_CROSSOVER_BRATE ) )
        {
            high_sfm = sub( HVQ_THRES_SFM_24k, 1 );
            high_sfm = HVQ_THRES_SFM_24k - 1;
            move16();
        }

        IF( LT_16( last_sfm, high_sfm ) )
        if ( LT_16( last_sfm, high_sfm ) )
        {
            last_sfm = high_sfm;
            move16();
@@ -381,7 +383,7 @@ void ivas_fill_spectrum_fx(
    test();
    test();
    IF( EQ_16( length, L_FRAME16k ) ||
        ( ( EQ_16( length, L_FRAME32k ) && NE_16( HQ_mode, HQ_HARMONIC ) && NE_16( HQ_mode, HQ_HVQ ) ) && EQ_16( *no_att_hangover, 0 ) ) )
        ( ( EQ_16( length, L_FRAME32k ) && NE_16( HQ_mode, HQ_HARMONIC ) && NE_16( HQ_mode, HQ_HVQ ) ) && ( *no_att_hangover == 0 ) ) )
    {
        /* Norm adjustment function */
        env_adj_fx( npulses, length, last_sfm, norm_adj, env_stab, sfmsize );
@@ -393,7 +395,7 @@ void ivas_fill_spectrum_fx(
    test();
    test();
    test();
    IF( EQ_16( length, L_FRAME32k ) && ( ( LT_16( env_stab, 16384 ) && *no_att_hangover == 0 ) || EQ_16( HQ_mode, HQ_HVQ ) ) )
    if ( EQ_16( length, L_FRAME32k ) && ( ( LT_16( env_stab, 16384 ) && *no_att_hangover == 0 ) || EQ_16( HQ_mode, HQ_HVQ ) ) )
    {
        flag_32K_env_hangover = 1;
        move16();
@@ -426,7 +428,7 @@ void ivas_fill_spectrum_fx(
     *----------------------------------------------------------------*/

    test();
    IF( NE_16( HQ_mode, HQ_HVQ ) && GT_16( cb_size, 0 ) )
    IF( NE_16( HQ_mode, HQ_HVQ ) && ( cb_size > 0 ) )
    {
        apply_noisefill_HQ_fx( R, length, flag_32K_env_hangover, L_core_brate, last_sfm, CodeBook,
                               CodeBook_mod, cb_size, sfm_start, sfm_end, sfmsize, coeff );
@@ -436,7 +438,7 @@ void ivas_fill_spectrum_fx(
     * Normal mode BWE
     *----------------------------------------------------------------*/

    IF( EQ_16( HQ_mode, HQ_NORMAL ) )
    IF( HQ_mode == HQ_NORMAL )
    {
        hq_fold_bwe_fx( last_sfm, sfm_end, num_sfm, coeff );
    }
@@ -524,6 +526,7 @@ void ivas_fill_spectrum_fx(
    IF( EQ_16( length, L_FRAME32k ) && LE_32( L_core_brate, HQ_32k ) )
    {
        *prev_R = R[SFM_N_WB - 1];
        move16();
        Copy32( L_coeff_out + L_FRAME16k - L_HQ_WB_BWE, prev_coeff_out, L_HQ_WB_BWE );
    }

@@ -784,6 +787,7 @@ void fill_spectrum_fx(
    IF( EQ_16( length, L_FRAME32k ) && LE_32( L_core_brate, HQ_32k ) )
    {
        *prev_R = R[SFM_N_WB - 1];
        move16();
        Copy32( L_coeff_out + L_FRAME16k - L_HQ_WB_BWE, prev_coeff_out, L_HQ_WB_BWE );
    }

+0 −1
Original line number Diff line number Diff line
@@ -185,7 +185,6 @@ Word16 findpulse_fx( /* o : pulse position
         *------------------------------------------------------------------------*/

        ptr = resf + L_frame - 1;
        move16();
        maxi = 0;
        move16();

+3 −4
Original line number Diff line number Diff line
@@ -87,7 +87,6 @@ Word16 assign_gain_bits_fx( /* o : Number of assigned
    }

    /* Re-adjust bit budget for gain quantization */
    move16();
    gain_bits_tot = 0;
    move16();
    *Rcalc = 0;
@@ -125,7 +124,7 @@ static void ivas_subband_gain_bits_fx(
    {
        /*bps = (short)(Rk[i]*((word16)min(32767, ceil(32767.0f/sfmsize[i]);  inexact C-integer division approx. */
        bps = extract_l( L_shr( L_mult0( Rk[i], fg_inv_tbl_fx[sfmsize[i] >> 3] ), 18 ) ); /* 3+15 */
        IF( EQ_32( L_shl( L_mult0( sfmsize[i], add( bps, 1 ) ), 3 ), Rk[i] ) )
        if ( EQ_32( L_shl( L_mult0( sfmsize[i], add( bps, 1 ) ), 3 ), Rk[i] ) )
        {
            bps = add( bps, 1 );
        }
@@ -138,7 +137,7 @@ static void ivas_subband_gain_bits_fx(
        tot = add( tot, b );
    }

    IF( EQ_16( tot, 0 ) )
    if ( tot == 0 )
    {
        /* If no gain bits were assigned, use one bit anyway for potential PVQ overage */
        bits[0] = 1;
@@ -177,7 +176,7 @@ Word16 ivas_assign_gain_bits_fx( /* o : Number of ass
    move16();
    FOR( i = 0; i < BANDS; i++ )
    {
        IF( GT_16( Rk[i], 0 ) )
        IF( Rk[i] > 0 )
        {
            Rk[i] = sub( Rk[i], shl( gain_bits_array[i], 3 ) );
            move16();
Loading