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