On Mon, 18 Jun 2012, Samuel Pitoiset wrote:

---
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;

Please reset nb_bytes_read in _send_cmd instead of here, then it will be reset more consistently for each request.

+            }
+
+            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);
            }

Move this into the if branch where you send an idle request, and move it before sending the new request. If we're publishing a stream (and thus normally don't receive any data, but send data ourselves), there's no need for us to slow it down. It's only needed if we don't have anything to send, and the server doesn't have anything either.

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

Reply via email to