From patchwork Thu Apr 12 21:43:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vittorio Giovara X-Patchwork-Id: 8431 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp70856jad; Thu, 12 Apr 2018 14:51:50 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/Mc+/f3nX5AnHUBsNw9WbkNi+4a9T/qAHIRkEJVMQ6fSVMXqiI24UsgO3s6xHl5aHtGkVJ X-Received: by 10.223.192.136 with SMTP id d8mr1838972wrf.268.1523569910911; Thu, 12 Apr 2018 14:51:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523569910; cv=none; d=google.com; s=arc-20160816; b=fyGSEH8XDHA3xfTeV5Elh6D5pFDKL4BrqPIQG3j3vT9W7Ig/xCVLjQsr66Oxa4Rq7K 0isKqAPNgl5ynjwm78kZ0ZlPYAUCVU/sb214+ygQvmDkQyWScI2N9QRRE274koHBb9iS c4ws/dJiQHUtN8r5xdQ2xgD63SZKfXOYZlLgvWkWa4MY/j++aTz5DbryRldVB97bgYH+ lo8HovMC4wKBNRtoW1RQp7ewsK3QeLnEtqbvrcoQV1uqKoa/KQKplNaZ3Y+xowYSRBOC XcN+776o0wu35b+wFaXQF1F+qNhfUxzq8R4LJn1OjROg4KbwdIfTn72JPY7lIbLR8Awq 56QA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=JQ5GCsVn4lOuJm75KmwLv8LlPAFHVSi5S1v3zFrYPl0=; b=i5z2v2MrnpqqJrTF7riL46/zcTuTemqViKYev9QVkQu2vK4qI11aADc7q76rcpplkq RFEVgNtWrxKnQaEkn0YGqleygnbaQW1uFtqnyJZaOOSjFsDi9IkUTSd1guuMkLPhXk7J EaFWg80+cqRQNziQXRzzzTiwG6d9PVRld0CSjEb2vV8rRWP7RsEeHHLSJJQuGySFwqUP Pzcoh2EmF9HhupFHxple0vaa3oGGCdU1lkLA165Kg08DR548RyclWfyk9xrzubBK6wRz uFg9fJ7xTElJSdrKQYMAAJ9Lwynw3Rgoj8rsn72ZkPdx3/6a+TQIpWGglxegyOCxKNbK PPSQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=rZ9kfZ5j; 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 sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id n30si3157848wrb.79.2018.04.12.14.51.49; Thu, 12 Apr 2018 14:51:50 -0700 (PDT) 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 header.s=20161025 header.b=rZ9kfZ5j; 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 sp=QUARANTINE 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 DB76E689C71; Fri, 13 Apr 2018 00:51:23 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f194.google.com (mail-qk0-f194.google.com [209.85.220.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1E7376897FA for ; Fri, 13 Apr 2018 00:51:17 +0300 (EEST) Received: by mail-qk0-f194.google.com with SMTP id c188so7147621qkg.2 for ; Thu, 12 Apr 2018 14:51:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=c1WdfnEeBkeBeqSjRkI39FQeNPjcT2BDd9hfykqtzrQ=; b=rZ9kfZ5jRkkwI2oX6MYH7hZrwsAqFZNiJNnlhYdOW523RSvN8npls7hmLIoL1LnC7z Wdn6jUlVEgCZvuD3FwQUcEZ5jrQuDVv88wj8dTdPpIrnEX5TxMkRD7ueSHlBl3PMX+5T wt55q8Sq3E33p3GkYzqOxuu8mOHog/iGTMItqu7imqMnKSO+sRqdyC8daD2WLnO6KQeC OhlFL+rd3kdxuiYq6Wy5SuoViD3cvDysEu/+t1cWEtQx0Dtp9JHDwjOK55Tks0AsdFe1 8scCrIKZwSSQ8kB7OMw4vQLeCFbS5mpRMBxRFtb1xk2N0UqIiYX8Gd8t45H5uW0LmRVR zRcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=c1WdfnEeBkeBeqSjRkI39FQeNPjcT2BDd9hfykqtzrQ=; b=KmA2i8ASQvwWsFik1kHdQJBYgtN+diKqCHOdAtaHA31ilauH23ZQAC1lRR/FcIo+2q 68FKZzsI2lvxhoOIwjdOW5qWCN3DICCq2bjQ0B/Bx2BHCR30tLZ4Oq2skFwye3yorsTj DEcxEUqAEF3o8JGv89uquQvy7c3q2RiCblH95Yf+zp/b4MSOxdCOjFeK7SLO7DjvPbMh 4y806xc8+0tbAxlFlzdFe+5Szl/TkoVChRVIY8oX91ITJWa58k/GVg0fWXYc2Kbe0lzi Vq3b+hngkzeGwAVtDyxdu7le3w7vy95ZwmrmENFYvCiS7E68r2+JbKn8irsB/enfUZyN so3A== X-Gm-Message-State: ALQs6tCzU2bc1NTQOX1D1vsoDT2+sTnuhG5bbOKDq6JfnfNz3yf8Cmas b7TDFO71RU0Zv/qokSGDTlKkbA== X-Received: by 10.55.105.5 with SMTP id e5mr2483620qkc.141.1523569399668; Thu, 12 Apr 2018 14:43:19 -0700 (PDT) Received: from vimacbookpro.vimeows.com ([8.40.92.161]) by smtp.gmail.com with ESMTPSA id j66sm3481507qkf.84.2018.04.12.14.43.18 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 12 Apr 2018 14:43:18 -0700 (PDT) From: Vittorio Giovara To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 Apr 2018 17:43:17 -0400 Message-Id: <20180412214317.75763-1-vittorio.giovara@gmail.com> X-Mailer: git-send-email 2.17.0 Subject: [FFmpeg-devel] [PATCH] aac: Rework extradata parsing code 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" - enable the parsing code - use the new buffer instead of replacing the context one - do not push/pop configuration, just discard the exiting one - propagate errors correctly --- libavcodec/aacdec_template.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index cf97181092..0c899285dd 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -3324,20 +3324,14 @@ static int aac_decode_frame(AVCodecContext *avctx, void *data, AV_PKT_DATA_JP_DUALMONO, &jp_dualmono_size); - if (new_extradata && 0) { - av_free(avctx->extradata); - avctx->extradata = av_mallocz(new_extradata_size + - AV_INPUT_BUFFER_PADDING_SIZE); - if (!avctx->extradata) - return AVERROR(ENOMEM); - avctx->extradata_size = new_extradata_size; - memcpy(avctx->extradata, new_extradata, new_extradata_size); - push_output_configuration(ac); - if (decode_audio_specific_config(ac, ac->avctx, &ac->oc[1].m4ac, - avctx->extradata, - avctx->extradata_size*8LL, 1) < 0) { - pop_output_configuration(ac); - return AVERROR_INVALIDDATA; + if (new_extradata) { + /* discard previous configuration */ + ac->oc[1].status = OC_NONE; + err = decode_audio_specific_config(ac, ac->avctx, &ac->oc[1].m4ac, + new_extradata, + new_extradata_size * 8LL, 1); + if (err < 0) { + return err; } }