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]

Reply via email to