From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id C1EB34DB8C for ; Fri, 30 Jan 2026 23:29:29 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'3jhAIyL9V5H88efwaaqBBy93SxAVeLu/r/D8HIh/bzE=', expected b'gqvOOxwRDUOcw9Esw4XZuaxyhVDB32ac2bPPHTL933I=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1769815758; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=3jhAIyL9V5H88efwaaqBBy93SxAVeLu/r/D8HIh/bzE=; b=v9Shy1+YRh5pHtkqTzYlcNsQLw1I/RzydDOvz/IH7T//pzvXGPI6HcjxHnp4Ya37iZRa7 xrKcfSldG+COuqbJhqJ90YgyBETskLOV5a4NJZZYLBq89WodSj4PfaiRpUDGTpI3q/1frzh AYcUHiBl9sq5Ha3IXClPW6347waEWAoAYRLreo0ji7ZTHT0RrbNzEEObWgNm5b8JpbnNC5x 6AYzEH1Imq27MbQzw2ZFjHIaXbvwcbHGOJwr/y18XRD/e5yUEM0aIYJrr0AbBbEvPJ0rsr9 IF3uWnvr2cCW9gx/U8X6lZjRXBwGutrQMFKmYgJXpk/xENMJzJ5iuuqlVMpw== Received: from [172.20.0.4] (unknown [172.20.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 8709C690FF2; Sat, 31 Jan 2026 01:29:18 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1769815739; b=nZlRwLTEseJEHnDdkIl6a1QJ8IyMs1shhFVpolF5pKhh3163+aOQMOOjkWclAeqVbmL+P 5Ou6CRryYUqchtPtaJTFzrEiljukTFVsDc20zZs2A2MH4bxAgxq5EbN1JkEF9l9crQuGSyd OQZNfjFEwnmVBUkMNFoyHKQ3lPtsdMqhaDbwVKnAyAky97k4LIyaGh31wohSnMhPTESFUtl P3AmfRyhWhvV+6P3EaBxsDgmzQSTIZijOO3hGDoMQnDz9kF/rbmxFoOTZjFyj6RHIwryfxl ZD4mpH0HK8B5O6S9k0kLgoVr4qXPoCk3BDKES03qo2TkfOGfs5d6p9wizHOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1769815739; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=ehPNr0RmuMX8S4H/QBgf06DFX3rr3RqwOrQUc3aJCEc=; b=IWQVN2EpUd3p5smJBC0WJpYz41SUn8Nk6i1U+dPhxZQ6jQfYnPTqespqU0hgd+AG9h87h wW8RysLgvszFD+2HvpST+C1Rf7+LifLooYqmVEX7ysLNMiiEvk27ipBXc29MDci44vemafj DDdRSuagU1Yvlt2rqTxTbwfEgT7poZqW/IKTTMreLg+VbsUoavrLU5Q+ldhia5zOQtcfKHS u5RztaVIHuOtp/M61PXYg3cjEe2PlVPG+r3c4fIG4hCfTqROV/Ieh6Avb26eQs0twfTZU/S YsrKuN7AgV9fAN9t5QXmIXYqdauP5tH4r9lmi/mKf/1qQfgzrmlPVGP0PJ1w== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1769815732; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=gqvOOxwRDUOcw9Esw4XZuaxyhVDB32ac2bPPHTL933I=; b=dpDJ/ZTqIVlKQ4Jfzi3z8Uha/B5oeIENhi8G03Qcjay6ntdncXYcGscQauV0DW+LuIO4i cpy4nMXbKHEcm6HtViovY9PaepWyE7rlABFCdLfZ+AHJIGPEk8xtDOQj+Pj7glQIx5zxAGf r1emMidbSxMDmYNo6VXF/czElP1EvNNq9ABzdkQeTQRTCDjMIXMQEdMS5wEgTy3CxZ90rpf twdq14MxioWpUWifmuzW0QRXvEh8rFZJU1X+6HRJCTlL9cpLmHgnX/sjzKjYr4STeLrEyP2 jzD9/kTKnevEoa5sZjH33aPsK5F2JZNkgfQ0TEVKBD74GpCURh+DUxWCo3AQ== Received: from c8d966988b92 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 33332690F58 for ; Sat, 31 Jan 2026 01:28:52 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Jan 2026 23:28:51 -0000 Message-ID: <176981573239.25.6846065537294616292@4457048688e7> Message-ID-Hash: UMEAQTO4DJUSFDF4N5BQSCHOY4U5FCRE X-Message-ID-Hash: UMEAQTO4DJUSFDF4N5BQSCHOY4U5FCRE X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PR] libavformat/movenc: Uses dynamic buffers for fragmented chunks (PR #21614) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: anthonybajoua via ffmpeg-devel Cc: anthonybajoua Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #21614 opened by anthonybajoua URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21614 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21614.patch # Problem: There are frequent [realloc](https://pubs.opengroup.org/onlinepubs/7908799/xsh/realloc.html) calls implemented when using hybrid/fragmented MP4 in chunking. This can thrash memory, cause heap fragmentation. [It appears this was done for MKV](https://github.com/FFmpeg/FFmpeg/commit/4d97b2ad2fa6d851c70fd982ab300e4fd559f1d0) but hybrid/fragmented MP4 notably have it missing. # Solution: Uses `dyn_buf` directives in managing fragmented, hybrid MP4 memory ## Automated ``` ./configure make make fate-rsync SAMPLES=fate-suite make ``` ## Manual: ``` curl https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4 -o bbb.mp4 ./ffmpeg -i bbb.mp4 -c copy -movflags hybrid_fragmented+delay_moov out.mp4 ./ffprobe out.mp4 ``` >>From 4b17d85223baa156723e826460a8575f9f600129 Mon Sep 17 00:00:00 2001 From: Anthony Bajoua Date: Fri, 30 Jan 2026 13:43:03 -0800 Subject: [PATCH] libavformat/movenc: Uses dynamic buffers for fragmented chunks --- libavformat/movenc.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 802c37fc4a..fe6b259561 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -6391,7 +6391,7 @@ static int mov_flush_fragment_interleaving(AVFormatContext *s, MOVTrack *track) offset = avio_tell(mov->mdat_buf); avio_write(mov->mdat_buf, buf, buf_size); - ffio_free_dyn_buf(&track->mdat_buf); + ffio_reset_dyn_buf(track->mdat_buf); for (i = track->entries_flushed; i < track->entry; i++) track->cluster[i].pos += offset; @@ -6596,7 +6596,7 @@ static int mov_flush_fragment(AVFormatContext *s, int force) avio_wb32(s->pb, buf_size + 8); ffio_wfourcc(s->pb, "mdat"); avio_write(s->pb, buf, buf_size); - ffio_free_dyn_buf(&mov->mdat_buf); + ffio_reset_dyn_buf(mov->mdat_buf); if (mov->flags & FF_MOV_FLAG_GLOBAL_SIDX) mov->reserved_header_pos = avio_tell(s->pb); @@ -6683,17 +6683,16 @@ static int mov_flush_fragment(AVFormatContext *s, int force) if (!mov->frag_interleave) { if (!track->mdat_buf) continue; - buf_size = avio_close_dyn_buf(track->mdat_buf, &buf); - track->mdat_buf = NULL; + buf_size = avio_get_dyn_buf(track->mdat_buf, &buf); + avio_write(s->pb, buf, buf_size); + ffio_reset_dyn_buf(track->mdat_buf); } else { if (!mov->mdat_buf) continue; - buf_size = avio_close_dyn_buf(mov->mdat_buf, &buf); - mov->mdat_buf = NULL; + buf_size = avio_get_dyn_buf(mov->mdat_buf, &buf); + avio_write(s->pb, buf, buf_size); + ffio_reset_dyn_buf(mov->mdat_buf); } - - avio_write(s->pb, buf, buf_size); - av_free(buf); } mov->mdat_size = 0; -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org