After running some tests, I was able to confirm that my suspicions on the cause 
of the RTP/RTCP-over-TCP issues that Ralf Globisch has been seeing was correct: 
The problems are caused by some of the server's "send()" calls (on the TCP 
socket) failing with the 'EAGAIN' error, presumably because the data stream's 
bit rate has (at least temporarily) exceeded the capacity of the TCP 
connection.  Because transmitting a RTP or RTCP packet over a TCP connection 
involves four different "send()"s (the '$',  the 'stream channel id', packet 
size, and the packet data), the failure of one - but not all - of these four 
"send()"s will cause incomplete binary data to appear on the receiver's TCP 
connection.

I have installed a new version (2012.10.16) of the "LIVE555 Streaming Media" 
software that makes servers handle this a bit more gracefully.  If the initial 
'$' send succeeds, but one of the remaining data send()s (i.e, the 'stream 
channel id', packet size, or packet data) fails with 'EAGAIN', then we force 
those send()s to succeed, by temporarily blocking if necessary.

(So, Ralf should now upgrade his server(s) to use the latest version of the 
software.)

However, a reminder to everyone, once again, that RTP/RTCP-over-TCP streaming 
should be used *only* if you are behind a firewall that blocks UDP packets.


Ross Finlayson
Live Networks, Inc.
http://www.live555.com/

_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to