Justin Ruggles <[email protected]> writes: > --- > This fixes fate-aac-ap05_48 on PPC. Might fix it on ARM too. > > 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)); > }
The change makes sense as such, but I wonder if those memcpies couldn't be replaced with some pointer swizzling instead. That can be a separate patch of course. -- Måns Rullgård [email protected] _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
