aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2011-05-15 11:07:29 -0400
committerJustin Ruggles <justin.ruggles@gmail.com>2011-05-15 17:42:05 -0400
commit033a4a942a81a1880ca5a89e7eb3a2b5f529a7fb (patch)
tree56cfc896c783f5accb0d872130a8ee966648f487
parent7f995abed362be3ae54c6f0464cf00b2c89b7678 (diff)
downloadffmpeg-033a4a942a81a1880ca5a89e7eb3a2b5f529a7fb.tar.gz
aacdec: Use float instead of int16_t for ltp_state to avoid needless rounding.
-rw-r--r--libavcodec/aac.h2
-rw-r--r--libavcodec/aacdec.c6
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));
}
/**