From 9970c61b4b85e1df8e109aef2ba003673823e722 Mon Sep 17 00:00:00 2001 From: Sascha Sommer Date: Sat, 20 Jun 2009 09:05:28 +0000 Subject: Introduce WMACoef typedef for decoded coefficients and change default type to float so that the run level decoding functionality can be shared with wmapro Originally committed as revision 19231 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/wma.c | 4 ++-- libavcodec/wma.h | 6 ++++-- libavcodec/wmadec.c | 6 +++--- libavcodec/wmaenc.c | 4 ++-- 4 files changed, 11 insertions(+), 9 deletions(-) (limited to 'libavcodec') 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]; -- cgit v1.2.3