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".