From patchwork Sun Feb 18 01:43:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46328 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:dda5:b0:19e:cdac:8cce with SMTP id kw37csp553307pzb; Sat, 17 Feb 2024 17:41:38 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCVz0fswtHyBmMonBn4Q+GIrCLjBGNLmYiYIkBA4tmhKD+H8nPeXPP8BxqETKA1+53iKD2gpLuX5cCHRinqfuM0iK+iuO86GAuVc8A== X-Google-Smtp-Source: AGHT+IEGSJLAuYk6mc+P0CN9wUPjh6dwq2KSNvYEs17zjAcWsDaisiZ/B+GKJmB2c7WAbVFdOIQE X-Received: by 2002:a50:fa8c:0:b0:564:3f11:14d3 with SMTP id w12-20020a50fa8c000000b005643f1114d3mr1076532edr.8.1708220498047; Sat, 17 Feb 2024 17:41:38 -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 bm9-20020a0564020b0900b005621a33cd1asi1230478edb.324.2024.02.17.17.41.37; Sat, 17 Feb 2024 17:41:38 -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=@outlook.com header.s=selector1 header.b=SNxeSLZk; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3CD8868D300; Sun, 18 Feb 2024 03:41:33 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2097.outbound.protection.outlook.com [40.92.74.97]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 86EC468D300 for ; Sun, 18 Feb 2024 03:41:26 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Alok5iUE6NQi71TPYgw5tHKLoO9Se1UiT+R90eLAdBFt9E/3v1g+alIvotTIVq9CLn+AhJ+wGMhKapGo1Q6XaHroRG0tkpZ3Tprvv2luISnHOPpf7kndr2Y3aOne1N3RQhANkrfv5277oGZSs2IZt5ixcpOl88JiIxckTEYOvsGpu9Oj9nt7Tc/1z2DRw0nBC/IEE7IQ7IfxakNFh7iO/ZsFbinJZoiZWlNpQROQOq1SFUJrZEImFQEsKZT5mtO4eJwmQruZYU2XxXJpUHIr504hJPaXp7p61q+PVTncKVNo5nh5SH8WIMxOBLviL+vTHv97aF/jgIqU83rA8hCIHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/4icTwmVrSayP2Hjn+er6LqCUNZyuj979X+y6hTZqAo=; b=MbSHIzEjU+YLxv9v64HTAn6H1NS00FJgNa4ib4QeBIl+Ru681pPoIlpS8Sckwwg7KFUP6Sk+aBuQaayrHTZbRzEHGd6yL6BjMf66AjCnftqHUGtKEUCkbadiDDJe6q9kd8v0s3/lloWher7TJQZzxLPgyqY5iGr3lksQLFruRapv04J791qNYejkVZUUX80Ls4MbjnOuqsspjsHv6iLDJ8RCAyqgHbZOhSiGYMtyTBQaOLgZlOIp0p2b6ZrIr6l4dnYdmy5yMgbFhgmZ5yJpWU3EykO98/iG9mq+YDiv8pGlpZ/0JB+k/0zfZerTct5Xtvi+JAq/23ShWahVATyryg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/4icTwmVrSayP2Hjn+er6LqCUNZyuj979X+y6hTZqAo=; b=SNxeSLZkjlGuBner5/CCTKpp8tOt3tMuxMQ6aSvEYJAGSf/lHU2as37u9E4T4/Y2OAf9YRzsr1Tl0vRC0j7cmMj+7lxT/doHavJbZKVf8w2fB9wNZJODMlN1w2r9Eu2QVC4/BCmt6577ZzpgdojGGw1kmKRvFiJIR4Pc8T3JN/NPtbph7m2l30mrB6DaUIKjERmKWamwNWzh5yT8WPt8S3wzH2GUAvQO6seFMhX+pHyxikIqGOKWNuyBB+Tc3Pic0RObm6gDMy+BxMhbJzIbBc84zShQgXN8m06aqxCUcfv2PIDiA1oBrDnKsGRWMPUaiFPvvuUyNDTV0kFoBSdDuQ== Received: from GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:109::7) by DU2P250MB0319.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.32; Sun, 18 Feb 2024 01:41:20 +0000 Received: from GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM ([fe80::ffe3:46c:6214:2504]) by GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM ([fe80::ffe3:46c:6214:2504%6]) with mapi id 15.20.7292.026; Sun, 18 Feb 2024 01:41:20 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 18 Feb 2024 02:43:04 +0100 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [u05OG10x3heemy1o+jLH2uEuY01g/FUGTBctS/hKk6E=] X-ClientProxiedBy: FR3P281CA0033.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::12) To GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:109::7) X-Microsoft-Original-Message-ID: <20240218014308.2819410-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1SPRMB0063:EE_|DU2P250MB0319:EE_ X-MS-Office365-Filtering-Correlation-Id: 5cb46e82-551e-4e3e-dab2-08dc3022b4b7 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gSAs8UDEUwgVkvM08Xg4phFZqr4IUuvYqbIMh+WJLsNG8o9WwdH/BR5T4cqFPZG9TsAMtGJOnr6TpKDGLhEpDGEKKdxXyRsBLRfiRcSjImv4oTLgLPnaAy06ugzVJh55h/KKdIv6RfWm/LBEH5CizpE8LVm5ZMZDp27fRMjQBZAD/+Ez+hDhluITUlqU4EaXNdD9QvPICrbSgZp0QX/O3Cq6bhMq7h7HuZsNVWQJsBvE3k68Hsx1WyqnuA4CIXhX/7l92QRaVvTA42oSyryYqukygngFf9kXfMVqvify5B1QZRvz3PHhV62cxdIva8l4VnvK16XyEyOzpXhalg2ofCfGqzBJBFmWz7yvb/1A+D2ZEwb8v51T+E9CAsm/uoltgeoAVeLBMuTx63ILAOzW/h+5Apct1zKyE7hE3GMi82/t1lGpotlZLZKlAwQiUtIMqit0F6QWPQNxn1MPZ8y/Lsg/q2GWePfOlBtWDiDz9MMuFapy644oK7RHDwPkUOqyi95GHp7LjQ0CwNT+ZdTZyk6yAdy/A8oXMKOG06PvkaijiVfygvabtXcPbE4MIrTBvGlxtAUOlqWdovD/z6/XRl8MqFFNKYbCcB7FYvq02tiscgXuZAWeqE5ojqd4I8WH X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7a9IzHDuZ8KVDS6ZwVTB6r8yjmgyK9LEnObCCcVVoisyFGBrTRr/znQgDFfTdHzyulVqqb8fYEjGHlDT+6CDmVDMKn8bvHS8UGNKvVicDm/pKSdiqCB4WVUe7XJxXzecD1WofQvH+kt2m8yYCizqzb3fzA3hAs3u9hR+87pjhiliOsr/rZIdrX5jbcegJvMlSSQkAzFyUbqlpXLKR8976y2SfZgljjshQM5zV5IQutEKDHO92P6HdHD3dzjcECdXZM5JXjv8fjEFm5DmxX6tUdToo2uxMCCPFsj4UIHPIO2o+evM2rNsi1I4vHdlBTdA6AtkCfwzxoCvQ3WiMl2Tw5fuE+ANRgPig/uZMdupWhxoo0nyUf1f4pPifNPijgd7mP+f6+XSRxsUSzhdkEK2KJ+wKmCxNCAvJqOSBMhNmPr9jZfkqfB3n5Q1plZbSig/vgO5RF61Y+0hSU+2mhNKdNpzrUhsA8ZKu2JrgVtZSGYMsTed/EoO7Iw+CTCaDI/6ZenIHiqSKk5q5uRez9TqRxUz3GcIjEoupmrl9O2qXGuoWFul3vf2ViYKW/O+6pvXCjRPp7S9ekA96y6eAemBc/46pkS94moOEKN4v6PcwqF5iOv6+FH9MMsigb/NVG82u+eqJTWM5NPDfqWmn1QnB+KGUUHoCS/497anQ0YHadmJqpxvSVIQsmg8fXWSlLSwoJMqV6plBt1hn7z5sdxNkMuqvYB+EdhuNCxICx5YzIXDS3KqVzttCTqPV4Mg3Xhu2aKAzqwZjwQ7jX/MDeaqC5wmAVh8p/u7xxfNaze0+5whFwcNgMxXm79B7j3MwwK+4ui0WaTqxZQneOOy8OXoEu9KouBkKx1fijhicdmPwTiuMaP6WE3wJFr6bYDgqyAWgBPXITlO8SWClo2x/MO98ppdPWkfHksj/rhlIQSQWXXXtjHGFHEB81rL3lWyb7fB3NYXbW6mk1g8ehVRyk7ReiYwLHjGoy5eHIc4bb3k4Ag5dGv/cXB75Ca0RWcqEFobbpH7j9JeLEeBxb4/CcvNMEfJhxlXhDB3N3R3wBa+/IppPZvHljeC4eefhimG2dXKNTnwcfFXBVZqgw98WSZPfAK5+8p47ZXTD/TTa41lViw4Cwvn/CPh131jqNxtskeO0TfBvQfUJvXvEZD5M7Mzj09KAADQwBR35ckmRds0Uh/pee1ftCjXB0fK7Xf4dEAaujpaYHyNQ7E2U3ol9jvFynk/WBxxRADMQ82tF7Wg08lF3M9+wPRFDg5UQec2aUgfuWR7mGD/W4sCO27s3woHqg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5cb46e82-551e-4e3e-dab2-08dc3022b4b7 X-MS-Exchange-CrossTenant-AuthSource: GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Feb 2024 01:41:19.9993 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2P250MB0319 Subject: [FFmpeg-devel] [PATCH 3/7] avcodec/webvttenc: Don't copy data around unnecessarily 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: p5S+NgNwlXlY Using av_bprint_init_for_buffer() avoids copying data into the internal AVBPrint buffer (or worse: to allocate a temporary buffer in case the internal buffer does not suffice). It also ensures that the data is always 0-terminated. Signed-off-by: Andreas Rheinhardt --- libavcodec/webvttenc.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/libavcodec/webvttenc.c b/libavcodec/webvttenc.c index 4369aacb74..9922f33485 100644 --- a/libavcodec/webvttenc.c +++ b/libavcodec/webvttenc.c @@ -22,7 +22,6 @@ #include #include "avcodec.h" -#include "libavutil/avstring.h" #include "libavutil/bprint.h" #include "ass_split.h" #include "ass.h" @@ -162,7 +161,7 @@ static int webvtt_encode_frame(AVCodecContext *avctx, ASSDialog *dialog; int i; - av_bprint_clear(&s->buffer); + av_bprint_init_for_buffer(&s->buffer, buf, bufsize); for (i=0; inum_rects; i++) { const char *ass = sub->rects[i]->ass; @@ -180,16 +179,13 @@ static int webvtt_encode_frame(AVCodecContext *avctx, ff_ass_free_dialog(&dialog); } - if (!av_bprint_is_complete(&s->buffer)) - return AVERROR(ENOMEM); if (!s->buffer.len) return 0; - if (s->buffer.len > bufsize) { + if (!av_bprint_is_complete(&s->buffer)) { av_log(avctx, AV_LOG_ERROR, "Buffer too small for ASS event.\n"); return AVERROR_BUFFER_TOO_SMALL; } - memcpy(buf, s->buffer.str, s->buffer.len); return s->buffer.len; } @@ -198,7 +194,6 @@ static int webvtt_encode_close(AVCodecContext *avctx) { WebVTTContext *s = avctx->priv_data; ff_ass_split_free(s->ass_ctx); - av_bprint_finalize(&s->buffer, NULL); return 0; } @@ -207,7 +202,6 @@ static av_cold int webvtt_encode_init(AVCodecContext *avctx) WebVTTContext *s = avctx->priv_data; s->avctx = avctx; s->ass_ctx = ff_ass_split(avctx->subtitle_header); - av_bprint_init(&s->buffer, 0, AV_BPRINT_SIZE_UNLIMITED); return s->ass_ctx ? 0 : AVERROR_INVALIDDATA; }