[Live-devel] Adding support for DV video

Ross Finlayson finlayson at live555.com
Sat Apr 25 22:21:40 PDT 2009


>I started attempting to add support to liveMedia for DV over RTSP, based
>on RFC 3189, some time last year.  I recently picked up that work and
>finished it off (more or less).

Ben,

Many thanks for contributing this.  I'll review it, and will likely 
add it to a future release of the code.


>According to the RFC, each packet must contain a whole number of DV
>blocks (i.e. the RTP payload size must be a multiple of 80) but it
>doesn't appear to be possible to control fragment sizes in this way in
>liveMedia.

In fact, this is determined (in "MultiFramedRTPSink.cpp") by the 
result of the "allowFragmentationAfterStart()" virtual function.  By 
default, this function returns False, meaning that no 'frames' can be 
fragmented across more than one RTP packet, unless the RTP packet 
contains only a single 'frame' that is too large for a single RTP 
packet.

A 'frame' in this context is a single discrete chunk of data that is 
input (one at a time) to the "MultiFramedRTPSink" (subclass).  If you 
are assuming that juse one "DV block" is input at time (I haven't yet 
looked at your code closely enough to see if that is, in fact, the 
case), then you should get the desired behavior automatically.


>  I am currently using the kluge of setting the maximum packet
>size to 1372 = 12 + 17 * 80, but it would be preferable to have a
>virtual function in MultiFramedRTPSink that could be used to override
>the default fragmentation behaviour.

As I noted above, the default fragmentation behavior *is* to do what 
you want, provided that you are feeding discrete 80-byte blocks to 
the "MultiFramedRTPSink" (subclass).
-- 

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


More information about the live-devel mailing list