Commit 0b5b38dd authored by multrus's avatar multrus
Browse files

merge from main

parents 31ef1423 17908a75
Loading
Loading
Loading
Loading
Loading
+78 −5
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ variables:
  INSTR_DIR: "scripts/c-code_instrument"
  BUILD_WITH_DEBUG_MODE_INFO: ""
  ENCODER_TEST: ""
  COMPARE_DMX: ""
  SKIP_REGRESSION_CHECK: ""
  MANUAL_PIPELINE_TYPE:
    description: "Type for the manual pipeline run. Use 'pytest-compare' to run comparison test against reference float codec."
@@ -39,6 +40,7 @@ variables:
    options:
      - 'default'
      - 'pytest-compare'
      - 'pytest-compare-enc-dmx'
      - 'pytest-compare-long'
      - 'pytest-compare-to-input'
      - 'pytest-saturation-smoke-test'
@@ -72,6 +74,9 @@ workflow:
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-compare'
      variables:
        IVAS_PIPELINE_NAME: 'Run comparison tools against float ref: $CI_COMMIT_BRANCH'
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-compare-enc-dmx'
      variables:
        IVAS_PIPELINE_NAME: 'Run encoder dmx comparison against float ref: $CI_COMMIT_BRANCH'
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-compare-long'
      variables:
        IVAS_PIPELINE_NAME: 'Run comparison tools against float ref (long test vectors): $CI_COMMIT_BRANCH'
@@ -141,6 +146,7 @@ stages:
  - git checkout $REFERENCE_BRANCH
  - git pull
  - *activate-debug-mode-info-if-set
  - cat lib_com/options.h
  - make clean
  - make -j
  - mv ./IVAS_cod ./$REF_ENCODER_PATH
@@ -167,9 +173,18 @@ stages:
  - python3 tests/create_short_testvectors.py
  # create references
  - exit_code=0

  - enc_stats_arg=""
  - if [ "$ENCODER_TEST" = "true" ]; then enc_stats_arg="--enc_stats"; fi
  - python3 -m pytest $TEST_SUITE -v --update_ref 1 $enc_stats_arg --create_ref -n auto --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$?
  - if [ "$ENCODER_TEST" = "true" ]; then
  -   enc_stats_arg="--enc_stats"
  - fi

  - enc_dmx_arg=""
  - if [ "$COMPARE_DMX" = "true" ]; then
  -   enc_dmx_arg="--compare_enc_dmx"
  - fi

  - python3 -m pytest $TEST_SUITE -v --update_ref 1 $enc_stats_arg $enc_dmx_arg --create_ref -n auto --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$?

.update-scripts-repo: &update-scripts-repo
  - cd $SCRIPTS_DIR
@@ -223,6 +238,14 @@ stages:
    - if: $CI_PIPELINE_SOURCE == 'schedule'
      when: never

.rules-pytest-to-ref-enc-sort-dmx:
  rules:
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "pytest-compare-enc-dmx"
    - if: $CI_PIPELINE_SOURCE == 'push'
      when: never
    - if: $CI_PIPELINE_SOURCE == 'schedule'
      when: never

.rules-pytest-to-main-short:
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # only have MR pipelines for MRs to main
@@ -299,6 +322,7 @@ stages:
    SUMMARY_HTML_ARTIFACT_NAME: "summary_$CI_JOB_NAME.html"
    IMAGES_ARTIFACT_NAME: "images_$CI_JOB_NAME"
  script:
    - set -euxo pipefail
    - *print-common-info
    - *update-scripts-repo
    - if [ $USE_LTV -eq 1 ]; then
@@ -314,11 +338,20 @@ stages:
    -   *apply-testv-scaling
    - fi

    - if [ "$ENCODER_TEST" = "true" ]; then BUILD_WITH_DEBUG_MODE_INFO="true"; fi
    - if [ "$COMPARE_DMX" = "true" ] || [ "$ENCODER_TEST" = "true" ]; then
    -   BUILD_WITH_DEBUG_MODE_INFO="true"
    - fi
    - *build-and-create-reference-outputs

    - comp_args="--mld --ssnr --odg"
    - if [ "$ENCODER_TEST" = "true" ]; then comp_args="${comp_args} --enc_stats"; fi
    - if [ "$ENCODER_TEST" = "true" ]; then
    -   comp_args="${comp_args} --enc_stats"
    - fi

    # DMX comparison only in manual job with no other metrics
    - if [ "$COMPARE_DMX" = "true" ]; then
    -   comp_args="--compare_enc_dmx"
    - fi
    - echo "$comp_args"

    ### run pytest
@@ -871,6 +904,46 @@ ivas-pytest-compare_to_ref-short-enc-lev+10:
    - LEVEL_SCALING=3.162
  <<: *ivas-pytest-anchor

# encoder dmx comparison jobs
ivas-pytest-compare_to_ref-dmx-short-enc:
  extends:
    - .rules-pytest-to-ref-enc-sort-dmx
    - .test-job-linux
  before_script:
    - USE_LTV=0
    - ENCODER_TEST="true"
    - COMPARE_DMX="true"
    - DUT_DECODER_PATH=./$REF_DECODER_PATH
    - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER"
    - LEVEL_SCALING=1.0
  <<: *ivas-pytest-anchor

ivas-pytest-compare_to_ref-dmx-short-enc-lev-10:
  extends:
    - .rules-pytest-to-ref-enc-sort-dmx
    - .test-job-linux
  before_script:
    - USE_LTV=0
    - ENCODER_TEST="true"
    - COMPARE_DMX="true"
    - DUT_DECODER_PATH=./$REF_DECODER_PATH
    - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER"
    - LEVEL_SCALING=0.3162
  <<: *ivas-pytest-anchor

ivas-pytest-compare_to_ref-dmx-short-enc-lev+10:
  extends:
    - .rules-pytest-to-ref-enc-sort-dmx
    - .test-job-linux
  before_script:
    - USE_LTV=0
    - ENCODER_TEST="true"
    - COMPARE_DMX="true"
    - DUT_DECODER_PATH=./$REF_DECODER_PATH
    - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER"
    - LEVEL_SCALING=3.162
  <<: *ivas-pytest-anchor

ivas-pytest-enc-msan:
  extends:
    - .test-job-linux
+106 −24
Original line number Diff line number Diff line
@@ -773,6 +773,9 @@ ivas_error config_acelp1(
    ACELP_config *acelp_cfg,       /* i  : ACELP bit-allocation            */
    const Word16 signalling_bits,  /* i  : number of signalling bits       */
    const Word16 coder_type,       /* i  : coder type                      */
#ifdef NONBE_FIX_GSC_BSTR
    const Word16 inactive_coder_type_flag, /* i  : AVQ (0) or GSC (1) IC flag      */
#endif
    const Word16 tc_subfr,             /* i  : TC subfr ID                     */
    const Word16 tc_call,              /* i  : TC call number (0,1,2,3,5(DEC)) */
    Word16 *nBits_es_Pred,             /* o  : number of bits for Es_pred Q    */
@@ -1068,14 +1071,20 @@ ivas_error config_acelp1(
        {
            bits = sub( bits, TDM_IC_LSF_PRED_BITS );
        }
        /* gain Q bit-budget - part 1 */
        /* gain Q bit-budget - part 1: 'Es_pred' of memory-less gain Q */
        test();
        test();
        test();
        test();
        test();
        test();
#ifdef NONBE_FIX_GSC_BSTR
        IF( ( NE_16( coder_type, UNVOICED ) && NE_16( coder_type, AUDIO ) && coder_type != INACTIVE && !( LE_32( core_brate, ACELP_8k00 ) && NE_16( coder_type, TRANSITION ) ) ) /* mid bitrates in GC and VC, low+mid bitrates in TC */ ||
            ( coder_type == INACTIVE && !inactive_coder_type_flag ) /* AVQ inactive */
        )
#else
        IF( ( NE_16( coder_type, UNVOICED ) && NE_16( coder_type, AUDIO ) && coder_type != INACTIVE && !( LE_32( core_brate, ACELP_8k00 ) && NE_16( coder_type, TRANSITION ) ) ) || ( coder_type == INACTIVE && GT_32( total_brate, MAX_GSC_INACTIVE_BRATE ) ) )
#endif
        {
            *nBits_es_Pred = Es_pred_bits_tbl[BIT_ALLOC_IDX_fx( core_brate, coder_type, -1, -1 )];
            move16();
@@ -1196,7 +1205,11 @@ ivas_error config_acelp1(
    {
        test();
        test();
#ifdef NONBE_FIX_GSC_BSTR
        IF( coder_type == INACTIVE && EQ_16( L_frame, L_FRAME16k ) && inactive_coder_type_flag ) /* GSC Inactive @16kHz */
#else
        IF( coder_type == INACTIVE && EQ_16( L_frame, L_FRAME16k ) && LE_32( total_brate, MAX_GSC_INACTIVE_BRATE ) ) /* GSC Inactive @16kHz */
#endif
        {
            acelp_cfg->ltf_mode = FULL_BAND;
            move16();
@@ -1414,7 +1427,14 @@ ivas_error config_acelp1(
        acelp_cfg->fixed_cdk_index[3] = -1;
        move16();
    }
#ifdef NONBE_FIX_GSC_BSTR
    ELSE IF( ( coder_type != INACTIVE && EQ_16( nb_subfr, NB_SUBFR ) && NE_16( coder_type, AUDIO ) ) || /* @12.8kHz core except of GSC */
             ( EQ_16( nb_subfr, NB_SUBFR16k ) && ( !inactive_coder_type_flag || coder_type != INACTIVE ) ) /* @16kHz core GC, TC, AVQ inactive */ ||
             EQ_16( core, HQ_CORE ) /* ACELP -> HQ switching in EVS */
    )
#else
    ELSE IF( ( coder_type != INACTIVE && EQ_16( nb_subfr, NB_SUBFR ) && NE_16( coder_type, AUDIO ) ) || ( EQ_16( nb_subfr, NB_SUBFR16k ) && ( GT_32( total_brate, MAX_GSC_INACTIVE_BRATE ) || coder_type != INACTIVE ) ) || EQ_16( core, HQ_CORE ) )
#endif
    {
        /* pitch Q & gain Q bit-budget - part 2*/
        FOR( i = 0; i < nb_subfr; i++ )
@@ -1478,7 +1498,13 @@ ivas_error config_acelp1(
        test();
        test();
        test();
#ifdef NONBE_FIX_GSC_BSTR
        IF( flag_hardcoded /* EVS */ ||
            ( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && coder_type != INACTIVE ) /* high-birate ACELP except IC */ ||
            ( !inactive_coder_type_flag && coder_type == INACTIVE ) /* AVQ inactive */ )
#else
        IF( flag_hardcoded || ( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && coder_type != INACTIVE ) || ( GT_32( total_brate, MAX_GSC_INACTIVE_BRATE ) && coder_type == INACTIVE ) )
#endif
        {
            FOR( i = 0; i < nb_subfr; i++ )
            {
@@ -1587,7 +1613,12 @@ ivas_error config_acelp1(
        test();
        test();
        test();
#ifdef NONBE_FIX_GSC_BSTR
        IF( ( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && coder_type != INACTIVE ) /* high-birate ACELP except IC */ ||
            ( !inactive_coder_type_flag && coder_type == INACTIVE ) /* AVQ inactive */ )
#else
        IF( ( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && coder_type != INACTIVE ) || ( GT_32( total_brate, MAX_GSC_INACTIVE_BRATE ) && coder_type == INACTIVE ) )
#endif
        {
            FOR( i = 0; i < nb_subfr; i++ )
            {
@@ -1627,7 +1658,13 @@ ivas_error config_acelp1(
            }
        }
    }
#ifdef NONBE_FIX_GSC_BSTR
    ELSE IF( ( EQ_16( coder_type, UNVOICED ) && EQ_16( tdm_low_rate_mode, 1 ) && EQ_16( element_mode, IVAS_CPE_TD ) ) /* LBR secondary channel in TD stereo */ ||
             ( ( coder_type == INACTIVE || EQ_16( coder_type, AUDIO ) ) && EQ_16( nb_subfr, NB_SUBFR ) ) /* GSC @12.8kHz */ ||
             ( coder_type == INACTIVE && inactive_coder_type_flag ) /* AVQ inactive */ )
#else
    ELSE IF( ( EQ_16( coder_type, UNVOICED ) && EQ_16( tdm_low_rate_mode, 1 ) && EQ_16( element_mode, IVAS_CPE_TD ) ) || ( ( coder_type == INACTIVE || EQ_16( coder_type, AUDIO ) ) && EQ_16( nb_subfr, NB_SUBFR ) ) || ( coder_type == INACTIVE && LE_32( total_brate, MAX_GSC_INACTIVE_BRATE ) ) )
#endif
    {
        Word32 Local_BR, Pitch_BR;
        Word16 Pitch_CT;
@@ -1768,7 +1805,12 @@ ivas_error config_acelp1(
        test();
        test();
        test();
#ifdef NONBE_FIX_GSC_BSTR
        IF( ( EQ_16( L_frame, L_FRAME16k ) && coder_type == INACTIVE && inactive_coder_type_flag ) /* GSC Inactive @16kHz */ ||
            ( GSC_IVAS_mode > 0 && EQ_16( L_frame, L_FRAME16k ) ) ) /* IVAS GSC @16kHz */
#else
        IF( ( EQ_16( L_frame, L_FRAME16k ) && coder_type == INACTIVE && LE_32( total_brate, MAX_GSC_INACTIVE_BRATE ) ) || ( GSC_IVAS_mode > 0 && EQ_16( L_frame, L_FRAME16k ) ) ) /* GSC Inactive @16kHz */
#endif
        {
            acelp_cfg->ubits = 0;
            move16();
@@ -1888,6 +1930,9 @@ ivas_error config_acelp1_IVAS(
    ACELP_config *acelp_cfg,       /* i  : ACELP bit-allocation            */
    const Word16 signaling_bits,   /* i  : number of signaling bits        */
    const Word16 coder_type,       /* i  : coder type                      */
#ifdef NONBE_FIX_GSC_BSTR
    const Word16 inactive_coder_type_flag, /* i  : AVQ (0) or GSC (1) IC flag      */
#endif
    const Word16 tc_subfr,             /* i  : TC subfr ID                     */
    const Word16 tc_call,              /* i  : TC call number (0,1,2,3,5(DEC)) */
    Word16 *nBits_es_Pred,             /* o  : number of bits for Es_pred Q    */
@@ -2168,8 +2213,13 @@ ivas_error config_acelp1_IVAS(
        test();
        test();
        test();
        /* gain Q bit-budget - part 1 */
        /* gain Q bit-budget - part 1: 'Es_pred' of memory-less gain Q */
#ifdef NONBE_FIX_GSC_BSTR
        IF( ( NE_16( coder_type, UNVOICED ) && NE_16( coder_type, AUDIO ) && coder_type != INACTIVE && !( LE_32( core_brate, ACELP_8k00 ) && NE_16( coder_type, TRANSITION ) ) ) /* mid bitrates in GC and VC, low+mid bitrates in TC */ ||
            ( coder_type == INACTIVE && !inactive_coder_type_flag ) /* AVQ inactive */ )
#else
        IF( ( NE_16( coder_type, UNVOICED ) && NE_16( coder_type, AUDIO ) && ( coder_type != INACTIVE ) && !( LE_32( core_brate, ACELP_8k00 ) && NE_16( coder_type, TRANSITION ) ) ) || ( ( coder_type == INACTIVE ) && GT_32( total_brate, MAX_GSC_INACTIVE_BRATE ) ) )
#endif
        {
            *nBits_es_Pred = Es_pred_bits_tbl[BIT_ALLOC_IDX( core_brate, coder_type, -1, -1 )];
            move16();
@@ -2294,7 +2344,11 @@ ivas_error config_acelp1_IVAS(
    {
        test();
        test();
#ifdef NONBE_FIX_GSC_BSTR
        IF( coder_type == INACTIVE && EQ_16( L_frame, L_FRAME16k ) && inactive_coder_type_flag ) /* GSC Inactive @16kHz */
#else
        IF( coder_type == INACTIVE && EQ_16( L_frame, L_FRAME16k ) && LE_32( total_brate, MAX_GSC_INACTIVE_BRATE ) ) /* GSC Inactive @16kHz */
#endif
        {
            acelp_cfg->ltf_mode = FULL_BAND;
            move16();
@@ -2510,7 +2564,13 @@ ivas_error config_acelp1_IVAS(
        acelp_cfg->fixed_cdk_index[3] = -1;
        move16();
    }
#ifdef NONBE_FIX_GSC_BSTR
    ELSE IF( ( coder_type != INACTIVE && EQ_16( nb_subfr, NB_SUBFR ) && NE_16( coder_type, AUDIO ) ) /* @12.8kHz core except of GSC */ ||
             ( EQ_16( nb_subfr, NB_SUBFR16k ) && ( !inactive_coder_type_flag || coder_type != INACTIVE ) ) /* @16kHz core GC, TC, AVQ inactive */ ||
             EQ_16( core, HQ_CORE ) /* ACELP -> HQ switching in EVS */ )
#else
    ELSE IF( ( coder_type != INACTIVE && EQ_16( nb_subfr, NB_SUBFR ) && NE_16( coder_type, AUDIO ) ) || ( EQ_16( nb_subfr, NB_SUBFR16k ) && ( GT_32( total_brate, MAX_GSC_INACTIVE_BRATE ) || coder_type != INACTIVE ) ) || EQ_16( core, HQ_CORE ) )
#endif
    {
        /* pitch Q & gain Q bit-budget - part 2*/
        FOR( i = 0; i < nb_subfr; i++ )
@@ -2574,7 +2634,13 @@ ivas_error config_acelp1_IVAS(
        test();
        test();
        /* algebraic codebook bit-budget */
#ifdef NONBE_FIX_GSC_BSTR
        IF( flag_hardcoded /* EVS */ ||
            ( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && coder_type != INACTIVE ) /* high-birate ACELP except IC */ ||
            ( !inactive_coder_type_flag && coder_type == INACTIVE ) /* AVQ inactive */ )
#else
        IF( flag_hardcoded || ( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && coder_type != INACTIVE ) || ( GT_32( total_brate, MAX_GSC_INACTIVE_BRATE ) && coder_type == INACTIVE ) )
#endif
        {
            FOR( i = 0; i < nb_subfr; i++ )
            {
@@ -2675,7 +2741,12 @@ ivas_error config_acelp1_IVAS(
        test();
        test();
        /* AVQ codebook */
#ifdef NONBE_FIX_GSC_BSTR
        IF( ( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && coder_type != INACTIVE ) /* high-birate ACELP except IC */ ||
            ( !inactive_coder_type_flag && coder_type == INACTIVE ) /* AVQ inactive */ )
#else
        IF( ( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && coder_type != INACTIVE ) || ( GT_32( total_brate, MAX_GSC_INACTIVE_BRATE ) && coder_type == INACTIVE ) )
#endif
        {
            FOR( i = 0; i < nb_subfr; i++ )
            {
@@ -2713,7 +2784,13 @@ ivas_error config_acelp1_IVAS(
            }
        }
    }
#ifdef NONBE_FIX_GSC_BSTR
    ELSE IF( ( EQ_16( coder_type, UNVOICED ) && EQ_16( tdm_low_rate_mode, 1 ) && EQ_16( element_mode, IVAS_CPE_TD ) ) /* LBR secondary channel in TD stereo */ ||
             ( ( coder_type == INACTIVE || EQ_16( coder_type, AUDIO ) ) && EQ_16( nb_subfr, NB_SUBFR ) ) /* GSC @12.8kHz */ ||
             ( coder_type == INACTIVE && inactive_coder_type_flag ) /* AVQ inactive */ )
#else
    ELSE IF( ( EQ_16( coder_type, UNVOICED ) && EQ_16( tdm_low_rate_mode, 1 ) && EQ_16( element_mode, IVAS_CPE_TD ) ) || ( ( coder_type == INACTIVE || EQ_16( coder_type, AUDIO ) ) && EQ_16( nb_subfr, NB_SUBFR ) ) || ( coder_type == INACTIVE && LE_32( total_brate, MAX_GSC_INACTIVE_BRATE ) ) )
#endif
    {
        Word32 Local_BR, Pitch_BR;
        Word16 Pitch_CT;
@@ -2854,7 +2931,12 @@ ivas_error config_acelp1_IVAS(
        test();
        test();
        test();
#ifdef NONBE_FIX_GSC_BSTR
        IF( ( EQ_16( L_frame, L_FRAME16k ) && coder_type == INACTIVE && inactive_coder_type_flag ) /* GSC Inactive @16kHz */ ||
            ( GSC_IVAS_mode > 0 && EQ_16( L_frame, L_FRAME16k ) ) ) /* IVAS GSC @16kHz */
#else
        IF( ( EQ_16( L_frame, L_FRAME16k ) && coder_type == INACTIVE && LE_32( total_brate, MAX_GSC_INACTIVE_BRATE ) ) || ( GSC_IVAS_mode > 0 && EQ_16( L_frame, L_FRAME16k ) ) ) /* GSC Inactive @16kHz */
#endif
        {
            acelp_cfg->ubits = 0;
            move16();
+15 −9
Original line number Diff line number Diff line
@@ -162,15 +162,17 @@ void Inac_switch_ematch_ivas_fx(
    Word16 dct_exc_tmp[],      /* i  : GSC excitation in DCT domain          */
    Word16 lt_ener_per_band[], /* i/o: Long term energy per band        Q12  */
    const Word16 coder_type,   /* i  : Coding mode                           */
#ifdef NONBE_FIX_GSC_BSTR
    const Word16 inactive_coder_type_flag, /* i  : AVQ (0) or GSC (1) IC flag   */
#endif
    const Word16 L_frame, /* i  : Frame lenght                          */
#ifndef NONBE_FIX_GSC_BSTR
    const Word32 total_brate, /* i  : total bit rate					     */
    const Word16 Q_exc         /* i  : input and output format of exc2       */
    ,
    const Word16 bfi /* i  : frame lost indicator                  */
    ,
#endif
    const Word16 Q_exc,             /* i  : input and output format of exc2       */
    const Word16 bfi,               /* i  : frame lost indicator                  */
    const Word16 last_core,         /* i  : Last core used                        */
    const Word16 last_codec_mode /* i  : Last codec mode                       */
    ,
    const Word16 last_codec_mode,   /* i  : Last codec mode                       */
    const Word16 tdm_low_rate_mode, /* i  : secondary channel low rate mode flag*/
    const Word16 element_mode       /* i  : element mode                        */
)
@@ -222,7 +224,11 @@ void Inac_switch_ematch_ivas_fx(
            move16();
        }
    }
#ifdef NONBE_FIX_GSC_BSTR
    ELSE IF( ( coder_type == INACTIVE ) && inactive_coder_type_flag )
#else
    ELSE IF( ( coder_type == INACTIVE ) && LE_32( total_brate, MAX_GSC_INACTIVE_BRATE ) )
#endif
    {
        /* Find spectrum and energy per band for inactive frames */
        edct_16fx( exc2, dct_exc_tmp, L_frame, 5, element_mode );
+4 −0
Original line number Diff line number Diff line
@@ -140,6 +140,8 @@
#define FIX_ISSUE_1230                          /* Ittiam: Fix for issue 1230: Basop Enc audible differences and distortion @16kbps */
#define NONBE_1211_DTX_BR_SWITCHING             /* VA: port float issue 1211: fix crash in MASA DTX bitrate switching */
#define FIX_1189_GSC_IVAS_OMASA                 /* VA: Fix for issue 1189: Bitstream desynchornization due to reading/writing of the GSC_IVAS_mode parameter */
#define NONBE_1273_ISM_METADATA_COUNTER         /* VA: BASOP issue 1265, FLP issue 1273: fix counter overflow in ISM metadata encoder */
#define NONBE_FIX_GSC_BSTR                      /* VA: issue 1264 FLP (1189 BASOP): Fix bitstream synchronization between encoder and decoder in ACELP GSC in OMASA */
#define FIX_1101_IVAS_SPAR_DEC_UPMIXER_SF       /* FhG: fix for issue 1101: complexity of spar dec upmixer */
/* Note: each compile switch (FIX_1101_...) is independent from the other ones */
#define FIX_1101_IVAS_SPAR_DEC_UPMIXER_SF_USE_MADD_ADD_WEIGHTS  /* FhG: Defines 1.0f-weight variables, uses Madd operation instead of L_add_sat */
@@ -152,7 +154,9 @@
#define FIX_ISSUE_1214                          /* Ittiam: Fix for issue 1214: Energy leakage in IGF tiles for MDCT-stereo @64kbps SWB*/
#define FIX_881_HILBERT_FILTER                  /* VA: improve the precision of the Hilbert filter to remove 2kHz unwanted tone */
#define FIX_ISSUE_1245                          /* Ittiam: Fix for issue 1245: Basop Encoder: Audible noise for silent Stereo input DTX on @24.4 kbps, @32 kbps*/
#define FIX_920_IGF_INIT_ERROR                  /* FhG: issue 920: fix bitrate mismatch in initial IGF config to avoid error message in same cases */
#define FIX_MINOR_SVD_WMOPS_MR1010X             /* FhG: Minor WMOPS tuning, bit-exact to previous version, saves about 8.2 WMOPS for MR1010 */
#define SVD_WMOPS_OPT                           /* Ittiam : SVD related optimizations */
#define NONBE_FIX_1087_OOB_SBA_DTX_RS                   /* VA: issue 1087: Extend the length of the buffer for MCT decoding to avoid out-of-bound writing in SBA SID bitrate switching decoding */
#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST  /* FhG: reduces WMOPS of param_mc_prm_est, bit-exact to previous version */
#endif
+0 −29
Original line number Diff line number Diff line
@@ -7461,35 +7461,6 @@ int16_t BITS_ALLOC_config_acelp_IVAS(
    const int16_t nb_subfr    /* i  : number of subframes                 */
);

ivas_error config_acelp1_IVAS(
    const int16_t enc_dec,              /* i  : encoder/decoder flag                */
    const int32_t total_brate,          /* i  : total bitrate                       */
    const int32_t core_brate_inp,       /* i  : core bitrate                        */
    const int16_t core,                 /* i  : core                                */
    const int16_t extl,                 /* i  : extension layer                     */
    const int32_t extl_brate,           /* i  : extension layer bitrate             */
    const int16_t L_frame,              /* i  : frame length at internal Fs         */
    const int16_t GSC_noisy_speech,     /* i  : GSC on SWB noisy speech flag        */
    ACELP_config *acelp_cfg,            /* i  : ACELP bit-allocation                */
    const int16_t signaling_bits,       /* i  : number of signaling bits            */
    const int16_t coder_type,           /* i  : coder type                          */
    const int16_t tc_subfr,             /* i  : TC subfr ID                         */
    const int16_t tc_call,              /* i  : TC call number (0,1,2)              */
    int16_t *nBits_es_Pred,             /* o  : number of bits for Es_pred Q        */
    int16_t *unbits,                    /* o  : number of unused bits               */
    const int16_t element_mode,         /* i  : element mode                        */
    int16_t *uc_two_stage_flag,         /* o  : flag undicating two-stage UC        */
    const int16_t tdm_lp_reuse_flag,    /* i  : LPC reuse flag (can be 1 only with secondary channel*/
    const int16_t tdm_low_rate_mode,    /* i  : secondary channel low rate mode flag*/
    const int16_t idchan,               /* i  : channel id                          */
    const int16_t active_cnt,           /* i  : Active frame counter                */
    const int16_t tdm_Pitch_reuse_flag, /* i  : primary channel pitch reuse flag    */
    const int16_t tdm_LRTD_flag,        /* i  : LRTD stereo mode flag               */
    const int16_t GSC_IVAS_mode         /* i  : GSC IVAS mode                       */
);

/*! r: ACELP16k flag */


void FEC_clas_estim(
    const float *syn,
Loading