[Live-devel] UDP framing in RTP

Ross Finlayson finlayson at live555.com
Fri Sep 4 17:25:36 PDT 2009


>I am struggling for some while now, what happens if your sources 
>receives a complete frame larger than the maximum  that can be 
>passed into an UDP packet.

That's not a problem.  The RTP payload format (and our implementation 
of the RTP payload format) for each codec takes care of fragmenting 
frames across RTP packets, if necessary.  You don't need to worry 
about this; just pass the complete frame into the appropriate 
"RTPSink" subclass.


>  Intuitively I would say it gets split up into multiple packets and 
>merged again on receiver side.

Yes.


>From one of my last messages here, I learned that making the buffer 
>fTo in a source large enough to hold my largest discrete frames is 
>the way to avoid frame truncation and
>droping of partial frame data. I currently do this by calling 
>"setPacketSizes(preferredSize, maxPacketSize)" just after the 
>instantiation of the MultiFramedRTPSink.

No, that's not the right way to do this.  Calling "setPacketSizes()" 
changes the sizes of the outgoing RTP/UDP packets.  You usually don't 
need to do this; the default packet sizes work for most networks.

Instead, you want to set the size of the *buffer* that the RTPSink 
uses to receive incoming frames.  To do this, add (e.g., to set a 
buffer size of 150000 bytes)
	OutPacketBuffer::maxSize = 150000;
*before* creating your RTPSink.


>I am unsure about how to pass a rather large frame (e.g. 140K) from 
>my source to a MultiFramedRTPSink

See above.
-- 

Ross Finlayson
Live Networks, Inc.
http://www.live555.com/


More information about the live-devel mailing list