[Live-devel] Change Request about rtp timestamping when doing PAUSE/PLAY

Ross Finlayson finlayson at live555.com
Mon Oct 23 14:12:06 PDT 2006


>I noted that live555 implementation for this consists of setting in 
>the rtp-info header a rtptime value corresponding to the last RTP 
>timestamp sent for this track

I believe this is correct, because the RTP timestamp *does* increase 
appropriately after a PAUSE/PLAY (see below).

>This probably works fine for some players but I personnaly made 
>several tests with RealPlayer 10 and VLC 0.8.5 and none of those 
>players are able to resynchronize the stream after the resume.

Note that VLC currently doesn't use the "RTPInfo" header at all. 
However, it should synchronize normally (via RTCP "Sender Report" 
packets) after playing resumes.  I don't know why this would not be 
working for you.  (As for RealPlayer, I can't comment on it, because 
it is closed source and therefore I have no way of knowing how it 
works.)

>B.2.4 Handling RTP Timestamps after PAUSE
>
>    During a PAUSE / PLAY interaction in an RTSP session, the duration of
>    time for which the RTP transmission was halted MUST be reflected in
>    the RTP timestamp of each RTP stream. The duration can be calculated
>    for each RTP stream as the time elapsed from when the last RTP packet
>    was sent before the PAUSE request was received and when the first RTP
>    packet was sent after the subsequent PLAY request was received. The
>    duration includes all latency incurred and processing time required
>    to complete the request.
>
>
>         The RTP RFC [18] states that: The RTP timestamp for each
>         unit[packet] would be related to the wallclock time at
>         which the unit becomes current on the virtual presentation
>         timeline.
>
>    In order to satisfy the requirements of [18], the RTP timestamp space
>    needs to increase continuously with real time.

I believe our implementation does this.  The presentation time (from 
which the RTP timestamp is derived) of each input stream is reset to 
the 'wall clock' time (using "gettimeofday()") after each PAUSE/PLAY.
-- 

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


More information about the live-devel mailing list