On 3/19/2016 1:02 PM, Anton Khirnov wrote: > Quoting Luca Barbato (2016-03-07 09:10:14) >> On 07/03/16 08:59, Luca Barbato wrote: >>> On 04/03/16 09:15, Anton Khirnov wrote: >>>> --- >>>> libavcodec/aac_adtstoasc_bsf.c | 95 >>>> ++++++++++++++++++++++++++---------------- >>>> libavcodec/allcodecs.c | 1 - >>>> libavcodec/bitstream_filters.c | 5 +++ >>>> 3 files changed, 65 insertions(+), 36 deletions(-) >>>> >>> >>> Possibly Ok. >>> >> >> Reading the others, why the par_out->extradata is not set? > > Because it's set as side data in the first packet. Actually it should be > actively unset from the output parameters.
This is not what should be done. If the stream has extradata during .init() then it means it's ASC and not ADTS or even LATM. Deleting it unconditionally breaks passthrough use cases. The .init function should validate the extradata and let av_bsf_init() pass it down the filter chain. See the attached patch.
>From 5f07937db0a12b6176bfc0414c530716cfb382e7 Mon Sep 17 00:00:00 2001 From: James Almer <jamr...@gmail.com> Date: Thu, 24 Nov 2016 21:10:47 -0300 Subject: [PATCH] aac_adtstoasc_bsf: validate and forward extradata if the stream is already ASC Fixes AAC AudioSpecificConfig passthrough. Signed-off-by: James Almer <jamr...@gmail.com> --- libavcodec/aac_adtstoasc_bsf.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libavcodec/aac_adtstoasc_bsf.c b/libavcodec/aac_adtstoasc_bsf.c index 9168e2b..08d60eb 100644 --- a/libavcodec/aac_adtstoasc_bsf.c +++ b/libavcodec/aac_adtstoasc_bsf.c @@ -135,8 +135,16 @@ fail: static int aac_adtstoasc_init(AVBSFContext *ctx) { - av_freep(&ctx->par_out->extradata); - ctx->par_out->extradata_size = 0; + /* Validate the extradata if the stream is already MPEG-4 AudioSpecificConfig */ + if (ctx->par_in->extradata) { + MPEG4AudioConfig mp4ac; + int ret = avpriv_mpeg4audio_get_config(&mp4ac, ctx->par_in->extradata, + ctx->par_in->extradata_size * 8, 1); + if (ret < 0) { + av_log(ctx, AV_LOG_ERROR, "Error parsing AudioSpecificConfig extradata!\n"); + return ret; + } + } return 0; } -- 2.10.2
_______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel