From patchwork Sat Jun 17 15:18:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42172 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c526:b0:117:ac03:c9de with SMTP id gm38csp2297437pzb; Sat, 17 Jun 2023 08:19:12 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7SX7B6RxPrx5qQQduA/WpOA1ONlBG9zIIp3GYhJxqCh/2NPbU48BKewnEgM7FhZPWE1Fmq X-Received: by 2002:a17:907:a0c:b0:978:8e8c:1bcb with SMTP id bb12-20020a1709070a0c00b009788e8c1bcbmr4773230ejc.43.1687015152267; Sat, 17 Jun 2023 08:19:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687015152; cv=none; d=google.com; s=arc-20160816; b=I04bOrGRZ1qSaRZUD8dG3sERynaREoWe0W1Tg56oDoPLgvRIKg1Cs/EV6kiRjGBGIJ ePkOZywESWSkadVPXaeKu2v95Ap6JcLqylixRzTcZqkobJQpA8AjzKw5LNw09wqFuUuN Wkk5jL33qbEFLxRegorZJfxWsk1souaA7KHW9kTJPUDgUeOkkU6BWDOKzLtvPz42CWp+ w4UztAWfajFTSnqISPELIs7AGxql54eoZig0rKwAaMYke49sg4FS+4+UaZMu1MpjzGPI SjTKDAbUWODkWrEbFfMue7ofi2Q2tM/rBakDVZoZMCMCwoXYf2c6XEKXr9GeqSNyM/AC cAoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=w5o/47DHLDrhjVqT+IxprpNNFx2bbp+2mK/nA89C8eA=; b=r3WGeTekYjEBgeEo2SbRZEQj9bUZWM4CNRhQ9k6FX8cXjJCnURaouY119ODS1M3YH3 8D2aaYhCiAh1qatVUwfZCNIn7M9sDJUDvluHV5vhtRrMcZJVH+AFXDHy5AQHf7PEgvQT 5xxf9q+LrEZoMLXYLUjWUdrOIj7E0GWjEhNR4ZjJhT1yud9200+ZGgYcaaijmKrKVn4R 9PyWlVSd95Ts5VYZAuWFC+ZmaFu1aGM2C/SthNVyh4bh/rjD+98QJoTUaejnKRugollm pvP7Gqk3ZqJ93TXqaxtcURAz/p6ZdRCnS7b0yA/ETSmwJj4QzAV0xPJtdZdXjqexJTUR wfEQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=X9MDK0Jm; 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 v23-20020a1709060b5700b00987ddccbe11si655443ejg.628.2023.06.17.08.19.11; Sat, 17 Jun 2023 08:19:12 -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=20221208 header.b=X9MDK0Jm; 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 5DDE368C3AF; Sat, 17 Jun 2023 18:19:07 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oo1-f44.google.com (mail-oo1-f44.google.com [209.85.161.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 01E6368C09C for ; Sat, 17 Jun 2023 18:18:59 +0300 (EEST) Received: by mail-oo1-f44.google.com with SMTP id 006d021491bc7-55e0706af99so1215880eaf.1 for ; Sat, 17 Jun 2023 08:18:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687015137; x=1689607137; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=REXLU3KsFOIAdmFCwu0Q44U8l3/CQh+nNiAFsSRk/D4=; b=X9MDK0Jmde6MCJToeoHYuKxKZHQq9ZmTsuEm5rRky3nCFK3hrA9dKCquQ2FQYqp8Fx ovF9+kFfXcbgrxLGsW6dTmdC+kyIrSBZokoCtE55Z39DIZsHPd11AB+Nl9wF9R+mbkBM jcCY2y87GSW91CYiwkxohZkQzEGd2Ew8dqal2hVj4xCbcKRYlITBluf8ot+2sAbIXWdw +3/eARm4pxRU4T6ytrN9BPYYwndwMHfzr3fP08o2VgSVKCZGOY29BU5objPhIEP1mxb+ L0niv00xpZd5mCRJE+7LtTKRUDWpscJ38mfR0hdeEOeb/SRXdiwp8t1FgWIGrpN+SSOA FnlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687015137; x=1689607137; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=REXLU3KsFOIAdmFCwu0Q44U8l3/CQh+nNiAFsSRk/D4=; b=i58b1XJ9LSIIYLzBBchIkbwf8pA3jV+R7YmMYBecLzFd4qTtuF64kRAx04A1OqWAC8 RbDS4sLa4pny02Tm48z7dGE1R58q5sbLYQKWctuLI3vx7FlxSXjNf0EvTxu1z2YiejhH PC8ebaev1bV5JAK0R3B2PWPWCzWLyA2/wmGzCeCEseH9Ymx28qZwfg4mYhqdsnZF6imm XbSFccHoYcEVkphu/1NKGEThPt/2X+gSkVS9jlukgToRym1zfKopBHJPmkbYtV1hb7y9 Vt85qcsE767gYIkeYKYu7Nh1oSUGOMS6+C/HyjlglRCgxf2v6x1KjXkktAU7CmwpyOvw 7Rjw== X-Gm-Message-State: AC+VfDy4ecTv39AUHMcXJH4AFY4lCcvkxpW6hx5lo/DV867eFfvK0P0k hYJL87fL8Hchg3oe8vwN0lTnTdtwJwc= X-Received: by 2002:a05:6808:d4b:b0:398:2f92:65ca with SMTP id w11-20020a0568080d4b00b003982f9265camr7055680oik.7.1687015137472; Sat, 17 Jun 2023 08:18:57 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id j189-20020acab9c6000000b0039600e3376asm9533452oif.1.2023.06.17.08.18.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Jun 2023 08:18:56 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 17 Jun 2023 12:18:46 -0300 Message-ID: <20230617151848.1378-1-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/evc_frame_merge: use av_fast_realloc() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: a9IbdAXoyriU Signed-off-by: James Almer --- libavcodec/evc_frame_merge_bsf.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/libavcodec/evc_frame_merge_bsf.c b/libavcodec/evc_frame_merge_bsf.c index 7cc701f5c5..827f114f0b 100644 --- a/libavcodec/evc_frame_merge_bsf.c +++ b/libavcodec/evc_frame_merge_bsf.c @@ -26,13 +26,11 @@ #include "evc.h" #include "evc_parse.h" -#define INIT_AU_BUF_CAPACITY 1024 - // Access unit data typedef struct AccessUnitBuffer { uint8_t *data; // the data buffer size_t data_size; // size of data in bytes - size_t capacity; // buffer capacity + unsigned capacity; // buffer capacity } AccessUnitBuffer; typedef struct EVCFMergeContext { @@ -72,9 +70,8 @@ static int evc_frame_merge_filter(AVBSFContext *bsf, AVPacket *out) AVPacket *in = ctx->in; - int free_space = 0; size_t nalu_size = 0; - uint8_t *nalu = NULL; + uint8_t *buffer, *nalu = NULL; int au_end_found = 0; int err; @@ -102,15 +99,14 @@ static int evc_frame_merge_filter(AVBSFContext *bsf, AVPacket *out) au_end_found = end_of_access_unit_found(parser_ctx); - free_space = ctx->au_buffer.capacity - ctx->au_buffer.data_size; - while (free_space < in->size) { - ctx->au_buffer.capacity *= 2; - free_space = ctx->au_buffer.capacity - ctx->au_buffer.data_size; - - if (free_space >= in->size) - ctx->au_buffer.data = av_realloc(ctx->au_buffer.data, ctx->au_buffer.capacity); + buffer = av_fast_realloc(ctx->au_buffer.data, &ctx->au_buffer.capacity, + ctx->au_buffer.data_size + in->size); + if (!buffer) { + av_freep(&ctx->au_buffer.data); + return AVERROR(ENOMEM); } + ctx->au_buffer.data = buffer; memcpy(ctx->au_buffer.data + ctx->au_buffer.data_size, in->data, in->size); ctx->au_buffer.data_size += in->size; @@ -143,10 +139,6 @@ static int evc_frame_merge_init(AVBSFContext *bsf) if (!ctx->in) return AVERROR(ENOMEM); - ctx->au_buffer.capacity = INIT_AU_BUF_CAPACITY; - ctx->au_buffer.data = av_malloc(INIT_AU_BUF_CAPACITY); - ctx->au_buffer.data_size = 0; - return 0; }