Commit b5f6fd18 authored by malenov's avatar malenov
Browse files

merge main to branch

parents 4be6ffdb 5fdf206f
Loading
Loading
Loading
Loading
Loading
+18 −18
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ variables:
  SCRIPTS_DIR: "/usr/local/scripts"
  EXIT_CODE_NON_BE: 123
  EXIT_CODE_FAIL: 1
  LONG_TEST_SUITE: "tests/codec_be_on_mr_nonselection/test_param_file.py tests/renderer --param_file scripts/config/self_test_ltv.prm"
  LONG_TEST_SUITE: "tests/codec_be_on_mr_nonselection tests/renderer --param_file scripts/config/self_test_ltv.prm"
  SHORT_TEST_SUITE: "tests/codec_be_on_mr_nonselection"
  TEST_SUITE: ""
  DUT_ENCODER_PATH: "./IVAS_cod"
@@ -214,7 +214,7 @@ stages:
    - if [ ! -d "$TESTV_DIR" ]; then mkdir -p $TESTV_DIR; fi
    - cp -r scripts/testv/* $TESTV_DIR/

.ivas-pytest-mld-anchor: &ivas-pytest-mld-anchor
.ivas-pytest-anchor: &ivas-pytest-anchor
  stage: test
  needs: ["build-codec-linux-make"]
  timeout: "240 minutes"
@@ -240,7 +240,7 @@ 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 --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH -n auto --testcase_timeout $testcase_timeout || exit_code=$?
    - 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=$?
    - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true

    - python3 scripts/parse_mld_xml.py report-junit.xml $MLD_ARTIFACT_NAME
@@ -418,7 +418,7 @@ build-codec-linux-instrumented-make:
#    - USE_LTV=0
#    - TEST_SUITE="$SHORT_TEST_SUITE"
#    - LEVEL_SCALING=1.0
#  <<: *ivas-pytest-mld-anchor  
#  <<: *ivas-pytest-anchor
  
ivas-pytest-mld-dec:
  extends:
@@ -429,7 +429,7 @@ ivas-pytest-mld-dec:
    - DUT_ENCODER_PATH=./IVAS_cod_ref
    - TEST_SUITE="$SHORT_TEST_SUITE"
    - LEVEL_SCALING=1.0
  <<: *ivas-pytest-mld-anchor
  <<: *ivas-pytest-anchor
  
#ivas-pytest-mld-enc-dec-lev-10:
#  extends:
@@ -439,7 +439,7 @@ ivas-pytest-mld-dec:
#    - USE_LTV=0  
#    - TEST_SUITE="$SHORT_TEST_SUITE"
#    - LEVEL_SCALING=0.3162
#  <<: *ivas-pytest-mld-anchor  
#  <<: *ivas-pytest-anchor
  
ivas-pytest-mld-dec-lev-10:
  extends:
@@ -450,7 +450,7 @@ ivas-pytest-mld-dec-lev-10:
    - DUT_ENCODER_PATH=./IVAS_cod_ref
    - TEST_SUITE="$SHORT_TEST_SUITE"
    - LEVEL_SCALING=0.3162
  <<: *ivas-pytest-mld-anchor
  <<: *ivas-pytest-anchor

#ivas-pytest-mld-enc-dec-lev+10:
#  extends:
@@ -460,7 +460,7 @@ ivas-pytest-mld-dec-lev-10:
#    - USE_LTV=0  
#    - TEST_SUITE="$SHORT_TEST_SUITE"
#    - LEVEL_SCALING=3.162
#  <<: *ivas-pytest-mld-anchor  
#  <<: *ivas-pytest-anchor
  
ivas-pytest-mld-dec-lev+10:
  extends:
@@ -471,7 +471,7 @@ ivas-pytest-mld-dec-lev+10:
    - DUT_ENCODER_PATH=./IVAS_cod_ref
    - TEST_SUITE="$SHORT_TEST_SUITE"
    - LEVEL_SCALING=3.162
  <<: *ivas-pytest-mld-anchor
  <<: *ivas-pytest-anchor

ivas-pytest-mld-long-enc-fx-dec-flt-interop:
  extends:
@@ -482,7 +482,7 @@ ivas-pytest-mld-long-enc-fx-dec-flt-interop:
    - DUT_DECODER_PATH=./IVAS_dec_ref
    - TEST_SUITE="$SHORT_TEST_SUITE"
    - LEVEL_SCALING=1.0
  <<: *ivas-pytest-mld-anchor
  <<: *ivas-pytest-anchor

ivas-pytest-mld-long-enc-fx-dec-flt-lev-10-interop:
  extends:
@@ -493,7 +493,7 @@ ivas-pytest-mld-long-enc-fx-dec-flt-lev-10-interop:
    - DUT_DECODER_PATH=./IVAS_dec_ref
    - TEST_SUITE="$SHORT_TEST_SUITE"
    - LEVEL_SCALING=0.3162
  <<: *ivas-pytest-mld-anchor
  <<: *ivas-pytest-anchor

ivas-pytest-mld-long-enc-fx-dec-flt-lev+10-interop:
  extends:
@@ -504,7 +504,7 @@ ivas-pytest-mld-long-enc-fx-dec-flt-lev+10-interop:
    - DUT_DECODER_PATH=./IVAS_dec_ref
    - TEST_SUITE="$SHORT_TEST_SUITE"
    - LEVEL_SCALING=3.162
  <<: *ivas-pytest-mld-anchor
  <<: *ivas-pytest-anchor

ivas-pytest-dec-msan:
  extends:
@@ -539,7 +539,7 @@ ivas-pytest-mld-long-enc-dec:
    - USE_LTV=1  
    - TEST_SUITE="$LONG_TEST_SUITE"
    - LEVEL_SCALING=1.0
  <<: *ivas-pytest-mld-anchor  
  <<: *ivas-pytest-anchor
  
ivas-pytest-mld-long-dec:
  extends:
@@ -550,7 +550,7 @@ ivas-pytest-mld-long-dec:
    - DUT_ENCODER_PATH=./IVAS_cod_ref
    - TEST_SUITE="$LONG_TEST_SUITE"
    - LEVEL_SCALING=1.0
  <<: *ivas-pytest-mld-anchor
  <<: *ivas-pytest-anchor
  
ivas-pytest-mld-long-enc-dec-lev-10:
  extends:
@@ -560,7 +560,7 @@ ivas-pytest-mld-long-enc-dec-lev-10:
    - USE_LTV=1  
    - TEST_SUITE="$LONG_TEST_SUITE"
    - LEVEL_SCALING=0.3162
  <<: *ivas-pytest-mld-anchor  
  <<: *ivas-pytest-anchor
  
ivas-pytest-mld-long-dec-lev-10:
  extends:
@@ -571,7 +571,7 @@ ivas-pytest-mld-long-dec-lev-10:
    - DUT_ENCODER_PATH=./IVAS_cod_ref
    - TEST_SUITE="$LONG_TEST_SUITE"
    - LEVEL_SCALING=0.3162
  <<: *ivas-pytest-mld-anchor
  <<: *ivas-pytest-anchor

ivas-pytest-mld-long-enc-dec-lev+10:
  extends:
@@ -581,7 +581,7 @@ ivas-pytest-mld-long-enc-dec-lev+10:
    - USE_LTV=1  
    - TEST_SUITE="$LONG_TEST_SUITE"
    - LEVEL_SCALING=3.162
  <<: *ivas-pytest-mld-anchor  
  <<: *ivas-pytest-anchor
  
ivas-pytest-mld-long-dec-lev+10:
  extends:
@@ -592,7 +592,7 @@ ivas-pytest-mld-long-dec-lev+10:
    - DUT_ENCODER_PATH=./IVAS_cod_ref
    - TEST_SUITE="$LONG_TEST_SUITE"
    - LEVEL_SCALING=3.162
  <<: *ivas-pytest-mld-anchor
  <<: *ivas-pytest-anchor

ivas-smoke-test-saturation:
  extends:
+2 −2
Original line number Diff line number Diff line
@@ -822,7 +822,7 @@ ivas_error config_acelp1(

            bits -= acelp_cfg->mid_lsf_bits;
        }
#ifdef LSF_RE_USE_SECONDARY_CHANNEL
#if defined LSF_RE_USE_SECONDARY_CHANNEL || defined FIX_798_LSF_SECONDARY_CH_MISSING_CODE
        else if ( tdm_lp_reuse_flag == 1 && idchan == 1 && active_cnt != 1 )
        {
            bits -= TDM_IC_LSF_PRED_BITS;
@@ -1383,7 +1383,7 @@ ivas_error config_acelp1(
        {
            if ( idchan > 0 && element_mode == IVAS_CPE_TD )
            {
#ifdef LSF_RE_USE_SECONDARY_CHANNEL
#if defined LSF_RE_USE_SECONDARY_CHANNEL || defined FIX_798_LSF_SECONDARY_CH_MISSING_CODE
                if ( !tdm_lp_reuse_flag )
                {
                    acelp_cfg->lsf_bits += bits; /* increase LSF Q bits */
+14 −28
Original line number Diff line number Diff line
@@ -2043,8 +2043,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->p_filter_sf = (Word16) 17036;
                hs->p_filter = CLDFB80_10_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_10_SCALE );
                hs->scale = (Word16) ( CLDFB80_10_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_10_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2064,8 +2063,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15388;
                hs->p_filter = LDQMF_10_fx;
                hs->q_scale = norm_s( (Word16) LDQMF_10_SCALE );
                hs->scale = (Word16) ( LDQMF_10_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_10_SCALE_FX_Q8;
#endif
            }
            break;
@@ -2098,8 +2096,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->p_filter_sf = (Word16) 17051;
                hs->p_filter = CLDFB80_16_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_16_SCALE );
                hs->scale = (Word16) ( CLDFB80_16_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_16_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2119,8 +2116,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15388;
                hs->p_filter = LDQMF_16_fx;
                hs->q_scale = norm_s( (Word16) LDQMF_16_SCALE );
                hs->scale = (Word16) ( LDQMF_16_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_16_SCALE_FX_Q8;
#endif
            }
            break;
@@ -2153,8 +2149,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->p_filter_sf = (Word16) 17050;
                hs->p_filter = CLDFB80_20_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_20_SCALE );
                hs->scale = (Word16) ( CLDFB80_20_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_20_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2174,8 +2169,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15390;
                hs->p_filter = LDQMF_20_fx;
                hs->q_scale = norm_s( (Word16) LDQMF_20_SCALE );
                hs->scale = (Word16) ( LDQMF_20_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_20_SCALE_FX_Q8;
#endif
            }
            break;
@@ -2208,8 +2202,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->p_filter_sf = (Word16) 17051;
                hs->p_filter = CLDFB80_30_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_30_SCALE );
                hs->scale = (Word16) ( CLDFB80_30_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_30_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2229,8 +2222,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15388;
                hs->p_filter = LDQMF_30_fx;
                hs->q_scale = norm_s( (Word16) LDQMF_30_SCALE );
                hs->scale = (Word16) ( LDQMF_30_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_30_SCALE_FX_Q8;
#endif
            }
            break;
@@ -2263,8 +2255,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->p_filter_sf = (Word16) 17050;
                hs->p_filter = CLDFB80_32_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_32_SCALE );
                hs->scale = (Word16) ( CLDFB80_32_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_32_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2284,8 +2275,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15392;
                hs->p_filter = LDQMF_32_fx;
                hs->q_scale = norm_s( (Word16) LDQMF_32_SCALE );
                hs->scale = (Word16) ( LDQMF_32_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_32_SCALE_FX_Q8;
#endif
            }
            break;
@@ -2318,8 +2308,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->p_filter_sf = (Word16) 17051;
                hs->p_filter = CLDFB80_40_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_40_SCALE );
                hs->scale = (Word16) ( CLDFB80_40_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_40_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2339,8 +2328,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15391;
                hs->p_filter = LDQMF_40_fx;
                hs->q_scale = norm_s( (Word16) LDQMF_40_SCALE );
                hs->scale = (Word16) ( LDQMF_40_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_40_SCALE_FX_Q8;
#endif
            }
            break;
@@ -2373,8 +2361,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_im_fx = NULL;
                hs->p_filter_sf = (Word16) 17051;
                hs->p_filter = CLDFB80_60_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_60_SCALE );
                hs->scale = (Word16) ( CLDFB80_60_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_60_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2394,8 +2381,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15391;
                hs->p_filter = LDQMF_60_fx;
                hs->q_scale = norm_s( (Word16) LDQMF_60_SCALE );
                hs->scale = (Word16) ( LDQMF_60_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_60_SCALE_FX_Q8;
#endif
            }
            break;
+19 −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               ((Word32)(0x028F5C29))
#define ONE_BY_FRAMES_PER_SEC_Q31           ((Word32)(0x028F5C29))
#define FRAMES_PER_SEC_BY_2                 (FRAMES_PER_SEC >> 1)
#endif
#define INV_FRAME_PER_SEC_Q15               656
@@ -794,6 +794,13 @@ typedef enum
#define CLDFB80_32_SCALE                   88.303848f
#define CLDFB80_40_SCALE                   88.304726f
#define CLDFB80_60_SCALE                   88.028412f
#define CLDFB80_10_SCALE_FX_Q8             ( 22603 )
#define CLDFB80_16_SCALE_FX_Q8             ( 22605 )
#define CLDFB80_20_SCALE_FX_Q8             ( 22605 )
#define CLDFB80_30_SCALE_FX_Q8             ( 22588 )
#define CLDFB80_32_SCALE_FX_Q8             ( 22606 )
#define CLDFB80_40_SCALE_FX_Q8             ( 22606 )
#define CLDFB80_60_SCALE_FX_Q8             ( 22535 )

#define LDQMF_10_SCALE                      84.567841f
#define LDQMF_16_SCALE                      84.567932f
@@ -802,6 +809,13 @@ typedef enum
#define LDQMF_32_SCALE                      84.568001f
#define LDQMF_40_SCALE                      84.567986f
#define LDQMF_60_SCALE                      84.303284f
#define LDQMF_10_SCALE_FX_Q8                ( 21649 )
#define LDQMF_16_SCALE_FX_Q8                ( 21649 )
#define LDQMF_20_SCALE_FX_Q8                ( 21649 )
#define LDQMF_30_SCALE_FX_Q8                ( 21632 )
#define LDQMF_32_SCALE_FX_Q8                ( 21649 )
#define LDQMF_40_SCALE_FX_Q8                ( 21649 )
#define LDQMF_60_SCALE_FX_Q8                ( 21582 )

#define L_FFT                               256                     /* Spectral analysis - length of the FFT */
#define LOG2_L_FFT                          8                       /* Spectral analysis - log2 of L_FFT */
@@ -1804,7 +1818,9 @@ typedef enum _DCTTYPE
#define CNA_INIT_NBANDS                     6

#define GAIN_Q_OFFSET_EVS 60.f
#define GAIN_Q_OFFSET_EVS_FX_Q0 60
#define GAIN_Q_OFFSET_IVAS 45.f
#define GAIN_Q_OFFSET_IVAS_FX_Q0 45

/*----------------------------------------------------------------------------------*
 * Bass post-filter constants
@@ -2992,6 +3008,8 @@ enum
#define EVS_PI                               3.14159265358979323846264338327950288f
#define EVS_PI_FX                            25736    /* pi in Q13 */
#define EVS_2PI_FX                           51472    /* 2 * pi in Q13 */
#define EVS_PI_FX_Q27                        421657428     /* pi in Q28 */
#define EVS_2PI_FX_Q27                       843314856    /* 2 * pi in Q28 */
#define EVS_PI_BY_2_FX                            (Word16)(0x3244)
//#define EVS_PI_FX                            (Word16)(0x6488)

+10 −10
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@
 *--------------------------------------------------------------------------*/

/*! r: delay value in ns */
#ifndef IVAS_FLOAT_FIXED
int32_t get_delay(
    const int16_t enc_dec,          /* i  : encoder/decoder flag                */
    const int32_t io_fs,            /* i  : input/output sampling frequency     */
@@ -111,13 +112,7 @@ int32_t get_delay(

    return delay;
}

/*--------------------------------------------------------------------------
 *  get_delay_fx()
 *
 *  Function returns various types of delays in the codec in ns.
 *--------------------------------------------------------------------------*/

#else
Word32 get_delay_fx(                                 /* o  : delay value in ms                         */
                     const Word16 what_delay,        /* i  : what delay? (ENC or DEC)                  */
                     const Word32 io_fs,             /* i  : input/output sampling frequency           */
@@ -130,6 +125,7 @@ Word32 get_delay_fx( /* o : delay value in ms
)
{
    Word32 delay = 0;
    move32();

    IF( EQ_16( what_delay, ENC ) )
    {
@@ -141,17 +137,19 @@ Word32 get_delay_fx( /* o : delay value in ms
        ELSE
        {
            delay = IVAS_ENC_DELAY_NS;
            move32();
            test();
            IF( EQ_16( ivas_format, MASA_FORMAT ) || EQ_16( ivas_format, MASA_ISM_FORMAT ) )
            {
                delay = 0; /* All delay is compensated in the decoder with MASA */
                move32();
            }
        }
        test();
        IF( EQ_16( ivas_format, SBA_FORMAT ) || EQ_16( ivas_format, SBA_ISM_FORMAT ) )
        {
            /* compensate for DirAC/SPAR filterbank delay */
            delay += IVAS_FB_ENC_DELAY_NS;
            delay = L_add( delay, IVAS_FB_ENC_DELAY_NS );
        }
    }
    ELSE
@@ -172,6 +170,7 @@ Word32 get_delay_fx( /* o : delay value in ms
        ELSE /* IVAS */
        {
            delay = IVAS_DEC_DELAY_NS;
            move32();

#ifdef SPLIT_REND_WITH_HEAD_ROT

@@ -181,7 +180,7 @@ Word32 get_delay_fx( /* o : delay value in ms
                IF( hCldfb != NULL )
                {
                    /* compensate for filterbank delay */
                    delay += IVAS_FB_DEC_DELAY_NS;
                    delay = L_add( delay, IVAS_FB_DEC_DELAY_NS );
                }
#ifdef SPLIT_REND_WITH_HEAD_ROT
            }
@@ -189,10 +188,11 @@ Word32 get_delay_fx( /* o : delay value in ms
            test();
            IF( EQ_16( ivas_format, MASA_FORMAT ) || EQ_16( ivas_format, MASA_ISM_FORMAT ) )
            {
                delay += IVAS_ENC_DELAY_NS; /* Compensate also the encoder delay in the decoder with MASA */
                delay = L_add( delay, IVAS_ENC_DELAY_NS ); /* Compensate also the encoder delay in the decoder with MASA */
            }
        }
    }

    return delay;
}
#endif
Loading