From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 339DB496D7 for ; Sun, 18 Feb 2024 01:41:29 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id ED75768D303; Sun, 18 Feb 2024 03:41:27 +0200 (EET) 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: =?us-ascii?Q?3tn2Kcmk+L0M/m91YnS/N61W5Q7V1i9fLJ69suqfin40XP1SGCqNJ+OQbX4N?= =?us-ascii?Q?kT6veaN4EbXU6CFrPkHbn4LsXpWvVaCEGORgQzvJT5HuCAdAvqXtesMLIHwl?= =?us-ascii?Q?pnPy5MnfGk759t96uTu4ssfT3nYFSPL//y0i5jQOP0+Uew0yUJBjm3ugYUs9?= =?us-ascii?Q?ndhdd+5wbF+UyrWuB5LNUKcp95osNXAk7JzK5ATK92PUEsvwnQqlJkldA1U5?= =?us-ascii?Q?ri+FTUrA7HqMuNnKLhoJC76Thfx1QfaT0uGl2/le2CJa15lt9VzO+RH8mKIJ?= =?us-ascii?Q?Sjsej4jMJk8stpjPIaqvZmr3Ri+9uTpHnrQzeuMkI12AqoqNWNSyn87XpfrA?= =?us-ascii?Q?6PHDDrHT2tNrBvl1TpoBkKILqlBp64hIUq2YQKCEGSiUhAoRGSsTy7i94Nyj?= =?us-ascii?Q?AH1hy1lHnoeYqlBLCWaRWkszEbagXYgU/MICHsSU4wXeZwaayHtvagE6lvSm?= =?us-ascii?Q?AV6CON7yw+VQ2+6rzDB8qV7C2REBeUqg0eAimj69864mKfvGiGdjc7feZAuf?= =?us-ascii?Q?Kwr8hG6/lShrnMYFgduhr9QAXWbCxfdG2oRj9YY1sIwzjBFwXpdNi3Ix1tPU?= =?us-ascii?Q?4XmmW0BNAhPs3YMFTZy5j6j6pnxLS+Ak2I9Mv6mkAMHPeLb1xY3NtvzObl4t?= =?us-ascii?Q?gvbRdl1ioB8VnDfPizU5zcCuzcqEJ83hfzZ7UCKJSofbX1IOPiFlmehqAVXp?= =?us-ascii?Q?aQJ90pR2S93bpyTC7RFPcY1nahGe5jWqD7+cNEhjdvsQfU8NowMkR4AdyPbT?= =?us-ascii?Q?0N6pKkXsbxEhNKGb69064zsX9Dnd0PSo7FWu/bXwVYROLXY7IIQr5Uh27dLu?= =?us-ascii?Q?TVqFJaJFF/isbMypMNKWNatz+4G1moGUw7MR8GBplWRP3Zya4KX+l/1OaECL?= =?us-ascii?Q?w619+ZnyZedVBoPx5XdEYP2Eu/348jRIKYEV+Rtbx5cDM76zxckPYjfarnrT?= =?us-ascii?Q?lJjiwWkAazACKFG8wB3s3xKtRis8sc+6TQBNwDqUcYLB8ZZf7fR6z0FA9k0G?= =?us-ascii?Q?cTETOvZ0llL2JcIqIjD4iaku7xR0q9TIsZJpiIuzormQf80021TVq2nxctk5?= =?us-ascii?Q?vc1dyHmm08xokevSVRnpumtSw9Rgf0gagXQkKYuGMyVzFwKRgFjVu8dYt6MT?= =?us-ascii?Q?TAZTjc3N1bDPzLLhSeCJIQm7aFSV9HGqW+N1JYlVxkuZriDoQ6QQ/TB7v2qS?= =?us-ascii?Q?ZcpB+SiRWkB1m9YFkXLwMEne0u1HKbirpefqJEmHs6p3UpcXoIqcm2/WUlE6?= =?us-ascii?Q?6kc87HT0rg9TpsjvAGC4AAxRSnyKh6ckWwNd9iqE5g=3D=3D?= 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: 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; } -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".