X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=libavcodec%2Faac.h;h=375e6b17172f3d6869d50c2075eca6fc01c0d859;hb=345a96c327e8f2a8077189af9f5e8d2b3f4ad5fe;hp=32baf9d0c5818ac9acca3d3234bb6cb75c4813e6;hpb=e4cbf7529ba4bcfff47c44b0d026ecb356004c8c;p=ffmpeg diff --git a/libavcodec/aac.h b/libavcodec/aac.h index 32baf9d0c58..375e6b17172 100644 --- a/libavcodec/aac.h +++ b/libavcodec/aac.h @@ -32,7 +32,6 @@ #include "libavutil/float_dsp.h" #include "avcodec.h" -#include "dsputil.h" #include "fft.h" #include "mpeg4audio.h" #include "sbr.h" @@ -141,7 +140,6 @@ typedef struct PredictorState { #define SCALE_MAX_POS 255 ///< scalefactor index maximum value #define SCALE_MAX_DIFF 60 ///< maximum scalefactor difference allowed by standard #define SCALE_DIFF_ZERO 60 ///< codebook index corresponding to zero scalefactor indices difference -#define POW_SF2_ZERO 200 ///< ff_aac_pow2sf_tab index corresponding to pow(2, 0); /** * Long Term Prediction @@ -159,7 +157,7 @@ typedef struct LongTermPrediction { typedef struct IndividualChannelStream { uint8_t max_sfb; ///< number of scalefactor bands per group enum WindowSequence window_sequence[2]; - uint8_t use_kb_window[2]; ///< If set, use Kaiser-Bessel window, otherwise use a sinus window. + uint8_t use_kb_window[2]; ///< If set, use Kaiser-Bessel window, otherwise use a sine window. int num_window_groups; uint8_t group_len[8]; LongTermPrediction ltp; @@ -236,10 +234,11 @@ typedef struct SingleChannelElement { int sf_idx[128]; ///< scalefactor indices (used by encoder) uint8_t zeroes[128]; ///< band is not coded (used by encoder) 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(32, float, saved)[1536]; ///< overlap + DECLARE_ALIGNED(32, float, ret_buf)[2048]; ///< PCM output buffer DECLARE_ALIGNED(16, float, ltp_state)[3072]; ///< time signal for LTP PredictorState predictor_state[MAX_PREDICTORS]; + float *ret; ///< PCM output } SingleChannelElement; /** @@ -262,7 +261,7 @@ typedef struct ChannelElement { */ typedef struct AACContext { AVCodecContext *avctx; - AVFrame frame; + AVFrame *frame; int is_saved; ///< Set if elements have stored overlap from previous frame. DynamicRangeControl che_drc; @@ -290,18 +289,18 @@ typedef struct AACContext { */ FFTContext mdct; FFTContext mdct_small; + FFTContext mdct_ld; FFTContext mdct_ltp; - DSPContext dsp; FmtConvertContext fmt_conv; AVFloatDSPContext fdsp; int random_state; /** @} */ /** - * @name Members used for output interleaving + * @name Members used for output * @{ */ - float *output_data[MAX_CHANNELS]; ///< Points to each element's 'ret' buffer (PCM output). + SingleChannelElement *output_element[MAX_CHANNELS]; ///< Points to each SingleChannelElement /** @} */ DECLARE_ALIGNED(32, float, temp)[128];