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
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel