From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 09B904EF3B for <ffmpegdev@gitmailbox.com>; Fri, 13 Jun 2025 21:43:27 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 1CCC568CBCA; Sat, 14 Jun 2025 00:43:24 +0300 (EEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12olkn2094.outbound.protection.outlook.com [40.92.23.94]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id BC7D268C980 for <ffmpeg-devel@ffmpeg.org>; Sat, 14 Jun 2025 00:43:16 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tJIuu/kJfP7kClaE9R4PpZmO1wv0MTCdBOQkJ37myR0CemYtcpdCkOVpCS/Ywv+GnCpoMZV5F46nsej2vbHI8yICK+o6sUKXixO5E21c495NV/zSBn1X7j69dPeIq0BZRaKWTkoNNg/p5LlLeFZHs/HzVjBGU0dWb92kbUJ+ofEAY8FGVjWjrmG4I+GB98bcZ7bo3PsBr/rnMjDISXnuenjOmZG/Pc/ADoOGJJL3lO+dXRajMYIfw7r2cQ0QK40wmUyf1guJdQiWKk1bX0SK+A5uBBV7GIw1unO+i8X29Mq2ypiACzOXfmZEJLJivdBp0A8ZgXsTOf/GPbQNOcUNvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=KgLd23uyi4CllbcPnIodNrFtPKdaNOWHbyeuCGDtk9w=; b=PJ9RgHLA93OAg9ka3gvP+U1fFBdhNK5fB9kiXj4OAlKwDpGWkdwQc4OTSHrKQgDJ3hkFfQbTbKJ2S5zJkK9jB8iGsKBINNFFmK8Duhar9oETMjdV4xCqW5+SpymL4GoPAtvELtUq3/R5A1kAx+kJ2DcTiMocU2AyB9Rv29C9aSI8EBCxyFljvgtKkJQxLB9C7m+AxA7W2pqCDaT57TPnncMwQi5iLV+V/XlJgMyi28kPTn+giqJ+24N5xZXcJpr87bNoXmMsLDN4Gpn7rbxX8qvk1FIoHc4BGpyOeZ41mer3lPh6Cv/8hAGMASysX6aAmskUbtBjeLZ+qWeBu0KK4Q== 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=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KgLd23uyi4CllbcPnIodNrFtPKdaNOWHbyeuCGDtk9w=; b=Pqk4GbKTnhyvfGV65fRfqWQXiPi/FVv8/3OEpoVCp1azQP53cmU7vjrURR8e9poYTg8tFEeXCKGY6g2HrxiyTqMSSyzfXz7uc27GCVcEuXyZ62XopE0UBfO4PgnX3Wz03NLAp0j+r1DHh9IB8Sl4Aq/IZDNzg7ErABIuwAjU74LtSCTv0bmc3smgO5GJc4qXiw7vB0QNdL3GVmSyJMaPjpm9v0RCwvvbpPG7IItcE2aE3OyhHPPKEgDfubtFMTgDW+5urOMJHlwe2tuVv+VOvE9kgjpxsJ3TWL3Vcinz146lwoxlvUOoLJH5dKSBMsc4i6/7w7tqDGTYMzMw9Sey9Q== Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by IA4P223MB1715.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:560::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.18; Fri, 13 Jun 2025 21:43:13 +0000 Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::bf09:8e9:b07f:98a7]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::bf09:8e9:b07f:98a7%6]) with mapi id 15.20.8835.023; Fri, 13 Jun 2025 21:43:13 +0000 From: "softworkz ." <softworkz-at-hotmail.com@ffmpeg.org> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Thread-Topic: [FFmpeg-devel] [PATCH 01/10] avformat/segment: Add segment_write_temp option Thread-Index: AQHb3CeoJ8CCSOc+OEim/psnUshZMrQBjcOAgAAPvyA= Date: Fri, 13 Jun 2025 21:43:13 +0000 Message-ID: <DM8P223MB0365D720F5325B4766941619BA77A@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> References: <pull.96.ffstaging.FFmpeg.1749794066.ffmpegagent@gmail.com> <0132f3f9332b2ee0c53cb8fbc34ad3e956d8b9b2.1749794066.git.ffmpegagent@gmail.com> <4c613514-e388-b859-4f33-c658051520d6@passwd.hu> In-Reply-To: <4c613514-e388-b859-4f33-c658051520d6@passwd.hu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM8P223MB0365:EE_|IA4P223MB1715:EE_ x-ms-office365-filtering-correlation-id: 88d9fa97-c3da-4d95-b645-08ddaac34c38 x-ms-exchange-slblob-mailprops: Cq7lScuPrnorNxbFcnOr5XZ/wReADy9KBBYaprc318WZFt/MFOI3VEITp7LlTsAdvLb9BvfxY4gqk7qMNoMY2wIJA8/dcO+YVQaPrCFP7PivTqatfJja+hlBVxwLudNke88TRLiTq8ACLfuNSAqS+WZh5am77g+o58o4jcXbY4p5TY5ORBZbSJWwnuRb/h6N5xArTIRt7fZ7N/1g5khG48QMIcAX5ckZ11XQ/OI7AXZSOZcj8s7AfPjMcifP7WjSGYQzlMY/BEfa9dlPJsVBXfqSeslnS+02dcC+I8ARwaMgUjA9Yrn4BItUCq5hXQAq8Q8N4hcHRDxHqrC3BHYuz5xSLL7q6+z6jRxy2JBhWxqTeSvsZ51zKI2Lz2u284TToBs9svWDRFGUiEOj7Glrc4zUpZpy2J71SaKiwuV9dfHYKUNdBhYslPXMwoIB/GQg4JGIHVAtPWj1q8mN+zDrI6gsMpWbFb13SDJVP61jGKtCQnWIf7J2tIqfM2fuPBADnAsWdo28sEYd8W8WqNKuvX6SY5nIQ4LHjlG2kpQdGtNmFZVoqMEqnAdLmoPbKs1CbSTAbBQ4OFPPplR/xqvhJ3EWvh2ri4aVa77Uch+Yqg4Ld+WWgXejh4KVHHie/C/l9OuGPdtK5bpV6rudIjieRNkefiw05cOyUZ+6/C/a3hUJcTA/NYvKQzCceKd63RAy7lEGVJNCfo3HhWhJC8/CesjlKdIOvhgj//VuvI64CM3y7kxfJzXsZ40PWXv9EqSjbDkLPrhISzQ= x-microsoft-antispam: BCL:0; ARA:14566002|41001999006|8060799009|7092599006|15080799009|19110799006|8062599006|461199028|440099028|3412199025|40105399003|12091999003|102099032; x-microsoft-antispam-message-info: =?us-ascii?Q?oOsbPFKhygQsgcKevLRmNij8FVzVi/kVkTkT8awGTxPnfnVIPpP4NFxDWpks?= =?us-ascii?Q?J6P2UPC4OMQORUx5G+OLlkAHZugf4RjPTHf3nSK11AK1bNU4b2yZc1FMgFaz?= =?us-ascii?Q?oAo1JJDCG7uKLZ6xwNNWhYsjXfsNXrNkqtFO37sEoX/u+2cGxFcsV+qrYBtA?= =?us-ascii?Q?fBrW0NkkcpJKBcrXvFLHMNg8YOGuvr/OU+ZV0TLSg79Y374wmZ31erHw1m37?= =?us-ascii?Q?n7Z1WzGqeLb+VRNHkP+ZnQua6jrw2eyy2izKPKh0Owf1VHZD96+ZQ3SLrtkT?= =?us-ascii?Q?w+YMvcvUthT0F6aPotfEAuMOA7n2GJWiCNnpDRht0GIHI9amsWsFwRyw0J/W?= =?us-ascii?Q?XOjkJVY/gbi3oEEPDl5VTtkMZgZrfXxSkEVSJqzT1xJMLN2tvkJqxoSyrZgb?= =?us-ascii?Q?Y368sAaQVgDwjkUIBgHD7NYVq7Mn+ztJA71h9pi7hYK1ie3LaHzUpP61qeI3?= =?us-ascii?Q?dTrUKUYimaSu57/md5D09ykK6NI8al1Wg8glzTCezhUhcHYxrY78rfSae5Bi?= =?us-ascii?Q?ej44q6d0jf5AiOwUV608OODRcRSCLtp6a0Nah0Ti6B9aa9ja+u/dXy/C46kS?= =?us-ascii?Q?qkjmzcky/mhJE4ic6nfCAtU3OWEspgAoInB6G63dK67VLuofDcBEGU91rUM/?= =?us-ascii?Q?/Hjh5uHS7oVAZbIrXt9c6ThH0TdglmylFMid+eTJe3TryK5IUu+kR8VyMwiK?= =?us-ascii?Q?44tdnJikF5U5K6QezCDeh63oeReTt4Lxf1bxdAKkJpvyI3cjSr6L9vBY9Xrf?= =?us-ascii?Q?MauOaUF0d5GoHKqhddbXVes0118/f8SzpIRCuXneUOdy+mpqZatozxIX3HFd?= =?us-ascii?Q?vpn+CQ1/+a98OnTrfPJZjNHhKNXt2/4CNQgpl6ugvCPsssvLgQ/gdw3xHkZd?= =?us-ascii?Q?Dcjxizj1NmYYUYVaEmYab/Ad7SIl22WdxLD76KabBESGllR3whpuEeO+5tZG?= =?us-ascii?Q?aGBKjIgxBGs4LfK5mlLV/rWAC0W/gobGF6hCna/GIaQGCWb1vw3KEnUrozKS?= =?us-ascii?Q?lY0r241i45hcbLZ66V6JYb7VFdln6hIbYHkm6bIke9bOpddGufPOAct0BcQ0?= =?us-ascii?Q?rSt5k3lQ5NnPrf3RIdoCgTYIVHBlDxpRvgGpAnurMB4miQCgkVny+Mg+yYVn?= =?us-ascii?Q?7kJqohUzu9s2CWTge4NIignovgXDSbtOK4MlQXBGIxmif3FoSAIL3n4doIDW?= =?us-ascii?Q?rTs/mm0n9XbEjNYqsEaFup74DipKX8Xndy7OIw=3D=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?jNxNAje5QjTXDB05EOC5CWfghKtEy7gsK50r5F3ZX+Mv2Po1Ns2KuD0RVhoP?= =?us-ascii?Q?gLFsZD1l8mm7R3P+Ncv3QcuEbEir8U7U5dRj/tMS6m4mq/WtxUYsxYKMeBgI?= =?us-ascii?Q?07DLML42SVm6FdwnFx76YLDbxQfPqQD/kZjQHQ9uwMhXqu9pt2i5tMmQ6wre?= =?us-ascii?Q?ZhE3oXDbQQ9TuEy0wCWKJcPTdb2fxbSdZeBogV12o74OY6fjxPquhff45ztH?= =?us-ascii?Q?O36wJHjdzrnv9gA66mvwM4hjwsrhETFJZiDbYbUz1UZkLIhva0P/uvJ1KU34?= =?us-ascii?Q?eevBwHlqQNf5fM8Epsn7KEJl+xkVswo9q8602A5go1WGSbH86qk7UV+7eFsJ?= =?us-ascii?Q?u29k40tfdwUBJ3VcLxroPWuRGpSdrVT80GnKL1qAErjJspo4sMGg9YNy8XzB?= =?us-ascii?Q?1pkU7iuojGnaSdHE05yg1VnqYA4FfylaeFjZpcr86fPk/iQ0YvT3qTjjRF3v?= =?us-ascii?Q?QItzrX6xJS7H/UuY3lKVxyp77KuMcHJcXvhwUeT9Mkiqqp63AdKqlBoyUSAW?= =?us-ascii?Q?dZ/zKVb2qgpSzKPUPGQ1rBQiVmvIXNQTC5Zq/SNDNLahsvnCvNh2uX66pWts?= =?us-ascii?Q?aftZJnBacNJVY5hWxTC1jYfUvTykd1aGvz75CLbyNh6cXS6bRWMyaJ19SPBb?= =?us-ascii?Q?rwP6O+qvg5TRPDoSmtJZvCGPYln2eSkWRyxMeuUQgwcnt36hqRt83N1NMvjg?= =?us-ascii?Q?7VWWxXg+lZgDhT8EHVfLV5GqKyvBKf5wQ/n/Sp6GIxAuPXxLPHbHwS6RC3w+?= =?us-ascii?Q?HULM+ZAj8N6dcMh+gFucS0s5TI/qsJq+MLEcqVVddWibFKgztt59PoN7REV8?= =?us-ascii?Q?HdheKox1WGxQRN94N4CNSnCRKJfD1x/hT6Fc5uprZe8kV1wm3MpjDZEL/UbZ?= =?us-ascii?Q?3b7ESKFskblP8wrsRcmBwk5jooqPKM8AeeAHiO91QCkjTIYHPIxJxEqUdj2I?= =?us-ascii?Q?X20blD3LDy25RXTeh5cAUKdCHpV9C6LaqTFgUCcQW+UlOUP8nlhBtMap3ZVH?= =?us-ascii?Q?gK1sP88yK9AgXQHv/PEfy3WslcFL+fR+eR1mYPiUCkiFjgkGL2eprHEkmA3R?= =?us-ascii?Q?1eZVH4mRLi4prFOLghkUNmL+vjt6sPvQXLT1q/LddGY+ZVi5z8pq5I0lu3bK?= =?us-ascii?Q?tHDZH7SGYvsZd69br3K5Op8fkCitW5frukQeLGB0r6bRD3fvE30tiAXKdaru?= =?us-ascii?Q?hekZywoSqDlmL7KF0XwRsMYGHoocEzcl3zQhyrotid8/PZd1giFFvlZ5ZAo?= =?us-ascii?Q?=3D?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-8534-20-msonline-outlook-c7cf3.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 88d9fa97-c3da-4d95-b645-08ddaac34c38 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jun 2025 21:43:13.0295 (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: IA4P223MB1715 Subject: Re: [FFmpeg-devel] [PATCH 01/10] avformat/segment: Add segment_write_temp option X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/DM8P223MB0365D720F5325B4766941619BA77A@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> Hi Marton, > -----Original Message----- > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of > Marton Balint > Sent: Freitag, 13. Juni 2025 22:38 > To: FFmpeg development discussions and patches <ffmpeg- > devel@ffmpeg.org> > Subject: Re: [FFmpeg-devel] [PATCH 01/10] avformat/segment: Add > segment_write_temp option > > > > On Fri, 13 Jun 2025, softworkz wrote: > > > From: softworkz <softworkz@hotmail.com> > > > > Allows to write segments as temp files (.tmp) which > > are renamed on completion. > > > > Signed-off-by: softworkz <softworkz@hotmail.com> > > --- > > libavformat/segment.c | 30 +++++++++++++++++++++++++++--- > > 1 file changed, 27 insertions(+), 3 deletions(-) > > > > diff --git a/libavformat/segment.c b/libavformat/segment.c > > index 65323ec678..04e973a198 100644 > > --- a/libavformat/segment.c > > +++ b/libavformat/segment.c > > @@ -121,6 +121,7 @@ typedef struct SegmentContext { > > int break_non_keyframes; > > int write_empty; > > > > + int segment_write_temp; ///< write segments as temp files > and rename on completion > > int use_rename; > > char temp_list_filename[1024]; > > > > @@ -226,6 +227,15 @@ static int > set_segment_filename(AVFormatContext *s) > > seg->entry_prefix ? seg->entry_prefix : "", > > av_basename(oc->url)); > > > > + // Write segment as a temp file and rename on completion > > + if(seg->segment_write_temp) { > > + av_strlcatf(buf, sizeof(buf), ".tmp"); > > + char *temp_name = av_strdup(buf); > > + if (!temp_name) > > + return AVERROR(ENOMEM); > > You should use av_asprintf() directly instead of strlcatf() + > av_strdup() I could be wrong, but I was thinking that this way is more efficient, because in the av_strdup case, the size of the needed allocation is already known, while I would suppose that av_asprintf() needs to allocate a larger size of memory because it cannot predict the eventual size after applying all the formats. Am I on a wrong track? > > + ff_format_set_url(oc, temp_name); > > + } > > + > > return 0; > > } > > > > @@ -372,7 +382,7 @@ static int segment_end(AVFormatContext *s, > int write_trailer, int is_last) > > SegmentListEntry *entry = av_mallocz(sizeof(*entry)); > > if (!entry) { > > ret = AVERROR(ENOMEM); > > - goto end; > > + goto fail; > > } > > > > /* append new element */ > > @@ -393,7 +403,7 @@ static int segment_end(AVFormatContext *s, > int write_trailer, int is_last) > > } > > > > if ((ret = segment_list_open(s)) < 0) > > - goto end; > > + goto fail; > > for (entry = seg->segment_list_entries; entry; entry > = entry->next) > > segment_list_print_entry(seg->list_pb, seg- > >list_type, entry, s); > > if (seg->list_type == LIST_TYPE_M3U8 && is_last) > > @@ -450,7 +460,20 @@ static int segment_end(AVFormatContext *s, > int write_trailer, int is_last) > > } > > } > > > > -end: > > + ff_format_io_close(oc, &oc->pb); > > + > > + // Now rename the .tmp file to its actual name. > > + if (seg->segment_write_temp) { > > + char *final_filename = av_strndup(oc->url, strlen(oc- > >url) - 4); > > + if (!final_filename) > > + return AVERROR(ENOMEM); > > goto fail? At that point, ff_format_io_close(oc, &oc->pb) has already been called. Here's the full block (after the patch): ff_format_io_close(oc, &oc->pb); // Now rename the .tmp file to its actual name. if (seg->segment_write_temp) { char *final_filename = av_strndup(oc->url, strlen(oc->url) - 4); if (!final_filename) return AVERROR(ENOMEM); ret = ff_rename(oc->url, final_filename, s); av_free(final_filename); } return ret; fail: ff_format_io_close(oc, &oc->pb); return ret; } Thanks, sw _______________________________________________ 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".