From patchwork Fri Mar 16 23:16:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 8013 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp71700jad; Fri, 16 Mar 2018 16:16:25 -0700 (PDT) X-Google-Smtp-Source: AG47ELvkmGkYi7Wc8GAeT5L87PRx1EDXa3HIW8ZgACVhNRl1CrONuDZMr0ygq+E1GkgAqa6e7+2f X-Received: by 10.28.127.204 with SMTP id a195mr3043065wmd.58.1521242185323; Fri, 16 Mar 2018 16:16:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521242185; cv=none; d=google.com; s=arc-20160816; b=cSbQGqzbRU1mg9dMHzCoJ640Tq6///+XYobPS76UGj1q333fqJvs9hVl+pqlIgcQKF zXP8YgI9zQ+XhmxyorGYMIhj9T0LIwWMb6VMJWQ2k6opPMAqQmKnlumZdnGUrVP/4vyE ZWIEXZQ0+tVNhkVdaZIcvapQaaVPfSQ+gXw3vuJeZa8EIbDfPq1v4sscDuPiWqCxrD+D /yvirWA+y9kUXCTb3d5366mVJs3ZFfMzx1NrOY/1bSA5jPwRsAzMU7eQ24+Nluk9xDZX mMkPvqSxVMQXNV0G7dBR8RKz7qmM6Qp7o8Dj47Xa76cUmkWr/N1zXI6dY3kLa/N2S3qW 58XA== 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=kLtdXphlsYAdyIs6Od/SEvX3Fnh18ANoOs1JUJfOy6o=; b=C/i8YJWBa4FEcqqvRjeHWa8vk8/1/NCqvAsbgMD3Uodnrz2SDhFQfYa4Ij3XHgtdAV +uBQ4I+qUdBK5Rn4IxXphV2udm3em3rMh21WEnY2NigEVT1Tn7HhdF+Zxq80y7x5d6lG nXFSvTGl09cuGwVN+53XusFr1jQ42f/5kf+HhyFRjomnn17Srd3E5u91wUvXO2UfktMe R1Q05KRDDjo+dQsLOTfywbDYMBC6rLjpgPPO6fkb8fatnksi5+SF9hEleLfOe0iVEx6v b/Dm4Y9844VakwtqY3JyLDqQJBSgFsv4KJSWlRfo7kJwiRITKPoLM8ZZd2uI5PpZ5WWP mhmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=BDPBd7Jx; 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 r11si4786092wmc.237.2018.03.16.16.16.23; Fri, 16 Mar 2018 16:16:25 -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=BDPBd7Jx; 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 941B7689CB9; Sat, 17 Mar 2018 01:16:09 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f196.google.com (mail-qk0-f196.google.com [209.85.220.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 94282689971 for ; Sat, 17 Mar 2018 01:16:02 +0200 (EET) Received: by mail-qk0-f196.google.com with SMTP id s9so12771485qke.12 for ; Fri, 16 Mar 2018 16:16:15 -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=rhnLiZtRPXafmwDK6C7J7AhXhNQ46zXezwFKoxtArOQ=; b=BDPBd7JxJuIVXZ9sPAozwLDiHvq4ePDO6ZGTGdhogL6g6Ry8zsuviVAPwECfzbvoR8 qYj9ZZrjwRdTM6vAMOIL/IhXz4mrUdpiZRqy+hUHKrtUbnm+FGM9gLvsFN/hVoRSOe+x KzWSkF3a2KQdb84lE+TaZk5YUs13HRDFHf7yYFz9ahw3ut89D7RB5QZzDB01tB/n36nx gG9Sl/0jdKJbJexpOv8qK8PUOP0cH8iEqFGgJ/GRrKws4E0NIPtbQLlRcbdrbyuPRjDH cFhYOw0z45il2rFlIUbVN0XwovioFLSkn6uD11FSXZtInNajI8e6nyKuvN/FflSGVeCd zQXA== 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=rhnLiZtRPXafmwDK6C7J7AhXhNQ46zXezwFKoxtArOQ=; b=YPGxJUjtvXkdrrZSPwaa/Twe8uOkxa50OJqh1jg05W62+uJXKY8ImggjfQcd5+D+VK veI9+6Infxs8XnA4OMXkJXbVToaLiW8T8EV1GwxvazgO2x/G26RSM8LzZy3enbUZyPdD mY95K+3/zdhBLjGxECur0Mw8qDDZZJwTVkO/HokPlbCgiV1fKKeoVfQoBD727/c/QgjL 9lLK2iQNLqTj06g3LW1WgL1cXe6sn3ocGwOPzF8r1+UCuojQSDB869C3RDR7PehHbZYJ WSrHdTW7Yqa+anjGJbuCjei+Qm2EM0u4YtkK3YBWzuM1UBD2CWQnDZeJnLqqO4eMOdN1 WtcQ== X-Gm-Message-State: AElRT7FkXfu6OJeTwHVO7H25Sss9tzXygjJSfZ8FsUDBoFd3EMVyRalt zz56qfSzRIbRk08d3vN5JWX3ow== X-Received: by 10.55.89.65 with SMTP id n62mr5754092qkb.46.1521242173845; Fri, 16 Mar 2018 16:16:13 -0700 (PDT) Received: from localhost.localdomain ([190.188.171.140]) by smtp.gmail.com with ESMTPSA id n4sm6779972qtc.0.2018.03.16.16.16.12 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Mar 2018 16:16:13 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 16 Mar 2018 20:16:00 -0300 Message-Id: <20180316231601.3212-1-jamrial@gmail.com> X-Mailer: git-send-email 2.16.2 Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/aac_adtstoasc: move the reference in the bsf internal buffer 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" There's no need to allocate a new packet for it. Signed-off-by: James Almer --- libavcodec/aac_adtstoasc_bsf.c | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/libavcodec/aac_adtstoasc_bsf.c b/libavcodec/aac_adtstoasc_bsf.c index 49f1f095e6..6541b1189c 100644 --- a/libavcodec/aac_adtstoasc_bsf.c +++ b/libavcodec/aac_adtstoasc_bsf.c @@ -36,27 +36,26 @@ typedef struct AACBSFContext { * This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4 * ADTS header and removes the ADTS header. */ -static int aac_adtstoasc_filter(AVBSFContext *bsfc, AVPacket *out) +static int aac_adtstoasc_filter(AVBSFContext *bsfc, AVPacket *pkt) { AACBSFContext *ctx = bsfc->priv_data; GetBitContext gb; PutBitContext pb; AACADTSHeaderInfo hdr; - AVPacket *in; int ret; - ret = ff_bsf_get_packet(bsfc, &in); + ret = ff_bsf_get_packet_ref(bsfc, pkt); if (ret < 0) return ret; - if (bsfc->par_in->extradata && in->size >= 2 && (AV_RB16(in->data) >> 4) != 0xfff) - goto finish; + if (bsfc->par_in->extradata && pkt->size >= 2 && (AV_RB16(pkt->data) >> 4) != 0xfff) + return 0; - if (in->size < AV_AAC_ADTS_HEADER_SIZE) + if (pkt->size < AV_AAC_ADTS_HEADER_SIZE) goto packet_too_small; - init_get_bits(&gb, in->data, AV_AAC_ADTS_HEADER_SIZE * 8); + init_get_bits(&gb, pkt->data, AV_AAC_ADTS_HEADER_SIZE * 8); if (ff_adts_header_parse(&gb, &hdr) < 0) { av_log(bsfc, AV_LOG_ERROR, "Error parsing ADTS frame header!\n"); @@ -71,10 +70,10 @@ static int aac_adtstoasc_filter(AVBSFContext *bsfc, AVPacket *out) goto fail; } - in->size -= AV_AAC_ADTS_HEADER_SIZE + 2 * !hdr.crc_absent; - if (in->size <= 0) + pkt->size -= AV_AAC_ADTS_HEADER_SIZE + 2 * !hdr.crc_absent; + if (pkt->size <= 0) goto packet_too_small; - in->data += AV_AAC_ADTS_HEADER_SIZE + 2 * !hdr.crc_absent; + pkt->data += AV_AAC_ADTS_HEADER_SIZE + 2 * !hdr.crc_absent; if (!ctx->first_frame_done) { int pce_size = 0; @@ -82,7 +81,7 @@ static int aac_adtstoasc_filter(AVBSFContext *bsfc, AVPacket *out) uint8_t *extradata; if (!hdr.chan_config) { - init_get_bits(&gb, in->data, in->size * 8); + init_get_bits(&gb, pkt->data, pkt->size * 8); if (get_bits(&gb, 3) != 5) { avpriv_report_missing_feature(bsfc, "PCE-based channel configuration " @@ -94,11 +93,11 @@ static int aac_adtstoasc_filter(AVBSFContext *bsfc, AVPacket *out) init_put_bits(&pb, pce_data, MAX_PCE_SIZE); pce_size = ff_copy_pce_data(&pb, &gb) / 8; flush_put_bits(&pb); - in->size -= get_bits_count(&gb)/8; - in->data += get_bits_count(&gb)/8; + pkt->size -= get_bits_count(&gb)/8; + pkt->data += get_bits_count(&gb)/8; } - extradata = av_packet_new_side_data(in, AV_PKT_DATA_NEW_EXTRADATA, + extradata = av_packet_new_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, 2 + pce_size); if (!extradata) { ret = AVERROR(ENOMEM); @@ -120,17 +119,13 @@ static int aac_adtstoasc_filter(AVBSFContext *bsfc, AVPacket *out) ctx->first_frame_done = 1; } -finish: - av_packet_move_ref(out, in); - av_packet_free(&in); - return 0; packet_too_small: av_log(bsfc, AV_LOG_ERROR, "Input packet too small\n"); ret = AVERROR_INVALIDDATA; fail: - av_packet_free(&in); + av_packet_unref(pkt); return ret; }