On 02/08/2014 10:40 AM, John Stebbins wrote:
> 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.
> ---
> libavcodec/aacdec.c | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
> index 70fbb53..a365209 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);
Looks good. Just needs the typo in the commit message fixed.
-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel