Commit 2b3f042e authored by multrus's avatar multrus
Browse files

patch for issue 1001

parent 66e8f1ba
Loading
Loading
Loading
Loading
Loading
+8 −0
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 −1
Original line number Diff line number Diff line
@@ -154,7 +154,7 @@
/*#define SPLIT_REND_WITH_HEAD_ROT  */                  /* Dlb,FhG: Split Rendering contributions 21 and 35 */

#define FIX_966_VAR_OVERFLOW_IN_HARM_MODEL_ARI          /* FhG: fix and undef behaviour bug in the harmonic TCX model arithmetic coder */

#define FIX_1001_ARI_HM_OVERFLOW                        /* FhG: fix for undef behaviour in in the harmonic TCX model arithmetic coder */



+8 −0
Original line number Diff line number Diff line
@@ -7832,14 +7832,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 );