On 11/21/2016 11:13 PM, James Almer wrote: > Fixes ticket #5973 > > Signed-off-by: James Almer <jamr...@gmail.com> > --- > Maybe init() should propagate the extradata down the filter chain instead > of this, since if an aac stream has extradata then it means that it's an > ASC stream. Neither ADTS or LATM use extradata. > > What's preferred?
Ping > > libavcodec/aac_adtstoasc_bsf.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/libavcodec/aac_adtstoasc_bsf.c b/libavcodec/aac_adtstoasc_bsf.c > index 48889fc..76cf32e 100644 > --- a/libavcodec/aac_adtstoasc_bsf.c > +++ b/libavcodec/aac_adtstoasc_bsf.c > @@ -54,8 +54,19 @@ static int aac_adtstoasc_filter(AVBSFContext *bsfc, > AVPacket *out) > > init_get_bits(&gb, in->data, AAC_ADTS_HEADER_SIZE * 8); > > - if (bsfc->par_in->extradata && show_bits(&gb, 12) != 0xfff) > + if (bsfc->par_in->extradata && show_bits(&gb, 12) != 0xfff) { > + if (!bsfc->par_out->extradata) { > + /* Stream is already AudioSpecificConfig. Restore its original > extradata */ > + bsfc->par_out->extradata = > av_mallocz(bsfc->par_in->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE); > + if (!bsfc->par_out->extradata) { > + ret = AVERROR(ENOMEM); > + goto fail; > + } > + bsfc->par_out->extradata_size = bsfc->par_in->extradata_size; > + memcpy(bsfc->par_out->extradata, bsfc->par_in->extradata, > bsfc->par_in->extradata_size); > + } > goto finish; > + } > > if (avpriv_aac_parse_header(&gb, &hdr) < 0) { > av_log(bsfc, AV_LOG_ERROR, "Error parsing ADTS frame header!\n"); _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel