On Tue, 19 Jun 2012, Samuel Pitoiset wrote:

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

diff --git a/libavformat/rtmphttp.c b/libavformat/rtmphttp.c
index fdcff50..544b493 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)
@@ -70,6 +73,9 @@ static int rtmp_http_send_cmd(URLContext *h, const char *cmd)
    if ((ret = ffurl_read(rt->stream, &c, 1)) < 0)
        return ret;

+    /* re-init the number of bytes read */
+    rt->nb_bytes_read = 0;
+
    return ret;
}

@@ -117,6 +123,12 @@ static int rtmp_http_read(URLContext *h, uint8_t *buf, int 
size)
                if ((ret = rtmp_http_send_cmd(h, "send")) < 0)
                    return ret;
            } else {
+                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 ((ret = rtmp_http_write(h, "", 1)) < 0)
                    return ret;

@@ -131,6 +143,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

Looks ok, I'll test and push later.

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

Reply via email to