From: caifan via ffmpeg-devel <ffmpeg-devel@ffmpeg.org>
To: ffmpeg-devel@ffmpeg.org
Cc: caifan <code@ffmpeg.org>
Subject: [FFmpeg-devel] [PATCH] libavformat/file: allow configurable pkt_size for lower memory usage on embedded devices (PR #21004)
Date: Mon, 24 Nov 2025 13:08:56 -0000
Message-ID: <176398973716.39.6876964612433748486@2cb04c0e5124> (raw)
PR #21004 opened by caifan
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21004
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21004.patch
This change lets embedded systems reduce memory usage by adjusting pkt_size
through options. The code now applies pkt_size to both read and write cases.
This makes the file protocol more flexible on devices with limited RAM.
Signed-off-by: caifan3 <caifan3@xiaomi.com>
>From cb04a6c7ae0b65a97f8dae06e3557acce6d48fe3 Mon Sep 17 00:00:00 2001
From: caifan3 <caifan3@xiaomi.com>
Date: Mon, 24 Nov 2025 20:59:54 +0800
Subject: [PATCH] libavformat/file: allow configurable pkt_size for lower
memory usage on embedded devices
This change lets embedded systems reduce memory usage by adjusting pkt_size
through options. The code now applies pkt_size to both read and write cases.
This makes the file protocol more flexible on devices with limited RAM.
Signed-off-by: caifan3 <caifan3@xiaomi.com>
---
libavformat/file.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/libavformat/file.c b/libavformat/file.c
index 97f5955f93..429ea644d7 100644
--- a/libavformat/file.c
+++ b/libavformat/file.c
@@ -107,7 +107,7 @@ static const AVOption file_options[] = {
{ "blocksize", "set I/O operation maximum block size", offsetof(FileContext, blocksize), AV_OPT_TYPE_INT, { .i64 = INT_MAX }, 1, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM },
{ "follow", "Follow a file as it is being written", offsetof(FileContext, follow), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_DECODING_PARAM },
{ "seekable", "Sets if the file is seekable", offsetof(FileContext, seekable), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 0, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM },
- { "pkt_size", "Maximum packet size", offsetof(FileContext, pkt_size), AV_OPT_TYPE_INT, { .i64 = 262144 }, 1, INT_MAX, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM },
+ { "pkt_size", "Maximum packet size", offsetof(FileContext, pkt_size), AV_OPT_TYPE_INT, { .i64 = 0 }, 1, INT_MAX, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM },
{ NULL }
};
@@ -314,8 +314,11 @@ static int file_open(URLContext *h, const char *filename, int flags)
/* Buffer writes more than the default 32k to improve throughput especially
* with networked file systems */
- if (!h->is_streamed && flags & AVIO_FLAG_WRITE)
- h->min_packet_size = h->max_packet_size = c->pkt_size;
+ if (!h->is_streamed && (flags & AVIO_FLAG_WRITE))
+ h->min_packet_size = h->max_packet_size = c->pkt_size ? c->pkt_size : 262144;
+
+ if (!h->is_streamed && (flags & AVIO_FLAG_READ))
+ h->min_packet_size = h->max_packet_size = c->pkt_size ? c->pkt_size : 32768;
if (c->seekable >= 0)
h->is_streamed = !c->seekable;
--
2.49.1
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
reply other threads:[~2025-11-24 13:09 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=176398973716.39.6876964612433748486@2cb04c0e5124 \
--to=ffmpeg-devel@ffmpeg.org \
--cc=code@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git