mirror of https://git.ffmpeg.org/ffmpeg.git
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. Originally committed as revision 11280 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
cd31f8dc23
commit
1408352ada
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
@ -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},
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue