diff ac3dec.c @ 6032:f74202e7e896 libavcodec

Skip dialog normalization. It shouldn't be used by the decoder, and there is not currently a clean way to pass the value to the user.
author jbr
date Mon, 17 Dec 2007 01:09:00 +0000
parents 9d3f52380cb3
children 2f9c17454842
line wrap: on
line diff
--- a/ac3dec.c	Mon Dec 17 01:03:19 2007 +0000
+++ b/ac3dec.c	Mon Dec 17 01:09:00 2007 +0000
@@ -73,9 +73,6 @@
 /** dynamic range table. converts codes to scale factors. */
 static float dynamic_range_tab[256];
 
-/** dialog normalization table */
-static float dialog_norm_tab[32];
-
 /** Adjustments in dB gain */
 #define LEVEL_MINUS_3DB         0.7071067811865476
 #define LEVEL_MINUS_4POINT5DB   0.5946035575013605
@@ -161,7 +158,6 @@
     int out_channels;                       ///< number of output channels
 
     float downmix_coeffs[AC3_MAX_CHANNELS][2];  ///< stereo downmix coefficients
-    float dialog_norm[2];                   ///< dialog normalization
     float dynamic_range[2];                 ///< dynamic range
     float cpl_coords[AC3_MAX_CHANNELS][18]; ///< coupling coordinates
     int   num_cpl_bands;                    ///< number of coupling bands
@@ -276,14 +272,6 @@
         dynamic_range_tab[i] = powf(2.0f, v) * ((i & 0x1F) | 0x20);
     }
 
-    /* generate dialog normalization table
-       references: Section 5.4.2.8 dialnorm
-                   Section 7.6 Dialogue Normalization */
-    for(i=1; i<32; i++) {
-        dialog_norm_tab[i] = expf((i-31) * M_LN10 / 20.0f);
-    }
-    dialog_norm_tab[0] = dialog_norm_tab[31];
-
     /* generate scale factors for exponents and asymmetrical dequantization
        reference: Section 7.3.2 Expansion of Mantissas for Asymmetric Quantization */
     for (i = 0; i < 25; i++)
@@ -382,7 +370,7 @@
     /* read the rest of the bsi. read twice for dual mono mode. */
     i = !(ctx->channel_mode);
     do {
-        ctx->dialog_norm[i] = dialog_norm_tab[get_bits(gb, 5)]; // dialog normalization
+        skip_bits(gb, 5); // skip dialog normalization
         if (get_bits1(gb))
             skip_bits(gb, 8); //skip compression
         if (get_bits1(gb))
@@ -1049,13 +1037,13 @@
     if(ctx->channel_mode == AC3_CHMODE_STEREO)
         do_rematrixing(ctx);
 
-    /* apply scaling to coefficients (headroom, dialnorm, dynrng) */
+    /* apply scaling to coefficients (headroom, dynrng) */
     for(ch=1; ch<=ctx->channels; ch++) {
         float gain = 2.0f * ctx->mul_bias;
         if(ctx->channel_mode == AC3_CHMODE_DUALMONO) {
-            gain *= ctx->dialog_norm[ch-1] * ctx->dynamic_range[ch-1];
+            gain *= ctx->dynamic_range[ch-1];
         } else {
-            gain *= ctx->dialog_norm[0] * ctx->dynamic_range[0];
+            gain *= ctx->dynamic_range[0];
         }
         for(i=0; i<ctx->end_freq[ch]; i++) {
             ctx->transform_coeffs[ch][i] *= gain;