[FFmpeg-cvslog] r11280 - in trunk/libavcodec: ac3dec.c avcodec.h utils.c

jbr subversion
Thu Dec 20 01:55:09 CET 2007


Author: jbr
Date: Thu Dec 20 01:55:08 2007
New Revision: 11280

Log:
Add option for user to scale the amount of dynamic range compression which is
applied by the audio decoder, and use that option in the AC3 decoder.

Modified:
   trunk/libavcodec/ac3dec.c
   trunk/libavcodec/avcodec.h
   trunk/libavcodec/utils.c

Modified: trunk/libavcodec/ac3dec.c
==============================================================================
--- trunk/libavcodec/ac3dec.c	(original)
+++ trunk/libavcodec/ac3dec.c	Thu Dec 20 01:55:08 2007
@@ -792,7 +792,8 @@ static int ac3_parse_audio_block(AC3Deco
     i = !(ctx->channel_mode);
     do {
         if(get_bits1(gb)) {
-            ctx->dynamic_range[i] = dynamic_range_tab[get_bits(gb, 8)];
+            ctx->dynamic_range[i] = ((dynamic_range_tab[get_bits(gb, 8)]-1.0) *
+                                    ctx->avctx->drc_scale)+1.0;
         } else if(blk == 0) {
             ctx->dynamic_range[i] = 1.0f;
         }

Modified: trunk/libavcodec/avcodec.h
==============================================================================
--- trunk/libavcodec/avcodec.h	(original)
+++ trunk/libavcodec/avcodec.h	Thu Dec 20 01:55:08 2007
@@ -2154,6 +2154,14 @@ typedef struct AVCodecContext {
      * - decoding: Set by user.
      */
     int request_channels;
+
+    /**
+     * Percentage of dynamic range compression to be applied by the decoder.
+     * The default value is 1.0, corresponding to full compression.
+     * - encoding: unused
+     * - decoding: Set by user.
+     */
+    float drc_scale;
 } AVCodecContext;
 
 /**

Modified: trunk/libavcodec/utils.c
==============================================================================
--- trunk/libavcodec/utils.c	(original)
+++ trunk/libavcodec/utils.c	Thu Dec 20 01:55:08 2007
@@ -761,6 +761,7 @@ static const AVOption options[]={
 {"drop_frame_timecode", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_DROP_FRAME_TIMECODE, INT_MIN, INT_MAX, V|E, "flags2"},
 {"non_linear_q", "use non linear quantizer", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_NON_LINEAR_QUANT, INT_MIN, INT_MAX, V|E, "flags2"},
 {"request_channels", "set desired number of audio channels", OFFSET(request_channels), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, A|D},
+{"drc_scale", "percentage of dynamic range compression to apply", OFFSET(drc_scale), FF_OPT_TYPE_FLOAT, 1.0, 0.0, 1.0, A|D},
 {NULL},
 };
 




More information about the ffmpeg-cvslog mailing list