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