ac3enc: clip coupling coordinates during calculation
authorJustin Ruggles <justin.ruggles@gmail.com>
Sun, 7 Aug 2011 21:12:49 +0000 (17:12 -0400)
committerJustin Ruggles <justin.ruggles@gmail.com>
Wed, 10 Aug 2011 21:09:24 +0000 (17:09 -0400)
This is faster than using the clip_coefficients() function. Also,
clipping the coordinates before determining reuse is better since it
will compare coordinates that are closer to their final encoded values.

libavcodec/ac3enc_template.c

index 7a6d72f..943a55a 100644 (file)
@@ -126,7 +126,7 @@ static inline float calc_cpl_coord(float energy_ch, float energy_cpl)
     float coord = 0.125;
     if (energy_cpl > 0)
         coord *= sqrtf(energy_ch / energy_cpl);
-    return coord;
+    return FFMIN(coord, COEF_MAX);
 }
 
 
@@ -291,7 +291,6 @@ static void apply_channel_coupling(AC3EncodeContext *s)
         if (!block->cpl_in_use)
             continue;
 
-        clip_coefficients(&s->dsp, cpl_coords[blk][1], s->fbw_channels * 16);
         s->ac3dsp.float_to_fixed24(fixed_cpl_coords[blk][1],
                                    cpl_coords[blk][1],
                                    s->fbw_channels * 16);