X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fwma.h;h=6d14fc66c6d3b101f6a7bdada1d9d6f575f9dfd3;hb=a93faf30d688b872e0ecc453b2dfc36470683ed6;hp=f11d5507dc5cb832ba301b01754d10c4f982237e;hpb=9d35fa520e3b27f7dd9fe12c433eb596f1271515;p=ffmpeg diff --git a/libavcodec/wma.h b/libavcodec/wma.h index f11d5507dc5..6d14fc66c6d 100644 --- a/libavcodec/wma.h +++ b/libavcodec/wma.h @@ -22,11 +22,12 @@ #ifndef AVCODEC_WMA_H #define AVCODEC_WMA_H -#include "get_bits.h" -#include "put_bits.h" -#include "dsputil.h" +#include "libavutil/float_dsp.h" + +#include "avcodec.h" +#include "bitstream.h" #include "fft.h" -#include "fmtconvert.h" +#include "put_bits.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; - GetBitContext gb; + AVCodecContext *avctx; + BitstreamContext bc; 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]; @@ -123,7 +120,7 @@ typedef struct WMACodecContext { /* output buffer for one frame and the last for IMDCT windowing */ 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(BitstreamContext *bc); +int ff_wma_run_level_decode(AVCodecContext *avctx, BitstreamContext *bc, + 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 */