Commit 165e67de authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

port float MR 1401

parent 8bacf969
Loading
Loading
Loading
Loading
Loading
+12 −4
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
@@ -219,6 +219,7 @@

#define FIX_ACCESS_WITHIN_NULL_STRUCT_MC_BW_SWITCHING   /* FhG: fix usan error in MCT with bw swicthing */
#define NONBE_FIX_986_MC_BW_SWITCHING                   /* FhG: fix crash in bw and br switching with MC */
#define FIX_1001_ARI_HM_OVERFLOW                        /* FhG: fix for undef behaviour in in the harmonic TCX model arithmetic coder */

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

+12 −4
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)                        */
+11 −3
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 ) )
+23 −7
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 );