[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