*/
/**
- * @file libavcodec/aac.h
+ * @file
* AAC definitions and structures
* @author Oded Shimon ( ods15 ods15 dyndns org )
* @author Maxim Gavrilov ( maxim.gavrilov gmail com )
#include "avcodec.h"
#include "dsputil.h"
+#include "fft.h"
#include "mpeg4audio.h"
+#include "sbr.h"
#include <stdint.h>
-#define AAC_INIT_VLC_STATIC(num, size) \
- INIT_VLC_STATIC(&vlc_spectral[num], 8, ff_aac_spectral_sizes[num], \
- ff_aac_spectral_bits[num], sizeof( ff_aac_spectral_bits[num][0]), sizeof( ff_aac_spectral_bits[num][0]), \
- ff_aac_spectral_codes[num], sizeof(ff_aac_spectral_codes[num][0]), sizeof(ff_aac_spectral_codes[num][0]), \
- size);
-
#define MAX_CHANNELS 64
#define MAX_ELEM_ID 16
float sf[120]; ///< scalefactors
int sf_idx[128]; ///< scalefactor indices (used by encoder)
uint8_t zeroes[128]; ///< band is not coded (used by encoder)
- DECLARE_ALIGNED_16(float, coeffs[1024]); ///< coefficients for IMDCT
- DECLARE_ALIGNED_16(float, saved[1024]); ///< overlap
- DECLARE_ALIGNED_16(float, ret[1024]); ///< PCM output
+ DECLARE_ALIGNED(16, float, coeffs)[1024]; ///< coefficients for IMDCT
+ DECLARE_ALIGNED(16, float, saved)[1024]; ///< overlap
+ DECLARE_ALIGNED(16, float, ret)[2048]; ///< PCM output
PredictorState predictor_state[MAX_PREDICTORS];
} SingleChannelElement;
SingleChannelElement ch[2];
// CCE specific
ChannelCoupling coup;
+ SpectralBandReplication sbr;
} ChannelElement;
/**
* main AAC context
*/
typedef struct {
- AVCodecContext * avccontext;
+ AVCodecContext *avctx;
MPEG4AudioConfig m4ac;
enum ChannelPosition che_pos[4][MAX_ELEM_ID]; /**< channel element channel mapping with the
* first index as the first 4 raw data block types
*/
- ChannelElement * che[4][MAX_ELEM_ID];
- ChannelElement * tag_che_map[4][MAX_ELEM_ID];
+ ChannelElement *che[4][MAX_ELEM_ID];
+ ChannelElement *tag_che_map[4][MAX_ELEM_ID];
int tags_mapped;
/** @} */
* @defgroup temporary aligned temporary buffers (We do not want to have these on the stack.)
* @{
*/
- DECLARE_ALIGNED_16(float, buf_mdct[1024]);
+ DECLARE_ALIGNED(16, float, buf_mdct)[1024];
/** @} */
/**
* @{
*/
float *output_data[MAX_CHANNELS]; ///< Points to each element's 'ret' buffer (PCM output).
- float add_bias; ///< offset for dsp.float_to_int16
float sf_scale; ///< Pre-scale for correct IMDCT and dsp.float_to_int16.
int sf_offset; ///< offset into pow2sf_tab as appropriate for dsp.float_to_int16
/** @} */
- DECLARE_ALIGNED(16, float, temp[128]);
+ DECLARE_ALIGNED(16, float, temp)[128];
enum OCStatus output_configured;
} AACContext;