OSDN Git Service

ac3enc: scale floating-point coupling channel coefficients in
authorJustin Ruggles <justin.ruggles@gmail.com>
Sun, 7 Aug 2011 21:51:13 +0000 (17:51 -0400)
committerJustin Ruggles <justin.ruggles@gmail.com>
Mon, 5 Sep 2011 14:07:43 +0000 (10:07 -0400)
scale_coefficients() rather than in apply_channel_coupling()

libavcodec/ac3enc_float.c
libavcodec/ac3enc_template.c

index 8e74aaf..32ec558 100644 (file)
@@ -104,9 +104,10 @@ static int normalize_samples(AC3EncodeContext *s)
 static void scale_coefficients(AC3EncodeContext *s)
 {
     int chan_size = AC3_MAX_COEFS * s->num_blocks;
-    s->ac3dsp.float_to_fixed24(s->fixed_coef_buffer + chan_size,
-                               s->mdct_coef_buffer  + chan_size,
-                               chan_size * s->channels);
+    int cpl       = s->cpl_on;
+    s->ac3dsp.float_to_fixed24(s->fixed_coef_buffer + (chan_size * !cpl),
+                               s->mdct_coef_buffer  + (chan_size * !cpl),
+                               chan_size * (s->channels + cpl));
 }
 
 
index 3db49de..e7b8967 100644 (file)
@@ -168,10 +168,6 @@ static void apply_channel_coupling(AC3EncodeContext *s)
 
         /* coefficients must be clipped in order to be encoded */
         clip_coefficients(&s->dsp, cpl_coef, num_cpl_coefs);
-
-        /* scale coupling coefficients from float to 24-bit fixed-point */
-        s->ac3dsp.float_to_fixed24(&block->fixed_coef[CPL_CH][cpl_start],
-                                   cpl_coef, num_cpl_coefs);
     }
 
     /* calculate energy in each band in coupling channel and each fbw channel */