diff --git a/libavcodec/wma.c b/libavcodec/wma.c index bdca4bce6d..7cebc9e009 100644 --- a/libavcodec/wma.c +++ b/libavcodec/wma.c @@ -444,12 +444,12 @@ int ff_wma_end(AVCodecContext *avctx) int ff_wma_run_level_decode(AVCodecContext* avctx, GetBitContext* gb, VLC *vlc, const uint16_t *level_table, const uint16_t *run_table, - int version, int16_t *ptr, int offset, + int version, WMACoef *ptr, int offset, int num_coefs, int block_len, int frame_len_bits, int coef_nb_bits) { int code, run, level, sign; - int16_t* eptr = ptr + num_coefs; + WMACoef* eptr = ptr + num_coefs; for(;;) { code = get_vlc2(gb, vlc->table, VLCBITS, VLCMAX); if (code < 0) diff --git a/libavcodec/wma.h b/libavcodec/wma.h index 7ac85038d1..5a16331363 100644 --- a/libavcodec/wma.h +++ b/libavcodec/wma.h @@ -51,6 +51,8 @@ #define VLCBITS 9 #define VLCMAX ((22+VLCBITS-1)/VLCBITS) +typedef float WMACoef; ///< type for decoded coefficients, int16_t would be enough for wma 1/2 + typedef struct CoefVLCTable { int n; ///< total number of codes int max_level; @@ -111,7 +113,7 @@ typedef struct WMACodecContext { int exponents_bsize[MAX_CHANNELS]; ///< log2 ratio frame/exp. length DECLARE_ALIGNED_16(float, exponents[MAX_CHANNELS][BLOCK_MAX_SIZE]); float max_exponent[MAX_CHANNELS]; - int16_t coefs1[MAX_CHANNELS][BLOCK_MAX_SIZE]; + 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]); MDCTContext mdct_ctx[BLOCK_NB_SIZES]; @@ -151,7 +153,7 @@ int ff_wma_end(AVCodecContext *avctx); int ff_wma_run_level_decode(AVCodecContext* avctx, GetBitContext* gb, VLC *vlc, const uint16_t *level_table, const uint16_t *run_table, - int version, int16_t *ptr, int offset, + int version, WMACoef *ptr, int offset, int num_coefs, int block_len, int frame_len_bits, int coef_nb_bits); diff --git a/libavcodec/wmadec.c b/libavcodec/wmadec.c index 9dc6ff1810..7a65003457 100644 --- a/libavcodec/wmadec.c +++ b/libavcodec/wmadec.c @@ -486,12 +486,12 @@ static int wma_decode_block(WMACodecContext *s) for(ch = 0; ch < s->nb_channels; ch++) { if (s->channel_coded[ch]) { int tindex; - int16_t* ptr = &s->coefs1[ch][0]; + WMACoef* ptr = &s->coefs1[ch][0]; /* special VLC tables are used for ms stereo because there is potentially less energy there */ tindex = (ch == 1 && s->ms_stereo); - memset(ptr, 0, s->block_len * sizeof(int16_t)); + memset(ptr, 0, s->block_len * sizeof(WMACoef)); ff_wma_run_level_decode(s->avctx, &s->gb, &s->coef_vlc[tindex], s->level_table[tindex], s->run_table[tindex], 0, ptr, 0, nb_coefs[ch], @@ -514,7 +514,7 @@ static int wma_decode_block(WMACodecContext *s) /* finally compute the MDCT coefficients */ for(ch = 0; ch < s->nb_channels; ch++) { if (s->channel_coded[ch]) { - int16_t *coefs1; + WMACoef *coefs1; float *coefs, *exponents, mult, mult1, noise; int i, j, n, n1, last_high_band, esize; float exp_power[HIGH_BAND_MAX_SIZE]; diff --git a/libavcodec/wmaenc.c b/libavcodec/wmaenc.c index 95e5929c7d..8386983014 100644 --- a/libavcodec/wmaenc.c +++ b/libavcodec/wmaenc.c @@ -186,7 +186,7 @@ static int encode_block(WMACodecContext *s, float (*src_coefs)[BLOCK_MAX_SIZE], for(ch = 0; ch < s->nb_channels; ch++) { if (s->channel_coded[ch]) { - int16_t *coefs1; + WMACoef *coefs1; float *coefs, *exponents, mult; int i, n; @@ -264,7 +264,7 @@ static int encode_block(WMACodecContext *s, float (*src_coefs)[BLOCK_MAX_SIZE], for(ch = 0; ch < s->nb_channels; ch++) { if (s->channel_coded[ch]) { int run, tindex; - int16_t *ptr, *eptr; + WMACoef *ptr, *eptr; tindex = (ch == 1 && s->ms_stereo); ptr = &s->coefs1[ch][0]; eptr = ptr + nb_coefs[ch];