This is an automated email from the git hooks/post-receive script.
Git pushed a commit to branch master
in repository ffmpeg.
The following commit(s) were added to refs/heads/master by this push:
new 8579037b6c avformat/file: respect pkt_size even in streaming mode
8579037b6c is described below
commit 8579037b6c7c757e0b1fe9440bb195de0d3dc476
Author: Marton Balint <[email protected]>
AuthorDate: Tue Dec 30 02:36:04 2025 +0100
Commit: Marton Balint <[email protected]>
CommitDate: Thu Jan 1 18:20:58 2026 +0000
avformat/file: respect pkt_size even in streaming mode
Also clarify the documentation a bit.
Signed-off-by: Marton Balint <[email protected]>
---
doc/protocols.texi | 12 +++++++-----
libavformat/file.c | 18 +++++++++++-------
2 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/doc/protocols.texi b/doc/protocols.texi
index b5330a1160..350c52a465 100644
--- a/doc/protocols.texi
+++ b/doc/protocols.texi
@@ -354,13 +354,15 @@ overriding this might speed up opening certain files at
the cost of losing some
features (e.g. accurate seeking).
@item pkt_size
-Set the maximum packet size used for file I/O.
+Set the maximum packet size used for file I/O. A smaller value may reduce
+memory usage. A higher value may increase throughput especially with networked
+filesystems.
-For writing, this sets the size of each write operation. The default is
-262144 bytes.
For reading, if explicitly set, it overrides the default internal buffer size
-(32768 bytes) and limits the maximum amount of data read per operation.
-Setting a smaller value may reduce memory usage when reading files
sequentially.
+(32 KB) and limits the maximum amount of data read per operation.
+
+For writing, this sets the size of each write operation. The default is 256 KB
+for regular files, 32 KB otherwise.
@end table
@section ftp
diff --git a/libavformat/file.c b/libavformat/file.c
index 23dc7081d3..3ceddc8c25 100644
--- a/libavformat/file.c
+++ b/libavformat/file.c
@@ -312,14 +312,18 @@ static int file_open(URLContext *h, const char *filename,
int flags)
h->is_streamed = !fstat(fd, &st) && S_ISFIFO(st.st_mode);
- /* Buffer writes more than the default 32k to improve throughput especially
- * with networked file systems */
- if (!h->is_streamed) {
- if (flags & AVIO_FLAG_WRITE)
- h->min_packet_size = h->max_packet_size = c->pkt_size ?
c->pkt_size : 262144;
- else if (flags & AVIO_FLAG_READ && c->pkt_size)
- h->max_packet_size = c->pkt_size;
+ if (c->pkt_size) {
+ h->max_packet_size = c->pkt_size;
+ } else {
+ /* Buffer writes more than the default 32k to improve throughput
especially
+ * with networked file systems */
+ if (!h->is_streamed && flags & AVIO_FLAG_WRITE)
+ h->max_packet_size = 262144;
}
+ /* Disable per-packet flushing by default to improve throughput especially
+ * with networked file systems */
+ if (!h->is_streamed && flags & AVIO_FLAG_WRITE)
+ h->min_packet_size = h->max_packet_size;
if (c->seekable >= 0)
h->is_streamed = !c->seekable;
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]