[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