aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2013-11-09 14:17:16 +0100
committerDiego Biurrun <diego@biurrun.de>2013-11-10 16:07:22 +0100
commit5d6a990c115850326711c2f5be4d9fd33f399616 (patch)
tree93d6dee2f09d2426e54878db3a4b04008762adf6
parent08303d774132775d49d4ba767092de5d426f089d (diff)
downloadffmpeg-5d6a990c115850326711c2f5be4d9fd33f399616.tar.gz
mpegaudioenc: Remove broken integer-only quantization code path
-rw-r--r--libavcodec/mpegaudioenc.c39
-rw-r--r--libavcodec/mpegaudiotab.h5
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 */