OK, your log suggests that 'incomplete' data is being received over TCP (by the 
client), which implies (assuming that your client+server OS's TCP/IP 
implementation is correct) that some of the server's writes to the TCP socket 
are failing.

You can check this by updating your *server* code as follows:
- add
#define DEBUG_SEND 1
        to "liveMedia/RTPInterface.cpp"
- recompile, then rerun your server.

If you ever see the error message
        sendRTPOverTCP: failed!
then this shows that the server's writes to the TCP socket are eventually 
overflowing the OS's internal buffer (which should be at least 50 kBytes), 
which in turn implies that your stream's bitrate is greater than the data 
capacity of the TCP connection.  In this case there is nothing that you can do 
other than decrease the bitrate of your stream.

Everyone needs to understand that streaming RTP-over-TCP is something that you 
should do *only* when you are streaming over a firewall that does not pass UDP 
packets.  You should not think that just because TCP is a 'reliable' transport 
protocol, that you can use it to ensure 100% delivery of all of the stream 
data.  This may happen if the stream's bitrate is less than the capacity of the 
TCP connection, but if the stream's bitrate exceeds the capacity of the TCP 
connection, then you *will* get data loss (and in an inefficient way, because 
it won't occur on RTP packet boundaries, as it would if you were streaming via 
RTP/UDP).  This is the difference between streaming and 'file/webpage 
downloading', for example.

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