Commit 21a08173 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

Merge branch '1607_ref_port-mr-1401-from-float' into 'float-pc'

Port float MR 1401 to float-pc

See merge request !1623
parents 16855ad6 59b57f76
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -205,7 +205,11 @@ int16_t CountIndexBits(
 *-------------------------------------------------------------------*/

int16_t tcx_hm_render(
#ifdef FIX_1001_ARI_HM_OVERFLOW
    const int32_t lag, /* i  : pitch lag                             */
#else
    const int16_t lag, /* i  : pitch lag                             */
#endif
    const int16_t fract_res, /* i  : fractional resolution of the lag      */
    Word16 p[]               /* o  : harmonic model (Q13)                  */
)
@@ -265,7 +269,11 @@ int16_t tcx_hm_render(

void tcx_hm_modify_envelope(
    const Word16 gain, /* i  : HM gain (Q11)                         */
#ifdef FIX_1001_ARI_HM_OVERFLOW
    const int32_t lag,
#else
    const int16_t lag,
#endif
    const int16_t fract_res,
    const Word16 p[],     /* i  : harmonic model (Q13)                  */
    Word32 env[],         /* i/o: envelope (Q16)                        */
+1 −0
Original line number Diff line number Diff line
@@ -224,6 +224,7 @@
#define FIX_699_FILE_READER_JBM_TSM                     /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */
#define FIX_997_REMOVE_SPAR_DEC_UPMIXER                 /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */
#define FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN        /* FhG: fix for #1003: fix USAN caused by ParamISM reconfig                    */
#define FIX_1001_ARI_HM_OVERFLOW                        /* FhG: fix for undef behaviour in in the harmonic TCX model arithmetic coder */

/* #################### End BASOP porting switches ############################ */

+9 −1
Original line number Diff line number Diff line
@@ -7833,14 +7833,22 @@ int16_t DecodeIndex(
#define GET_ADJ2( T, L, F ) ( ( ( L ) << ( F ) ) - ( T ) )

int16_t tcx_hm_render(
#ifdef FIX_1001_ARI_HM_OVERFLOW
    const int32_t lag, /* i  : pitch lag                             */
#else
    const int16_t lag, /* i  : pitch lag                             */
#endif
    const int16_t fract_res, /* i  : fractional resolution of the lag      */
    Word16 p[]               /* o  : harmonic model (Q13)                  */
);

void tcx_hm_modify_envelope(
    const Word16 gain, /* i  : HM gain (Q11)                         */
#ifdef FIX_1001_ARI_HM_OVERFLOW
    const int32_t lag,
#else
    const int16_t lag,
#endif
    const int16_t fract_res,
    const Word16 p[],     /* i  : harmonic model (Q13)                  */
    Word32 env[],         /* i/o: envelope (Q16)                        */
+8 −0
Original line number Diff line number Diff line
@@ -120,7 +120,11 @@ void tcx_hm_decode(
    int16_t *hm_bits           /* o  : bit consumption               */
)
{
#ifdef FIX_1001_ARI_HM_OVERFLOW
    int32_t lag;
#else
    int16_t lag;
#endif
    int32_t tmpL;
    int16_t NumTargetBits, fract_res;
    Word16 p[2 * kTcxHmParabolaHalfWidth + 1], gain;
@@ -144,7 +148,11 @@ void tcx_hm_decode(

    /* Convert the index to lag */
    UnmapIndex( prm_hm[1], L_frame >= 256, LtpPitchLag, ( NumTargetBits <= kSmallerLagsTargetBitsThreshold ) || ( L_frame < 256 ), &fract_res, &tmpL );
#ifdef FIX_1001_ARI_HM_OVERFLOW
    lag = tmpL;
#else
    lag = (int16_t) tmpL;
#endif

    /* Render the harmonic model */
    if ( tcx_hm_render( lag, fract_res, p ) )
+16 −0
Original line number Diff line number Diff line
@@ -418,7 +418,11 @@ static void PeakFilter(
static float tcx_hm_get_re(
    const float x[],   /* i  : absolute spectrum               */
    const Word16 gain, /* i  : HM gain (Q11)                   */
#ifdef FIX_1001_ARI_HM_OVERFLOW
    const int32_t lag,
#else
    const int16_t lag,
#endif
    const int16_t fract_res,
    const Word16 p[],     /* i  : harmonic model (Q13)            */
    const Word32 env[],   /* i  : envelope (Q16)                  */
@@ -467,7 +471,11 @@ static float tcx_hm_get_re(
static void tcx_hm_quantize_gain(
    const float x[],    /* i  : absolute spectrum                     */
    const Word32 env[], /* i  : envelope (Q16)                        */
#ifdef FIX_1001_ARI_HM_OVERFLOW
    const int32_t lag,
#else
    const int16_t lag,
#endif
    const int16_t fract_res,
    Word16 p[],               /* i  : harmonic model (Q13)                  */
    const int16_t L_frame,    /* i  : number of spectral lines              */
@@ -557,7 +565,11 @@ void tcx_hm_analyse(
    int16_t *hm_bits            /* o  : bit consumption               */
)
{
#ifdef FIX_1001_ARI_HM_OVERFLOW
    int32_t lag;
#else
    int16_t lag;
#endif
    int32_t tmpL;
    int16_t fract_res;
    float fspec[N_MAX_ARI], RelativeScore;
@@ -583,7 +595,11 @@ void tcx_hm_analyse(

    /* Convert the index to lag */
    UnmapIndex( prm_hm[1], L_frame >= 256, LtpPitchLag, ( targetBits - *hm_bits <= kSmallerLagsTargetBitsThreshold ) || ( L_frame < 256 ), &fract_res, &tmpL );
#ifdef FIX_1001_ARI_HM_OVERFLOW
    lag = tmpL;
#else
    lag = (int16_t) tmpL;
#endif

    /* Render harmonic model */
    tcx_hm_render( lag, fract_res, p );