mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-06-04 05:57:49 +02:00
aac: move sample_fmt selection before decoder configuration.
The decoder configuration initializes the sbr mdct, which needs to know about the sample format to properly take the scale factor into account. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
24e7a22e1f
commit
f77fd34bc3
@ -842,6 +842,14 @@ static av_cold int aac_decode_init(AVCodecContext *avctx)
|
|||||||
ac->avctx = avctx;
|
ac->avctx = avctx;
|
||||||
ac->oc[1].m4ac.sample_rate = avctx->sample_rate;
|
ac->oc[1].m4ac.sample_rate = avctx->sample_rate;
|
||||||
|
|
||||||
|
if (avctx->request_sample_fmt == AV_SAMPLE_FMT_FLT) {
|
||||||
|
avctx->sample_fmt = AV_SAMPLE_FMT_FLT;
|
||||||
|
output_scale_factor = 1.0 / 32768.0;
|
||||||
|
} else {
|
||||||
|
avctx->sample_fmt = AV_SAMPLE_FMT_S16;
|
||||||
|
output_scale_factor = 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
if (avctx->extradata_size > 0) {
|
if (avctx->extradata_size > 0) {
|
||||||
if (decode_audio_specific_config(ac, ac->avctx, &ac->oc[1].m4ac,
|
if (decode_audio_specific_config(ac, ac->avctx, &ac->oc[1].m4ac,
|
||||||
avctx->extradata,
|
avctx->extradata,
|
||||||
@ -877,14 +885,6 @@ static av_cold int aac_decode_init(AVCodecContext *avctx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (avctx->request_sample_fmt == AV_SAMPLE_FMT_FLT) {
|
|
||||||
avctx->sample_fmt = AV_SAMPLE_FMT_FLT;
|
|
||||||
output_scale_factor = 1.0 / 32768.0;
|
|
||||||
} else {
|
|
||||||
avctx->sample_fmt = AV_SAMPLE_FMT_S16;
|
|
||||||
output_scale_factor = 1.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
AAC_INIT_VLC_STATIC( 0, 304);
|
AAC_INIT_VLC_STATIC( 0, 304);
|
||||||
AAC_INIT_VLC_STATIC( 1, 270);
|
AAC_INIT_VLC_STATIC( 1, 270);
|
||||||
AAC_INIT_VLC_STATIC( 2, 550);
|
AAC_INIT_VLC_STATIC( 2, 550);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user