[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