From patchwork Sat May 30 16:05:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 20016 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 5A2DE44AC08 for ; Sat, 30 May 2020 19:11:17 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B039A68B16A; Sat, 30 May 2020 19:06:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0BDF068AFBE for ; Sat, 30 May 2020 19:06:48 +0300 (EEST) Received: by mail-wr1-f67.google.com with SMTP id t18so7190446wru.6 for ; Sat, 30 May 2020 09:06:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NDxecd/XFRVJzBk5Hc6PqcAzNTQieXP1g0F6rTZ87lE=; b=BP4zCZBs/Qgmct8DW9whVQ+zmgjnBbUpgAj4viU0qpy2gmEHJJVTOq6tdLNur0ZbdF a1Z/OghFB2RQ3MYELP1jounuKCKFv1WZyXfUlGHAGm376BS3cN9XSW6B/B1DH4RNR1pB E4fsrBwuTx90m1MsFIzWeaKORTNJnBHkbkiPB0g3YdC47zZp9CzbYhxR03a4Zi8vrsgr JHaW1UW6O8qjxBq31aWFtv9ytykAS3boeaphPcgmroxi1+TpfRdiU5kow42dQCeQcKYb 64QVMeYLMkexnOHgE5e8Ft68C8dC48uJK+OFWi65cgklKhRinxfSLzvXLeQmc74uGsBv arlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NDxecd/XFRVJzBk5Hc6PqcAzNTQieXP1g0F6rTZ87lE=; b=a7jyzA0/1fcRi1rPZ5EnxewD/VososGPj22WjkXlZkWUNVP5CiCowBUq9jvdWANi8E vngO1MdxIEfQl0km5ChYj81YcMG0ZUAfvuB0fUQZAmRL66Wsj2F3HPIDlCrnyV6U/k6t 4axlo8BMv/7bSfh8UdSFbxky60Zqs42M/ZXSVnMNZxpsfDB8l3CecMP4CUSohe5v7X12 czEYBwwjWv+yDDdnqOYceC+JpOjmBbZLAD5niOJuz97z6KoUuLgW5PXm4TnlXZv6yxYu NpLmPlUzplbeIJgNWmeSj3PGEKRzrwu7EHTH2FASfuNeQasqeJI+13jpE64Brs0chWko 4znw== X-Gm-Message-State: AOAM531p0my5/njEwdivB8RxZlmOvqEgnVzk8JcijNhSuX12L5MB3Hij 7aImUuuT7TxDNr4TdlHYrh/mv8SJ X-Google-Smtp-Source: ABdhPJz1tp52o4RGxtS4K+oWseeFOiZPDFAZtEEJAGF66wr02JtaKQtiZMvJCIQL99KdYbCR/m3gew== X-Received: by 2002:a5d:5449:: with SMTP id w9mr14154956wrv.106.1590854807024; Sat, 30 May 2020 09:06:47 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1ab57.dynamic.kabel-deutschland.de. [188.193.171.87]) by smtp.gmail.com with ESMTPSA id v27sm15186517wrv.81.2020.05.30.09.06.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2020 09:06:46 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 30 May 2020 18:05:34 +0200 Message-Id: <20200530160541.29517-29-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200530160541.29517-1-andreas.rheinhardt@gmail.com> References: <20200530160541.29517-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 29/36] avcodec/movsub_bsf: Remove intermediate packet 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This commit ends using separate packets for in- and output. Instead, the input is read directly into the packet destined for output via ff_bsf_get_packet_ref() and only the buffer-related fields are modified; the others are not touched. Signed-off-by: Andreas Rheinhardt --- libavcodec/movsub_bsf.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/libavcodec/movsub_bsf.c b/libavcodec/movsub_bsf.c index 6e29fa8e50..b5b714ce7e 100644 --- a/libavcodec/movsub_bsf.c +++ b/libavcodec/movsub_bsf.c @@ -23,37 +23,33 @@ #include "bsf.h" #include "bsf_internal.h" -static int text2movsub(AVBSFContext *ctx, AVPacket *out) +static int text2movsub(AVBSFContext *ctx, AVPacket *pkt) { - AVPacket *in; + AVBufferRef *out = NULL; int ret = 0; - ret = ff_bsf_get_packet(ctx, &in); + ret = ff_bsf_get_packet_ref(ctx, pkt); if (ret < 0) return ret; - if (in->size > 0xffff) { + if (pkt->size > 0xffff) { ret = AVERROR_INVALIDDATA; goto fail; } - ret = av_new_packet(out, in->size + 2); + ret = ff_buffer_padded_realloc(&out, pkt->size + 2); if (ret < 0) { - ret = AVERROR(ENOMEM); goto fail; } - ret = av_packet_copy_props(out, in); - if (ret < 0) - goto fail; + AV_WB16(out->data, pkt->size); + memcpy(out->data + 2, pkt->data, pkt->size); - AV_WB16(out->data, in->size); - memcpy(out->data + 2, in->data, in->size); + ff_packet_replace_buffer(pkt, out); fail: if (ret < 0) - av_packet_unref(out); - av_packet_free(&in); + av_packet_unref(pkt); return ret; }