Mercurial > libavcodec.hg
changeset 6047:2f9c17454842 libavcodec
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.
author | jbr |
---|---|
date | Thu, 20 Dec 2007 00:55:08 +0000 |
parents | a5f184563b8c |
children | 0277500fe13d |
files | ac3dec.c avcodec.h utils.c |
diffstat | 3 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ac3dec.c Wed Dec 19 23:03:52 2007 +0000 +++ b/ac3dec.c Thu Dec 20 00:55:08 2007 +0000 @@ -792,7 +792,8 @@ 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; }
--- a/avcodec.h Wed Dec 19 23:03:52 2007 +0000 +++ b/avcodec.h Thu Dec 20 00:55:08 2007 +0000 @@ -2154,6 +2154,14 @@ * - 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; /**
--- a/utils.c Wed Dec 19 23:03:52 2007 +0000 +++ b/utils.c Thu Dec 20 00:55:08 2007 +0000 @@ -761,6 +761,7 @@ {"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}, };