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/
_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to