]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Add option for user to scale the amount of dynamic range compression which is
authorjbr <jbr@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Thu, 20 Dec 2007 00:55:08 +0000 (00:55 +0000)
committerjbr <jbr@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Thu, 20 Dec 2007 00:55:08 +0000 (00:55 +0000)
applied by the audio decoder, and use that option in the AC3 decoder.

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@11280 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/ac3dec.c
libavcodec/avcodec.h
libavcodec/utils.c

index 468723f2855528fe631508e33efef0bff5d6fd77..c06edc46e5357c2ec0eb598e0256b0d26a949033 100644 (file)
@@ -792,7 +792,8 @@ static int ac3_parse_audio_block(AC3DecodeContext *ctx, int blk)
     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;
         }
index 88d600c50fe768d4813c09e52535a43ee9318752..a32f9614034ab415baeb17922efd9dbcb0970c2a 100644 (file)
@@ -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;
 
 /**
index 290814dccaa60bd3529b705c6fdacde4d6207776..3b5ef7a7732842478064714914f339f80220c606 100644 (file)
@@ -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},
 };