[FFmpeg-cvslog] aacdec: Use float instead of int16_t for ltp_state to avoid needless rounding.

Justin Ruggles git at videolan.org
Mon May 16 05:08:18 CEST 2011


ffmpeg | branch: master | Justin Ruggles <justin.ruggles at gmail.com> | Sun May 15 11:07:29 2011 -0400| [033a4a942a81a1880ca5a89e7eb3a2b5f529a7fb] | committer: Justin Ruggles

aacdec: Use float instead of int16_t for ltp_state to avoid needless rounding.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=033a4a942a81a1880ca5a89e7eb3a2b5f529a7fb
---

 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 ecb8191..76b6a78 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 d26cce9..5f9dd83 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));
 }
 
 /**



More information about the ffmpeg-cvslog mailing list