X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fwma.h;h=c954d71e289ac2999e9c02898bf1181ae7a80dea;hb=404e51478ecad060249d5b9bee6ab39a8a9d8c1c;hp=d12c55ce2a3d2a25a3f0273db55e8d015a9b1abc;hpb=2912e87a6c9264d556734e2bf94a99c64cf9b102;p=ffmpeg diff --git a/libavcodec/wma.h b/libavcodec/wma.h index d12c55ce2a3..c954d71e289 100644 --- a/libavcodec/wma.h +++ b/libavcodec/wma.h @@ -22,11 +22,12 @@ #ifndef AVCODEC_WMA_H #define AVCODEC_WMA_H +#include "libavutil/float_dsp.h" + +#include "avcodec.h" +#include "fft.h" #include "get_bits.h" #include "put_bits.h" -#include "dsputil.h" -#include "fft.h" -#include "fmtconvert.h" /* size of blocks */ #define BLOCK_MIN_BITS 7 @@ -49,9 +50,9 @@ #define LSP_POW_BITS 7 -//FIXME should be in wmadec +// FIXME should be in wmadec #define VLCBITS 9 -#define VLCMAX ((22+VLCBITS-1)/VLCBITS) +#define VLCMAX ((22 + VLCBITS - 1) / VLCBITS) typedef float WMACoef; ///< type for decoded coefficients, int16_t would be enough for wma 1/2 @@ -64,14 +65,10 @@ typedef struct CoefVLCTable { } CoefVLCTable; typedef struct WMACodecContext { - AVCodecContext* avctx; + AVCodecContext *avctx; GetBitContext gb; PutBitContext pb; - int sample_rate; - int nb_channels; - int bit_rate; int version; ///< 1 = 0x160 (WMAV1), 2 = 0x161 (WMAV2) - int block_align; int use_bit_reservoir; int use_variable_block_len; int use_exp_vlc; ///< exponent coding: 0 = lsp, 1 = vlc + delta @@ -92,7 +89,7 @@ typedef struct WMACodecContext { int high_band_values[MAX_CHANNELS][HIGH_BAND_MAX_SIZE]; /* there are two possible tables for spectral coefficients */ -//FIXME the following 3 tables should be shared between decoders +// FIXME the following 3 tables should be shared between decoders VLC coef_vlc[2]; uint16_t *run_table[2]; float *level_table[2]; @@ -113,17 +110,17 @@ typedef struct WMACodecContext { uint8_t ms_stereo; ///< true if mid/side stereo mode uint8_t channel_coded[MAX_CHANNELS]; ///< true if channel is coded int exponents_bsize[MAX_CHANNELS]; ///< log2 ratio frame/exp. length - DECLARE_ALIGNED(16, float, exponents)[MAX_CHANNELS][BLOCK_MAX_SIZE]; + DECLARE_ALIGNED(32, float, exponents)[MAX_CHANNELS][BLOCK_MAX_SIZE]; float max_exponent[MAX_CHANNELS]; WMACoef coefs1[MAX_CHANNELS][BLOCK_MAX_SIZE]; - DECLARE_ALIGNED(16, float, coefs)[MAX_CHANNELS][BLOCK_MAX_SIZE]; - DECLARE_ALIGNED(16, FFTSample, output)[BLOCK_MAX_SIZE * 2]; + DECLARE_ALIGNED(32, float, coefs)[MAX_CHANNELS][BLOCK_MAX_SIZE]; + DECLARE_ALIGNED(32, FFTSample, output)[BLOCK_MAX_SIZE * 2]; FFTContext mdct_ctx[BLOCK_NB_SIZES]; float *windows[BLOCK_NB_SIZES]; /* output buffer for one frame and the last for IMDCT windowing */ - DECLARE_ALIGNED(16, float, frame_out)[MAX_CHANNELS][BLOCK_MAX_SIZE * 2]; + DECLARE_ALIGNED(32, float, frame_out)[MAX_CHANNELS][BLOCK_MAX_SIZE * 2]; /* last frame info */ - uint8_t last_superframe[MAX_CODED_SUPERFRAME_SIZE + 4]; /* padding added */ + uint8_t last_superframe[MAX_CODED_SUPERFRAME_SIZE + AV_INPUT_BUFFER_PADDING_SIZE]; /* padding added */ int last_bitoffset; int last_superframe_len; float noise_table[NOISE_TAB_SIZE]; @@ -134,32 +131,28 @@ typedef struct WMACodecContext { float lsp_pow_e_table[256]; float lsp_pow_m_table1[(1 << LSP_POW_BITS)]; float lsp_pow_m_table2[(1 << LSP_POW_BITS)]; - DSPContext dsp; - FmtConvertContext fmt_conv; + AVFloatDSPContext fdsp; #ifdef TRACE int frame_count; -#endif +#endif /* TRACE */ } WMACodecContext; -extern const uint16_t ff_wma_critical_freqs[25]; extern const uint16_t ff_wma_hgain_huffcodes[37]; extern const uint8_t ff_wma_hgain_huffbits[37]; extern const float ff_wma_lsp_codebook[NB_LSP_COEFS][16]; extern const uint32_t ff_aac_scalefactor_code[121]; extern const uint8_t ff_aac_scalefactor_bits[121]; -int av_cold ff_wma_get_frame_len_bits(int sample_rate, int version, - unsigned int decode_flags); -int ff_wma_init(AVCodecContext * avctx, int flags2); +int ff_wma_init(AVCodecContext *avctx, int flags2); int ff_wma_total_gain_to_bits(int total_gain); int ff_wma_end(AVCodecContext *avctx); -unsigned int ff_wma_get_large_val(GetBitContext* gb); -int ff_wma_run_level_decode(AVCodecContext* avctx, GetBitContext* gb, - VLC *vlc, - const float *level_table, const uint16_t *run_table, - int version, WMACoef *ptr, int offset, - int num_coefs, int block_len, int frame_len_bits, +unsigned int ff_wma_get_large_val(GetBitContext *gb); +int ff_wma_run_level_decode(AVCodecContext *avctx, GetBitContext *gb, + VLC *vlc, const float *level_table, + const uint16_t *run_table, int version, + WMACoef *ptr, int offset, int num_coefs, + int block_len, int frame_len_bits, int coef_nb_bits); #endif /* AVCODEC_WMA_H */