From: John Stebbins Date: Sun, 9 Feb 2014 01:19:30 +0000 (+0000) Subject: aacdec: set AVFrame sample_rate X-Git-Tag: android-x86-6.0-r1~10^2~2197 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=462d5e8e6c050eae7cbb1f2d5c34628088bd0eb6;p=android-x86%2Fexternal-ffmpeg.git aacdec: set AVFrame sample_rate AVFrame.sample_rate is set in ff_get_buffer, but aacdec calls ff_get_buffer before the samplerate is known. So it needs to be set again before returning the frame. --- diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c index 70fbb534fb..a3652098db 100644 --- a/libavcodec/aacdec.c +++ b/libavcodec/aacdec.c @@ -2753,6 +2753,7 @@ static int aac_decode_er_frame(AVCodecContext *avctx, void *data, spectral_to_sample(ac); ac->frame->nb_samples = samples; + ac->frame->sample_rate = avctx->sample_rate; *got_frame_ptr = 1; skip_bits_long(gb, get_bits_left(gb)); @@ -2885,16 +2886,18 @@ static int aac_decode_frame_int(AVCodecContext *avctx, void *data, multiplier = (ac->oc[1].m4ac.sbr == 1) ? ac->oc[1].m4ac.ext_sample_rate > ac->oc[1].m4ac.sample_rate : 0; samples <<= multiplier; - if (samples) - ac->frame->nb_samples = samples; - *got_frame_ptr = !!samples; - if (ac->oc[1].status && audio_found) { avctx->sample_rate = ac->oc[1].m4ac.sample_rate << multiplier; avctx->frame_size = samples; ac->oc[1].status = OC_LOCKED; } + if (samples) { + ac->frame->nb_samples = samples; + ac->frame->sample_rate = avctx->sample_rate; + } + *got_frame_ptr = !!samples; + return 0; fail: pop_output_configuration(ac);