]> git.sesse.net Git - ffmpeg/commitdiff
avformat/udp: increase the default buffer size of a receiving socket to 384K
authorMarton Balint <cus@passwd.hu>
Tue, 14 Jan 2020 18:18:01 +0000 (19:18 +0100)
committerMarton Balint <cus@passwd.hu>
Sat, 25 Jan 2020 22:16:47 +0000 (23:16 +0100)
It is a common mistake that people only increase fifo_size when they experience
drops, unfortunately this does not help for higher bitrate (> 100 Mbps) streams
when the reader thread simply might not receive the packets in time (especially
under high CPU load) if the default 64 KB of kernel buffer size is used.

New default is determined so that common linux systems can set this buffer size
without tuning kernel parameters.

Signed-off-by: Marton Balint <cus@passwd.hu>
doc/protocols.texi
libavformat/udp.c

index d2935fc66622c2e49b2fa2c33044662dec186b79..5e8c97d1649858caba6a6d027fe40c2c690d6f2e 100644 (file)
@@ -1653,7 +1653,7 @@ The list of supported options follows.
 @item buffer_size=@var{size}
 Set the UDP maximum socket buffer size in bytes. This is used to set either
 the receive or send buffer size, depending on what the socket is used for.
-Default is 64KB.  See also @var{fifo_size}.
+Default is 32 KB for output, 384 KB for input.  See also @var{fifo_size}.
 
 @item bitrate=@var{bitrate}
 If set to nonzero, the output will have the specified constant bitrate if the
index 7e59d51cc661d6f9f4e0d98c59168613d431548c..dce4cf76c7c5819b2be3e46218c88986d05ca3ee 100644 (file)
@@ -71,6 +71,7 @@
 #endif
 
 #define UDP_TX_BUF_SIZE 32768
+#define UDP_RX_BUF_SIZE 393216
 #define UDP_MAX_PKT_SIZE 65536
 #define UDP_HEADER_SIZE 8
 
@@ -636,7 +637,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
 
     is_output = !(flags & AVIO_FLAG_READ);
     if (s->buffer_size < 0)
-        s->buffer_size = is_output ? UDP_TX_BUF_SIZE : UDP_MAX_PKT_SIZE;
+        s->buffer_size = is_output ? UDP_TX_BUF_SIZE : UDP_RX_BUF_SIZE;
 
     if (s->sources) {
         if (ff_ip_parse_sources(h, s->sources, &s->filters) < 0)