From 033a4a942a81a1880ca5a89e7eb3a2b5f529a7fb Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Sun, 15 May 2011 11:07:29 -0400 Subject: [PATCH] aacdec: Use float instead of int16_t for ltp_state to avoid needless rounding. --- libavcodec/aac.h | 2 +- libavcodec/aacdec.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libavcodec/aac.h b/libavcodec/aac.h index ecb8191566..76b6a7821b 100644 --- a/libavcodec/aac.h +++ b/libavcodec/aac.h @@ -227,7 +227,7 @@ typedef struct { DECLARE_ALIGNED(32, float, coeffs)[1024]; ///< coefficients for IMDCT DECLARE_ALIGNED(32, float, saved)[1024]; ///< overlap DECLARE_ALIGNED(32, float, ret)[2048]; ///< PCM output - DECLARE_ALIGNED(16, int16_t, ltp_state)[3072]; ///< time signal for LTP + DECLARE_ALIGNED(16, float, ltp_state)[3072]; ///< time signal for LTP PredictorState predictor_state[MAX_PREDICTORS]; } SingleChannelElement; diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c index d26cce994c..5f9dd834a0 100644 --- a/libavcodec/aacdec.c +++ b/libavcodec/aacdec.c @@ -1820,9 +1820,9 @@ static void update_ltp(AACContext *ac, SingleChannelElement *sce) saved_ltp[i + 512] = ac->buf_mdct[1023 - i] * lwindow[511 - i]; } - memcpy(sce->ltp_state, &sce->ltp_state[1024], 1024 * sizeof(int16_t)); - ac->fmt_conv.float_to_int16(&(sce->ltp_state[1024]), sce->ret, 1024); - ac->fmt_conv.float_to_int16(&(sce->ltp_state[2048]), saved_ltp, 1024); + memcpy(sce->ltp_state, sce->ltp_state+1024, 1024 * sizeof(*sce->ltp_state)); + memcpy(sce->ltp_state+1024, sce->ret, 1024 * sizeof(*sce->ltp_state)); + memcpy(sce->ltp_state+2048, saved_ltp, 1024 * sizeof(*sce->ltp_state)); } /**