[Live-devel] Birates in Video-Streams

Eric Peters epeters at graphics.cs.uni-sb.de
Fri Aug 13 18:02:34 PDT 2004


Ross Finlayson wrote:

>
>> with increaseReceiveBufferTo() you can increase the socket receive 
>> buffer size only up to the value in /proc/sys/net/core/rmem_max. this 
>> means you have to do both: call this method and change the 
>> configuration in /proc.
>
>
> Thanks for the clarification. (Note that this appears to be an issue 
> for Linux only.)
>
>> this requires that anyone who wants to view high quality video 
>> streams with a libLiveMedia based application needs to have
>> 1. root privileges
>> 2. knowledge about his OS that most average users don't have
>
>
> It seems to me that if the OS's socket receive buffers are undersized, 
> then *any* receiving software (not just this software) is going to be 
> susceptible to packet loss.

To check this we tested the following scenario. We have a streaming 
application, like testMPEG1or2AudioVideoStreamer, on the one side and a 
receiver application on the other side. This receiver application is a 
small programm which is listening on a given port. If there are data in 
the socket it is reading a packet from the udp socket into a data 
buffer. Then it parses the payload type and sequence number out of the 
RTP header. On both sides we added debug messages containing the 
sequence number, payload type and size of the packet. So we can check 
wether a sender's packet was completly received by the application.
The two applications ran on different machines in our network. We have a 
100 MBit network and the machines aren't very fast. On the receiver 
machine we have a rmem_maxsize of 64k.

We used three different files to stream. Two files are recorded directly 
from a IVTV-Card with bitrates of 9Mbps and 50Mbps. The third file was 
encoded from a dvd with 5.5 Mbps. With the 5.5 and 9 Mbps files we 
reached error quotes lesser than 0.1%.
With the biggest file we had an error quote less than 2%.

So you can see that it is possible to handle such strong streams with linux.

Perhaps you can optimize your network code.

If your are interested in the complete scenario I can pack the files and 
put them on a web page.

Eric




More information about the live-devel mailing list