From patchwork Tue Nov 22 02:13:51 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 1522 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.90.1 with SMTP id o1csp1954756vsb; Mon, 21 Nov 2016 18:14:22 -0800 (PST) X-Received: by 10.28.145.66 with SMTP id t63mr102396wmd.99.1479780862629; Mon, 21 Nov 2016 18:14:22 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f134si164516wme.68.2016.11.21.18.14.22; Mon, 21 Nov 2016 18:14:22 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3D1D7689A6B; Tue, 22 Nov 2016 04:14:17 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B036768995A for ; Tue, 22 Nov 2016 04:14:10 +0200 (EET) Received: by mail-qk0-f195.google.com with SMTP id x190so799097qkb.0 for ; Mon, 21 Nov 2016 18:14:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id; bh=lGWe+uVpRe2gYhRXt7JxTA9QQ+EUY8FxauTu7MWCMZI=; b=hWWKlrqZHXjDi30Rszc8L2OC0FzR2zAxynl4bBvi8AGoZAYUrZHOJPZOQTwpGJ2U8L 5tIE49SsQMv6Wh6Cdf4JuTPkrEGepsFJkUZeeG07fJRFtKTMdtVyDio9H8HrvwiIgYKh 6r/r0w5qJgzfWvFINgeTwpP1TsiojrI/qy0thysfb+0bcoHSixfNYKe4kGVLFqcWBfVc 5mct2AT7M1n6cIPCCr1Qs3LmmCr5TwOYwnBCcGjKhyIeieBiubXtMqvHcX82jUKPVWkA Bu8yLJGExeWsIXtLCEkI+M6pgYNkV7wDJzmNrCEATZrA1iWsG9h81HO9AWDY2/CaQ/i1 GI2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id; bh=lGWe+uVpRe2gYhRXt7JxTA9QQ+EUY8FxauTu7MWCMZI=; b=CONoPqmPqPNb/rBfVrQSmz/WP0+uQqPr7ECYjzpPRAsrMmNA/VtLxQCxkfh2pmKR/r hR3AhZAAgZqw51wO+gzImwmL+/2xn6I2SmZIEViX1w1pFsio7ePIw9IaUAsR8T9ndEVT zQ0kPxawyPAq/2rQ0l50kL0JOxMVv1AvmXQI7Yw14Uhwis2kd0J5bnoIy7OMh1+ZJEDJ 1VQar50sAXc/Yh/JmmHrJ7/htLwh0zeYdKp2vnVvGv/gxy9nd5FUk3tSm7GPBFjzJ34p atffz6Y+5sgT/3t46AWWoS53NtEV6NGrd2BqmtyWwAx1b9hBPH7h4DRiyz2eyK6BKYDa Lk/w== X-Gm-Message-State: AKaTC032cNGDDDj6gQ1L/Wvf2dWXtJsdwso8yyeC24rpHR6ofuZEKA4mZZZxociPT36jSA== X-Received: by 10.55.221.29 with SMTP id n29mr23386060qki.114.1479780852501; Mon, 21 Nov 2016 18:14:12 -0800 (PST) Received: from localhost.localdomain ([181.22.23.132]) by smtp.gmail.com with ESMTPSA id b94sm12688780qkb.16.2016.11.21.18.14.11 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 21 Nov 2016 18:14:12 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 21 Nov 2016 23:13:51 -0300 Message-Id: <20161122021351.8128-1-jamrial@gmail.com> X-Mailer: git-send-email 2.10.2 Subject: [FFmpeg-devel] [PATCH] avcodec/aac_adtstoasc: recover original extradata if the stream is already ASC X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Fixes ticket #5973 Signed-off-by: James Almer --- 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? 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");