[FFmpeg-cvslog] librtmp: Allow changing the socket send buffer size

Brian Brice git at videolan.org
Wed Jan 21 23:53:13 CET 2015


ffmpeg | branch: master | Brian Brice <bbrice at gmail.com> | Mon Jan 19 21:01:00 2015 -0600| [f845ae0c8ed8c6761a5372954aff5f82b1c87cbf] | committer: Michael Niedermayer

librtmp: Allow changing the socket send buffer size

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f845ae0c8ed8c6761a5372954aff5f82b1c87cbf
---

 libavformat/librtmp.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libavformat/librtmp.c b/libavformat/librtmp.c
index 67939b9..40073f3 100644
--- a/libavformat/librtmp.c
+++ b/libavformat/librtmp.c
@@ -28,6 +28,7 @@
 #include "libavutil/mathematics.h"
 #include "libavutil/opt.h"
 #include "avformat.h"
+#include "network.h"
 #include "url.h"
 
 #include <librtmp/rtmp.h>
@@ -48,6 +49,7 @@ typedef struct LibRTMPContext {
     char *client_buffer_time;
     int live;
     char *temp_filename;
+    int buffer_size;
 } LibRTMPContext;
 
 static void rtmp_log(int level, const char *fmt, va_list args)
@@ -230,6 +232,11 @@ static int rtmp_open(URLContext *s, const char *uri, int flags)
         goto fail;
     }
 
+    if (ctx->buffer_size >= 0 && (flags & AVIO_FLAG_WRITE)) {
+        int tmp = ctx->buffer_size;
+        setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_SNDBUF, &tmp, sizeof(tmp));
+    }
+
     s->is_streamed = 1;
     return 0;
 fail:
@@ -311,6 +318,7 @@ static const AVOption options[] = {
     {"rtmp_swfurl", "URL of the SWF player. By default no value will be sent", OFFSET(swfurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC},
     {"rtmp_swfverify", "URL to player swf file, compute hash/size automatically. (unimplemented)", OFFSET(swfverify), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC},
     {"rtmp_tcurl", "URL of the target stream. Defaults to proto://host[:port]/app.", OFFSET(tcurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC},
+    {"rtmp_buffer_size", "set buffer size in bytes", OFFSET(buffer_size), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, DEC|ENC },
     { NULL },
 };
 



More information about the ffmpeg-cvslog mailing list