X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fac3dec.h;h=babd0a7d70b26ba5dbecd7c3468b8e6d0639708f;hb=453642f8afe9f979fcc813a246b1ec656ec36a93;hp=1e8ee68e614fd61d8584df380099da8b623141a0;hpb=30b39164256999efc8d77edc85e2e0b963c24834;p=ffmpeg diff --git a/libavcodec/ac3dec.h b/libavcodec/ac3dec.h index 1e8ee68e614..babd0a7d70b 100644 --- a/libavcodec/ac3dec.h +++ b/libavcodec/ac3dec.h @@ -50,11 +50,12 @@ #ifndef AVCODEC_AC3DEC_H #define AVCODEC_AC3DEC_H +#include "libavutil/float_dsp.h" #include "libavutil/lfg.h" #include "ac3.h" #include "ac3dsp.h" +#include "bswapdsp.h" #include "get_bits.h" -#include "dsputil.h" #include "fft.h" #include "fmtconvert.h" @@ -68,7 +69,6 @@ typedef struct AC3DecodeContext { AVClass *class; ///< class for AVOptions AVCodecContext *avctx; ///< parent context - AVFrame frame; ///< AVFrame for decoded output GetBitContext gbc; ///< bitstream reader ///@name Bit stream information @@ -79,14 +79,22 @@ typedef struct AC3DecodeContext { int bit_rate; ///< stream bit rate, in bits-per-second int sample_rate; ///< sample frequency, in Hz int num_blocks; ///< number of audio blocks + int bitstream_id; ///< bitstream id (bsid) int bitstream_mode; ///< bitstream mode (bsmod) int channel_mode; ///< channel mode (acmod) - int channel_layout; ///< channel layout int lfe_on; ///< lfe channel in use int channel_map; ///< custom channel map + int preferred_downmix; ///< Preferred 2-channel downmix mode (dmixmod) int center_mix_level; ///< Center mix level index + int center_mix_level_ltrt; ///< Center mix level index for Lt/Rt (ltrtcmixlev) int surround_mix_level; ///< Surround mix level index + int surround_mix_level_ltrt; ///< Surround mix level index for Lt/Rt (ltrtsurmixlev) + int lfe_mix_level_exists; ///< indicates if lfemixlevcod is specified (lfemixlevcode) + int lfe_mix_level; ///< LFE mix level index (lfemixlevcod) int eac3; ///< indicates if current frame is E-AC-3 + int dolby_surround_mode; ///< dolby surround mode (dsurmod) + int dolby_surround_ex_mode; ///< dolby surround ex mode (dsurexmod) + int dolby_headphone_mode; ///< dolby headphone mode (dheadphonmod) ///@} ///@name Frame syntax parameters @@ -192,7 +200,8 @@ typedef struct AC3DecodeContext { ///@} ///@name Optimization - DSPContext dsp; ///< for optimization + BswapDSPContext bdsp; + AVFloatDSPContext fdsp; AC3DSPContext ac3dsp; FmtConvertContext fmt_conv; ///< optimized conversion functions ///@} @@ -202,7 +211,7 @@ typedef struct AC3DecodeContext { 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(16, int32_t, 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 DECLARE_ALIGNED(32, float, delay)[AC3_MAX_CHANNELS][AC3_BLOCK_SIZE]; ///< delay - added to the next block DECLARE_ALIGNED(32, float, window)[AC3_BLOCK_SIZE]; ///< window coefficients