[Live-devel] VLC Media Player and late Out-Of-Order received packets by Live555

Ross Finlayson finlayson at live555.com
Sat Nov 15 01:40:13 PST 2008


>After asking Wireshark to analyze the stream I was dumbfounded 
>looking at the result. In fact there were no packet losses for those 
>sessions. But about .05% of packets were delayed by about 150-250 
>RTP packets. Giving that I was streaming the video at 1.5 Mbits/Sec 
>I estimated that the delay of these packets were about 1 to 2 
>seconds.

This is insane.  There is something very broken in your network.


>After pondering with the statistic It struck me that the Live555 
>library set a constant threshold of reordering packet at 100 and 
>accept a delayed packet if the sequence number of an out of 
>order packet is greater than this threshold.
>
>I decided to probe the Live555 library in this case to study it 
>behavior. And this is what happens.
>
>Once a late out-of-order packet is received with a seqNoThreshold 
>(100) condition being True then  the method 
>ReorderingPacketBuffer::storePacket accept the packet. Note that 
>fNextExpectedSeqNo is not reinitialized at this point. In most cases 
>storePacket method will redefine fHeadPacket with the late received 
>out-of-order packet.
>
>Thus the following received packets after the received out-of-order 
>packet will be keep on hold because the method 
>ReorderingPacketBuffer::getNextCompletedPacket check the condition 
>fHeadPacket->rtpSeqNo() == fNextExpectedSeqNo. And fHeadPacket is 
>the out-of-order late received packet.

The test against "seqNoThreshold" was intended - long ago - only as a 
sanity check against really messed up streams, and probably never 
actually got satisfied for anyone else, because noone ever had a 
stream as messed up as yours :-)  You're right - it's basically just 
a historical artifact that I had forgotten about.

As you noted, accepting such excessively delayed packets causes 
problems (that I hadn't really anticipated), so because of this, the 
best thing to do would be to just remove this test altogether.  I'll 
make this fix in the next version of the code: From now on, *all* 
out-of-order packets (except those received within "fThresholdTime" 
microseconds) will be discarded.


>I understand I could have increased the fThresholdTime to a value of 
>2-3 seconds to solve the problem. But for the kind of applications I 
>am looking on this is out of specification.

You should really look into why some packets are getting delayed this 
much.  This is far in excess of what people normally see on the 
Internet.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20081115/b10d5006/attachment.html>


More information about the live-devel mailing list