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