Commit 48088126 authored by multrus's avatar multrus
Browse files

Merge branch 'basop-2385-harmonize-gettcxonly_ivas_fx-gettcxonly-gettcxonly_fx-2' into 'main'

Resolve "Harmonize getTcxonly_ivas_fx(), getTcxonly(), getTcxonly_fx()"

Closes #2385

See merge request !2816
parents 31e19921 6683749c
Loading
Loading
Loading
Loading
+70 −0
Original line number Diff line number Diff line
@@ -169,7 +169,74 @@ Word16 get_codec_mode(
    return codec_mode; /*Q0*/
}

#ifdef FIX_2385_GETTCXONLY
/*-------------------------------------------------------------------*
 * getTcxonly()
 *
 *
 *-------------------------------------------------------------------*/

Word16 getTcxonly_fx(
    const Word16 element_mode, /* i  : IVAS element mode                    Q0*/
    const Word32 total_brate,  /* i  : total bitrate                        Q0*/
    const Word16 MCT_flag,     /* i  : hMCT handle allocated (1) or not (0) Q0*/
    const Word16 is_ism_format /* i  : flag indicating ISM format           Q0*/
)
{
    Word16 tcxonly = 0;
    move16();
    Word32 temp_flag;

    SWITCH( element_mode )
    {
        case EVS_MONO:
            if ( GT_32( total_brate, ACELP_32k ) )
            {
                tcxonly = 1;
                move16();
            }
            BREAK;
        case IVAS_SCE:
            temp_flag = MAX_ACELP_BRATE;
            move32();
            if ( is_ism_format )
            {
                temp_flag = MAX_ACELP_BRATE_ISM;
                move32();
            }
            if ( GT_32( total_brate, temp_flag ) )
            {
                tcxonly = 1;
                move16();
            }
            BREAK;
        case IVAS_CPE_DFT:
        case IVAS_CPE_TD:
            if ( GT_32( total_brate, MAX_ACELP_BRATE ) )
            {
                tcxonly = 1;
                move16();
            }
            BREAK;
        case IVAS_CPE_MDCT:
            temp_flag = IVAS_48k;
            move32();
            if ( MCT_flag )
            {
                temp_flag = IVAS_32k;
                move32();
            }
            if ( GE_32( total_brate, temp_flag ) )
            {
                tcxonly = 1;
                move16();
            }
            BREAK;
    }

    return tcxonly; /*Q0*/
}
#else
/*-------------------------------------------------------------------*
 * getTcxonly_ivas()
 *
@@ -244,6 +311,8 @@ Word16 getTcxonly_ivas_fx(

    return tcxonly; /*Q0*/
}
#endif /* FIX_2385_GETTCXONLY */
#ifndef FIX_2385_GETTCXONLY

Word16 getTcxonly(
    const Word32 total_brate /* i  : total bitrate                       */
@@ -331,6 +400,7 @@ Word16 getTcxonly_fx(

    return tcxonly; /*Q0*/
}
#endif /* FIX_2385_GETTCXONLY */

/*-------------------------------------------------------------------*
 * getCtxHm()
+1 −0
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@
#define HARMONIZE_READ_DECODE_TNS                       /* FhG basop 2389: Harm between two pairs of functions. */
#define FIX_FLOAT_1526_DIRAC_MEM_LEAK                   /* FhG: float issue 1526: potential memory leak in DirAC handles in case of format switching */
#define FIX_2437_HARMONIZE_ENCODERINDEX                 /* FhG: basop issue 2437 EncoderIndex_ivas_fx() and EncoderIndex_fx()*/
#define FIX_2385_GETTCXONLY                             /* FhG: issue 2385 : harmonizing getTcxonly_ivas_fx() and getTcxonly_ivas_fx() functions */

/* #################### End BE switches ################################## */

+4 −0
Original line number Diff line number Diff line
@@ -3802,10 +3802,12 @@ Word16 get_cng_mode(
Word16 get_codec_mode(
    const Word32 total_brate /* i  : total bitrate   */
);
#ifndef FIX_2385_GETTCXONLY

Word16 getTcxonly(
    const Word32 total_brate /* i  : total bitrate                       */
);
#endif

Word16 getTcxonly_fx(
    const Word16 element_mode, /* i  : IVAS element mode                   */
@@ -10266,6 +10268,7 @@ void configureFdCngEnc_ivas_fx(
    const Word16 bwidth,         /* Q0 */
    const Word32 total_brate     /* Q0 */
);
#ifndef FIX_2385_GETTCXONLY

Word16 getTcxonly_ivas_fx(
    const Word16 element_mode, /* i  : IVAS element mode                   */
@@ -10273,6 +10276,7 @@ Word16 getTcxonly_ivas_fx(
    const Word16 MCT_flag,     /* i  : hMCT handle allocated (1) or not (0)*/
    const Word16 is_ism_format /* i  : flag indicating ISM format          */
);
#endif

void SetModeIndex_ivas_fx(
    Encoder_State *st,              /* i  : Encoder state                          */
+11 −0
Original line number Diff line number Diff line
@@ -32,6 +32,12 @@ void open_decoder_LPD_fx(
    TCX_LTP_DEC_HANDLE hTcxLtpDec;
    HQ_DEC_HANDLE hHQ_core;
    TCX_DEC_HANDLE hTcxDec;
#ifdef FIX_2385_GETTCXONLY
    Word16 MCT_flag;

    MCT_flag = 0; /* TODO: workaround for future harmonization of functions */
    move16();
#endif

    hBPF = st->hBPF;
    hBWE_TD = st->hBWE_TD;
@@ -67,10 +73,15 @@ void open_decoder_LPD_fx(
        st->L_frameTCX_past = hTcxDec->L_frameTCX;
        move16();
    }

#ifdef FIX_2385_GETTCXONLY
    st->tcxonly = getTcxonly_fx( st->element_mode, total_brate, MCT_flag, st->is_ism_format );
#else
    st->tcxonly = getTcxonly(
        st->total_brate
        /*, st->is_ism_format Needed in the last version of float IVAS */
    );
#endif
    move16();

    /* the TD TCX PLC in MODE1 still runs with 80ms subframes */
+4 −0
Original line number Diff line number Diff line
@@ -245,7 +245,11 @@ ivas_error evs_dec_fx(
    test();
    test();
    test();
#ifdef FIX_2385_GETTCXONLY
    IF( st_fx->use_partial_copy && ( ( sub( st_fx->last_core, HQ_CORE ) == 0 ) || ( sub( st_fx->last_core, TCX_10_CORE ) == 0 ) || ( ( sub( st_fx->last_core, TCX_20_CORE ) == 0 ) && getTcxonly_fx( EVS_MONO, st_fx->last_total_brate, 0, 0 ) ) ) )
#else
    IF( st_fx->use_partial_copy && ( ( sub( st_fx->last_core, HQ_CORE ) == 0 ) || ( sub( st_fx->last_core, TCX_10_CORE ) == 0 ) || ( ( sub( st_fx->last_core, TCX_20_CORE ) == 0 ) && getTcxonly( /*EVS_MONO, */ st_fx->last_total_brate /*, 0, 0*/ ) ) ) )
#endif
    {
        st_fx->bfi = 1;
        move16();
Loading