[Live-devel] When we need reject the packet?

Ross Finlayson finlayson at live555.com
Fri Dec 9 13:55:37 PST 2005


At 01:55 AM 12/9/2005, you wrote:
>Hi,
>The code follow as (in MultiFramedRTPSource.cpp):
>
>     if (fPacketLossInFragmentedFrame) {
>       // This packet is unusable; reject it:
>       fReorderingBuffer->releaseUsedPacket(nextPacket);
>       fNeedDelivery = True;
>       break;
>     }
>
>I ask my co-worker about this. They say we did not consider it.
>The RTP packet loss issue depends on decorder abilty.
>Now, we use the MPEG4-ES codec.
>Where could I find the white paper talk about the issue(MPEG4 or H264)?

The RTP payload format (i.e., RTP packetization rules) for the 
"video/MP4V-ES" MIME type is described in RFC 3640.  In particular, 
MPEG "access units" (e.g., 'picture' or 'video object') that are too 
large to fit in a single RTP packet are fragmented over multiple RTP packets.

Our receiving class ("MPEG4ESVideoRTPSource" and its parent class 
"MultiFramedRTPSource") requires that *all* packets that make up an 
"access unit" (referred to in the code as a "frame") be received in 
order for the data to be delivered to the receiver (e.g., media 
player).  Therefore, if there is any packet loss within an "access 
unit", then all other data for the "access unit" will be 
discarded.  The reason for this is that incomplete "access units" are 
useless to a decoder.


	Ross Finlayson
	Live Networks, Inc. (LIVE555.COM)
	<http://www.live555.com/>



More information about the live-devel mailing list