summaryrefslogtreecommitdiff
path: root/libavcodec/aacdec.c
diff options
context:
space:
mode:
authorJohn Stebbins <stebbins@jetheaddev.com>2014-02-09 01:19:30 +0000
committerJanne Grunau <janne-libav@jannau.net>2014-02-12 12:52:28 +0100
commit462d5e8e6c050eae7cbb1f2d5c34628088bd0eb6 (patch)
tree1259adab18ecc75561c09382b107e76e06ee4f21 /libavcodec/aacdec.c
parent4a7d3837b4dd17fff270b55166597c093204e542 (diff)
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.c11
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);