From patchwork Sun Feb 18 01:43:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46327 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:dda5:b0:19e:cdac:8cce with SMTP id kw37csp553278pzb; Sat, 17 Feb 2024 17:41:31 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXuGzmaciE6sbVNq6GvO3DueV6l+LwjFeJxpoEHdNgoHzFf84Vky1wkJKplUZtaT5chFB8DstsDFPPl/Ws6aJq/sOb90iRL/t1K+Q== X-Google-Smtp-Source: AGHT+IHL1CNwxazzfVR9v7yGaDtShbJeE4mweIETRKn2C3/kMRcdTrSfs46dKHJOC6liggQeLUM7 X-Received: by 2002:a2e:9c91:0:b0:2d2:3140:e6f7 with SMTP id x17-20020a2e9c91000000b002d23140e6f7mr911948lji.51.1708220490875; Sat, 17 Feb 2024 17:41:30 -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 i10-20020a05640242ca00b005645fd0e569si44604edc.183.2024.02.17.17.41.30; Sat, 17 Feb 2024 17:41:30 -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=KTJb6iU9; 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 23C3B68D306; Sun, 18 Feb 2024 03:41:28 +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 E2D8D68D164 for ; Sun, 18 Feb 2024 03:41:20 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G05Hod1j7PN31qUeUnpe19sHhL1k8lfKgPDpzkFLKGltQ1uMEBnTK4HkeN0xaM4FS+JA65qYz7kCsuTwnu+vfuxjjZBfQf5Obg/WckZde+Vbl8Sh6bc0HMmn6jDY3RY2udW97gtwxxOdBXluAbRLTH41Nn0PwAn5s7uJuhNaAX2tBFBOdOgNoK+uZz3KcE7MIW94c3ib1UFOUHOt+Ssg9WtTXCB2bcHOVgtOeEm0MAT8Yx+8APv5JleUZBm/JhxxpIs8bl2B+S8i2SN9XkVKTOjABfRDboxfnOvXBSXz5S4I09T45Bnte2VV3sGe81ThNnIVK1aO1QTZacos4KjHqg== 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=kaATnmD+CUTxI8hqs/J1z71vYZYU3NTkJJUUGDoxMx4=; b=UMENAgCapp9QO+Im2VljGNIDRT+0VbcRplVc4q8kC9wKdJ4FNlE3ZcWftA5MCNDe35P+K1+9pT5uX+aIMhPJrEuv22BO4amVyaOw4tk2Y5Ppqx9kbuX2gTEtDyZOrLf15i+pF2AdAvjbveVDOJSpEizp4Ql4kBim5X0YSjVGum7dbi+wKs2acUpnbaa5gtp7dxmtIw9cuqEU0BMJhzGzJxTw4+d+fyay1uS1Jzxs8uYQo8K77ReXQmNLb3pw7RoBGV87A1RrhlS2q4D9nlzxVDxxGimSgwapPaualrOoo4TzJNj9TqcjpCJysxkhGk5QQa2OCCJeGKjmIANa13QpoQ== 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=kaATnmD+CUTxI8hqs/J1z71vYZYU3NTkJJUUGDoxMx4=; b=KTJb6iU9Ie35mcqGV0rv5tYSgNGe0pLxZsuYobSibelJ23Yik6Vp35wjmODLaPj6QvaavVu09w3c4vmc0AVxpaEUn+muvdnKBlXOqFF0CCLEx9SKNaOp/KpC609mjrx9/LEseme642DRUEwve3uKl9a6qoTeKoFymuQyzjAbuuUknOdaGZ4im3KPaJf5vJgxqz62sMl3xjoNq33q+oMlBbZqapnqtZgIfG0Ico3H2XaUHjJGrejGgUhGxms559s8Rf/922f0XR7e/yjz7QrovLOMAbaJoqRwtfIGoC/ruopqtLFjRTdjOeNv6r7LxeHZU57DCZbz9BzqK1BQRkcd/A== 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:18 +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:18 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 18 Feb 2024 02:43:03 +0100 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [ah8L4uCb9Paxymxm6NWr80K4bZiZmZX0FvcwmiGMD20=] 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-1-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: b02d74c1-2e9a-4236-fd67-08dc3022b3dc X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DPT5v0AfUBvM474QuVGgMMV7Ty3vdygEdSDOuVD9bUyl6kNM2m95WdELAulAZaAIMMXuizbISvDXDlL5D5Mmks1EKcL9wKYDBc40cQIlDbSslL6WK6KoAZvpFWlAKPu3uwRZo1q04Axabh2TaZhGnv7R60IM0S9BOtB2+bY1ydC4GEkz4zylWcga6Y03Pu8GLtDRhfN3yviAzimISj7pKJOFaAsNhAQc6kypyub32HOpJGA+eG5VitlQMjc9Vyfc52TM+MZexUlXPTTnM7yNqKVetql5n0d+DWmUsRfbS+hTVMY39uXW2nfJuMiSt0Pm8IR3RLgyuV5AWuq9FhXUG9NAcriAo3aC26JXSSAIN8KaKJeQwzDnR1UJbneoOQNmD3gfRKCf6nUBSBCfg8DhPujPUzFacP1cpiIKIJThIVcl5f0dBsaiywmRyYlmz62KdlUJB/mcBDZ4w5v/X4s2AzGjTWmcuRXo2oYArioDSImoqOLNOSMJzOQKXUGtmsbUKE/+/07qinxWCcu9+Eg20kHBIwoXpKwSkElyNQuKbnUon0qWsQA67xiSvBLEuOZfrtaWTxHY+Hf/PtMHO/3IZRK7bUnN3dPiWYWP1WetLZI= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3tn2Kcmk+L0M/m91YnS/N61W5Q7V1i9fLJ69suqfin40XP1SGCqNJ+OQbX4NkT6veaN4EbXU6CFrPkHbn4LsXpWvVaCEGORgQzvJT5HuCAdAvqXtesMLIHwlpnPy5MnfGk759t96uTu4ssfT3nYFSPL//y0i5jQOP0+Uew0yUJBjm3ugYUs9ndhdd+5wbF+UyrWuB5LNUKcp95osNXAk7JzK5ATK92PUEsvwnQqlJkldA1U5ri+FTUrA7HqMuNnKLhoJC76Thfx1QfaT0uGl2/le2CJa15lt9VzO+RH8mKIJSjsej4jMJk8stpjPIaqvZmr3Ri+9uTpHnrQzeuMkI12AqoqNWNSyn87XpfrA6PHDDrHT2tNrBvl1TpoBkKILqlBp64hIUq2YQKCEGSiUhAoRGSsTy7i94NyjAH1hy1lHnoeYqlBLCWaRWkszEbagXYgU/MICHsSU4wXeZwaayHtvagE6lvSmAV6CON7yw+VQ2+6rzDB8qV7C2REBeUqg0eAimj69864mKfvGiGdjc7feZAufKwr8hG6/lShrnMYFgduhr9QAXWbCxfdG2oRj9YY1sIwzjBFwXpdNi3Ix1tPU4XmmW0BNAhPs3YMFTZy5j6j6pnxLS+Ak2I9Mv6mkAMHPeLb1xY3NtvzObl4tgvbRdl1ioB8VnDfPizU5zcCuzcqEJ83hfzZ7UCKJSofbX1IOPiFlmehqAVXpaQJ90pR2S93bpyTC7RFPcY1nahGe5jWqD7+cNEhjdvsQfU8NowMkR4AdyPbT0N6pKkXsbxEhNKGb69064zsX9Dnd0PSo7FWu/bXwVYROLXY7IIQr5Uh27dLuTVqFJaJFF/isbMypMNKWNatz+4G1moGUw7MR8GBplWRP3Zya4KX+l/1OaECLw619+ZnyZedVBoPx5XdEYP2Eu/348jRIKYEV+Rtbx5cDM76zxckPYjfarnrTlJjiwWkAazACKFG8wB3s3xKtRis8sc+6TQBNwDqUcYLB8ZZf7fR6z0FA9k0GcTETOvZ0llL2JcIqIjD4iaku7xR0q9TIsZJpiIuzormQf80021TVq2nxctk5vc1dyHmm08xokevSVRnpumtSw9Rgf0gagXQkKYuGMyVzFwKRgFjVu8dYt6MTTAZTjc3N1bDPzLLhSeCJIQm7aFSV9HGqW+N1JYlVxkuZriDoQ6QQ/TB7v2qSZcpB+SiRWkB1m9YFkXLwMEne0u1HKbirpefqJEmHs6p3UpcXoIqcm2/WUlE66kc87HT0rg9TpsjvAGC4AAxRSnyKh6ckWwNd9iqE5g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b02d74c1-2e9a-4236-fd67-08dc3022b3dc 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:18.5707 (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 2/7] avcodec/srtenc: 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: R2BwEWWHKA3K 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, whereas the current code never does this and returns success in case the length of the string to write and the size of the buffer coincide. Signed-off-by: Andreas Rheinhardt --- libavcodec/srtenc.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/libavcodec/srtenc.c b/libavcodec/srtenc.c index 7e36a2200c..9b6f61ebd1 100644 --- a/libavcodec/srtenc.c +++ b/libavcodec/srtenc.c @@ -23,7 +23,6 @@ #include #include "avcodec.h" -#include "libavutil/avstring.h" #include "libavutil/bprint.h" #include "ass_split.h" #include "ass.h" @@ -138,7 +137,6 @@ static av_cold int srt_encode_init(AVCodecContext *avctx) SRTContext *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; } @@ -237,7 +235,7 @@ static int 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; @@ -257,16 +255,13 @@ static int 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; } @@ -287,7 +282,6 @@ static int srt_encode_close(AVCodecContext *avctx) { SRTContext *s = avctx->priv_data; ff_ass_split_free(s->ass_ctx); - av_bprint_finalize(&s->buffer, NULL); return 0; }