#ifndef AVCODEC_AC3DEC_H
#define AVCODEC_AC3DEC_H
+#include "libavutil/float_dsp.h"
#include "libavutil/lfg.h"
#include "ac3.h"
#include "ac3dsp.h"
/** Large enough for maximum possible frame size when the specification limit is ignored */
#define AC3_FRAME_BUFFER_SIZE 32768
-typedef struct {
+typedef struct AC3DecodeContext {
AVClass *class; ///< class for AVOptions
AVCodecContext *avctx; ///< parent context
GetBitContext gbc; ///< bitstream reader
///@name Optimization
DSPContext dsp; ///< for optimization
+ AVFloatDSPContext fdsp;
AC3DSPContext ac3dsp;
FmtConvertContext fmt_conv; ///< optimized conversion functions
- float mul_bias; ///< scaling for float_to_int16 conversion
///@}
+ float *outptr[AC3_MAX_CHANNELS];
+ float *xcfptr[AC3_MAX_CHANNELS];
+ float *dlyptr[AC3_MAX_CHANNELS];
+
///@name Aligned arrays
DECLARE_ALIGNED(16, int, fixed_coeffs)[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< fixed-point transform coefficients
DECLARE_ALIGNED(32, float, transform_coeffs)[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< transform coefficients
*/
void ff_eac3_decode_transform_coeffs_aht_ch(AC3DecodeContext *s, int ch);
-void ff_ac3_downmix_c(float (*samples)[256], float (*matrix)[2],
- int out_ch, int in_ch, int len);
-
/**
* Apply spectral extension to each channel by copying lower frequency
* coefficients to higher frequency bins and applying side information to