[Live-devel] Packet loss in case of high bit rate mpeg4 streams

David Betrand bidibulle at operamail.com
Thu Oct 11 05:33:59 PDT 2007


Hi Ross, hi Nitin,

I am also experimenting packet lost or malformed packets when I use high bitrate clips and rtp over tcp streaming transport.

When I turn on the DEBUG mode, I noticed that sendRTPoverTCP generally returns "failed" status. The errno is set to EAGAIN (or EWOULDBLOCK)
and is not handled at all by the method. As a reminder, this eagain flag simply means that the ressource is not avalaible at the moment and we should try later.

For some reason (in my case, OS socket buffer overflow) if we get a EAGAIN error value, this means that the socket will be triggered later
 and it should be possible to write the remaining data at that time. I think this mechanism is not handled for the moment. Ross, do we agree with this ?
 We simply do not send remaining data and read again from source. Do we?

In my mind the potential solution would be :
- use both signal at the task scheduler level : "readable" and "writeable";
- if we get a EAGAIN status while we are writing data, attach a callback to the service scheduler and block reading operation on the stream (from a file, another network socket,...)
 We should also store the remaining data to write, i.e. the data that has not be sent yet. At the time the socket will be ok, the task scheduler get an event that will trigger the callback,
 which will write remaining data. If the write operation is complete, read again from source.

What do you think about this problem?

Thanks in advance for your help.

Best Regards, 
David

-- 
_______________________________________________
Surf the Web in a faster, safer and easier way:
Download Opera 9 at http://www.opera.com

Powered by Outblaze


More information about the live-devel mailing list