diff options
author | John Stebbins <stebbins@jetheaddev.com> | 2014-02-09 01:19:30 +0000 |
---|---|---|
committer | Janne Grunau <janne-libav@jannau.net> | 2014-02-12 12:52:28 +0100 |
commit | 462d5e8e6c050eae7cbb1f2d5c34628088bd0eb6 (patch) | |
tree | 1259adab18ecc75561c09382b107e76e06ee4f21 /libavcodec/aacdec.c | |
parent | 4a7d3837b4dd17fff270b55166597c093204e542 (diff) | |
download | ffmpeg-462d5e8e6c050eae7cbb1f2d5c34628088bd0eb6.tar.gz |
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.
Diffstat (limited to 'libavcodec/aacdec.c')
-rw-r--r-- | libavcodec/aacdec.c | 11 |
1 files changed, 7 insertions, 4 deletions
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); |