Loading lib_com/ari_hm.c +8 −0 Original line number Diff line number Diff line Loading @@ -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) */ ) Loading Loading @@ -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) */ Loading lib_com/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -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 */ Loading lib_com/prot.h +8 −0 Original line number Diff line number Diff line Loading @@ -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) */ Loading lib_dec/ari_hm_dec.c +8 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 ) ) Loading lib_enc/ari_hm_enc.c +16 −0 Original line number Diff line number Diff line Loading @@ -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) */ Loading Loading @@ -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 */ Loading Loading @@ -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; Loading @@ -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 ); Loading Loading
lib_com/ari_hm.c +8 −0 Original line number Diff line number Diff line Loading @@ -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) */ ) Loading Loading @@ -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) */ Loading
lib_com/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -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 */ Loading
lib_com/prot.h +8 −0 Original line number Diff line number Diff line Loading @@ -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) */ Loading
lib_dec/ari_hm_dec.c +8 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 ) ) Loading
lib_enc/ari_hm_enc.c +16 −0 Original line number Diff line number Diff line Loading @@ -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) */ Loading Loading @@ -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 */ Loading Loading @@ -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; Loading @@ -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 ); Loading