diff options
author | Diego Biurrun <diego@biurrun.de> | 2013-11-09 14:17:16 +0100 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2013-11-10 16:07:22 +0100 |
commit | 5d6a990c115850326711c2f5be4d9fd33f399616 (patch) | |
tree | 93d6dee2f09d2426e54878db3a4b04008762adf6 /libavcodec | |
parent | 08303d774132775d49d4ba767092de5d426f089d (diff) | |
download | ffmpeg-5d6a990c115850326711c2f5be4d9fd33f399616.tar.gz |
mpegaudioenc: Remove broken integer-only quantization code path
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/mpegaudioenc.c | 39 | ||||
-rw-r--r-- | libavcodec/mpegaudiotab.h | 5 |
2 files changed, 5 insertions, 39 deletions
diff --git a/libavcodec/mpegaudioenc.c b/libavcodec/mpegaudioenc.c index 739eb64f00..b7727ab950 100644 --- a/libavcodec/mpegaudioenc.c +++ b/libavcodec/mpegaudioenc.c @@ -35,6 +35,8 @@ #include "mpegaudio.h" #include "mpegaudiodsp.h" +#include "mpegaudiodata.h" +#include "mpegaudiotab.h" /* currently, cannot change these constants (need to modify quantization stage) */ @@ -61,12 +63,6 @@ typedef struct MpegAudioContext { const unsigned char *alloc_table; } MpegAudioContext; -/* define it to use floats in quantization (I don't like floats !) */ -#define USE_FLOATS - -#include "mpegaudiodata.h" -#include "mpegaudiotab.h" - static av_cold int MPA_encode_init(AVCodecContext *avctx) { MpegAudioContext *s = avctx->priv_data; @@ -152,13 +148,7 @@ static av_cold int MPA_encode_init(AVCodecContext *avctx) if (v <= 0) v = 1; scale_factor_table[i] = v; -#ifdef USE_FLOATS scale_factor_inv_table[i] = pow(2.0, -(3 - i) / 3.0) / (float)(1 << 20); -#else -#define P 15 - scale_factor_shift[i] = 21 - P - (i / 3); - scale_factor_mult[i] = (1 << P) * pow(2.0, (i % 3) / 3.0); -#endif } for(i=0;i<128;i++) { v = i - 64; @@ -672,30 +662,11 @@ static void encode_frame(MpegAudioContext *s, qindex = s->alloc_table[j+b]; steps = ff_mpa_quant_steps[qindex]; for(m=0;m<3;m++) { + float a; sample = s->sb_samples[ch][k][l + m][i]; /* divide by scale factor */ -#ifdef USE_FLOATS - { - float a; - a = (float)sample * scale_factor_inv_table[s->scale_factors[ch][i][k]]; - q[m] = (int)((a + 1.0) * steps * 0.5); - } -#else - { - int q1, e, shift, mult; - e = s->scale_factors[ch][i][k]; - shift = scale_factor_shift[e]; - mult = scale_factor_mult[e]; - - /* normalize to P bits */ - if (shift < 0) - q1 = sample << (-shift); - else - q1 = sample >> shift; - q1 = (q1 * mult) >> P; - q[m] = ((q1 + (1 << P)) * steps) >> (P + 1); - } -#endif + a = (float)sample * scale_factor_inv_table[s->scale_factors[ch][i][k]]; + q[m] = (int)((a + 1.0) * steps * 0.5); if (q[m] >= steps) q[m] = steps - 1; assert(q[m] >= 0 && q[m] < steps); diff --git a/libavcodec/mpegaudiotab.h b/libavcodec/mpegaudiotab.h index 45afe9bd16..2addcb2630 100644 --- a/libavcodec/mpegaudiotab.h +++ b/libavcodec/mpegaudiotab.h @@ -82,12 +82,7 @@ static const int bitinv32[32] = { static int16_t filter_bank[512]; static int scale_factor_table[64]; -#ifdef USE_FLOATS static float scale_factor_inv_table[64]; -#else -static int8_t scale_factor_shift[64]; -static unsigned short scale_factor_mult[64]; -#endif static unsigned char scale_diff_table[128]; /* total number of bits per allocation group */ |