On Fri, Dec 02, 2011 at 12:55:37PM +0100, Janne Grunau wrote:
> On Fri, Nov 11, 2011 at 11:04:45AM +0100, Janne Grunau wrote:
> > ---
> >  libavcodec/aacdec.c |   24 ++++++++++++++----------
> >  1 files changed, 14 insertions(+), 10 deletions(-)
> > 
> > diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
> > index bfb1a77..47ff7ec 100644
> > --- a/libavcodec/aacdec.c
> > +++ b/libavcodec/aacdec.c
> > @@ -2313,8 +2313,9 @@ static inline uint32_t latm_get_value(GetBitContext 
> > *b)
> >  static int latm_decode_audio_specific_config(struct LATMContext *latmctx,
> >                                               GetBitContext *gb, int asclen)
> >  {
> > -    AVCodecContext *avctx = latmctx->aac_ctx.avctx;
> > -    MPEG4AudioConfig m4ac;
> > +    AACContext *ac        = &latmctx->aac_ctx;
> > +    AVCodecContext *avctx = ac->avctx;
> > +    MPEG4AudioConfig m4ac = {0};
> >      int config_start_bit  = get_bits_count(gb);
> >      int sync_extension    = 0;
> >      int bits_consumed, esize;
> > @@ -2329,18 +2330,22 @@ static int latm_decode_audio_specific_config(struct 
> > LATMContext *latmctx,
> >          av_log_missing_feature(latmctx->aac_ctx.avctx, "audio specific "
> >                                 "config not byte aligned.\n", 1);
> >          return AVERROR_INVALIDDATA;
> > -    } else {
> > -        bits_consumed =
> > -            decode_audio_specific_config(NULL, avctx, &m4ac,
> > +    }
> > +    bits_consumed = decode_audio_specific_config(NULL, avctx, &m4ac,
> >                                           gb->buffer + (config_start_bit / 
> > 8),
> >                                           asclen, sync_extension);
> >  
> > -        if (bits_consumed < 0)
> > -            return AVERROR_INVALIDDATA;
> > +    if (bits_consumed < 0)
> > +        return AVERROR_INVALIDDATA;
> > +
> > +    if (ac->m4ac.sample_rate != m4ac.sample_rate ||
> > +        ac->m4ac.chan_config != m4ac.chan_config) {
> > +
> > +        latmctx->initialized = 0;
> >  
> >          esize = (bits_consumed+7) / 8;
> >  
> > -        if (avctx->extradata_size <= esize) {
> > +        if (avctx->extradata_size < esize) {
> >              av_free(avctx->extradata);
> >              avctx->extradata = av_malloc(esize + 
> > FF_INPUT_BUFFER_PADDING_SIZE);
> >              if (!avctx->extradata)
> > @@ -2350,9 +2355,8 @@ static int latm_decode_audio_specific_config(struct 
> > LATMContext *latmctx,
> >          avctx->extradata_size = esize;
> >          memcpy(avctx->extradata, gb->buffer + (config_start_bit/8), esize);
> >          memset(avctx->extradata+esize, 0, FF_INPUT_BUFFER_PADDING_SIZE);
> > -
> > -        skip_bits_long(gb, bits_consumed);
> >      }
> > +    skip_bits_long(gb, bits_consumed);
> >  
> >      return bits_consumed;
> >  }
> 
> ping

probably OK
and maybe it should print a message that parameters were changed, not
everybody likes surprises
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to