[FFmpeg-cvslog] mpegaudioenc: Remove broken integer-only quantization code path
Diego Biurrun
git at videolan.org
Mon Nov 11 21:55:20 CET 2013
ffmpeg | branch: master | Diego Biurrun <diego at biurrun.de> | Sat Nov 9 14:17:16 2013 +0100| [5d6a990c115850326711c2f5be4d9fd33f399616] | committer: Diego Biurrun
mpegaudioenc: Remove broken integer-only quantization code path
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5d6a990c115850326711c2f5be4d9fd33f399616
---
libavcodec/mpegaudioenc.c | 39 +++++----------------------------------
libavcodec/mpegaudiotab.h | 5 -----
2 files changed, 5 insertions(+), 39 deletions(-)
diff --git a/libavcodec/mpegaudioenc.c b/libavcodec/mpegaudioenc.c
index 739eb64..b7727ab 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 45afe9b..2addcb2 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 */
More information about the ffmpeg-cvslog
mailing list