aacdec: Use float instead of int16_t for ltp_state to avoid needless rounding.
This commit is contained in:
parent
7f995abed3
commit
033a4a942a
@ -227,7 +227,7 @@ typedef struct {
|
|||||||
DECLARE_ALIGNED(32, float, coeffs)[1024]; ///< coefficients for IMDCT
|
DECLARE_ALIGNED(32, float, coeffs)[1024]; ///< coefficients for IMDCT
|
||||||
DECLARE_ALIGNED(32, float, saved)[1024]; ///< overlap
|
DECLARE_ALIGNED(32, float, saved)[1024]; ///< overlap
|
||||||
DECLARE_ALIGNED(32, float, ret)[2048]; ///< PCM output
|
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];
|
PredictorState predictor_state[MAX_PREDICTORS];
|
||||||
} SingleChannelElement;
|
} SingleChannelElement;
|
||||||
|
|
||||||
|
@ -1820,9 +1820,9 @@ static void update_ltp(AACContext *ac, SingleChannelElement *sce)
|
|||||||
saved_ltp[i + 512] = ac->buf_mdct[1023 - i] * lwindow[511 - i];
|
saved_ltp[i + 512] = ac->buf_mdct[1023 - i] * lwindow[511 - i];
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(sce->ltp_state, &sce->ltp_state[1024], 1024 * sizeof(int16_t));
|
memcpy(sce->ltp_state, sce->ltp_state+1024, 1024 * sizeof(*sce->ltp_state));
|
||||||
ac->fmt_conv.float_to_int16(&(sce->ltp_state[1024]), sce->ret, 1024);
|
memcpy(sce->ltp_state+1024, sce->ret, 1024 * sizeof(*sce->ltp_state));
|
||||||
ac->fmt_conv.float_to_int16(&(sce->ltp_state[2048]), saved_ltp, 1024);
|
memcpy(sce->ltp_state+2048, saved_ltp, 1024 * sizeof(*sce->ltp_state));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user