---
 libavformat/rtmphttp.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/libavformat/rtmphttp.c b/libavformat/rtmphttp.c
index fdcff50..7c58f2b 100644
--- a/libavformat/rtmphttp.c
+++ b/libavformat/rtmphttp.c
@@ -24,6 +24,8 @@
  * RTMP HTTP protocol
  */
 
+#include <unistd.h>
+
 #include "libavutil/avstring.h"
 #include "libavutil/intfloat.h"
 #include "libavutil/opt.h"
@@ -44,6 +46,7 @@ typedef struct RTMP_HTTPContext {
     int          out_capacity;      ///< current output buffer capacity
     int          initialized;       ///< flag indicating when the http context 
is initialized
     int          finishing;         ///< flag indicating when the client 
closes the connection
+    int          nb_bytes_read;     ///< number of bytes read since the last 
request
 } RTMP_HTTPContext;
 
 static int rtmp_http_send_cmd(URLContext *h, const char *cmd)
@@ -122,6 +125,13 @@ static int rtmp_http_read(URLContext *h, uint8_t *buf, int 
size)
 
                 if ((ret = rtmp_http_send_cmd(h, "idle")) < 0)
                     return ret;
+                rt->nb_bytes_read = 0;
+            }
+
+            if (rt->nb_bytes_read == 0) {
+                /* Wait 50ms before retrying to read a server reply in
+                 * order to reduce the number of idle requets. */
+                 usleep(50000);
             }
 
             if (h->flags & AVIO_FLAG_NONBLOCK) {
@@ -131,6 +141,7 @@ static int rtmp_http_read(URLContext *h, uint8_t *buf, int 
size)
         } else {
             off  += ret;
             size -= ret;
+            rt->nb_bytes_read += ret;
         }
     } while (off <= 0);
 
-- 
1.7.10.3

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to