<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML XMLNS:O><HEAD><TITLE>Re: [Live-devel] Calculating rtptime for RTSP/PLAY-Respons</TITLE>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<STYLE type=text/css>BLOCKQUOTE {
        PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
DL {
        PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
UL {
        PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
OL {
        PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI {
        PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
</STYLE>

<META content="MSHTML 6.00.6000.16674" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><FONT face=Verdana color=#0000ff size=2><SPAN 
class=810492701-08082008>The crux of my question concerns the *delta* that a 
reference implementation (Helix USM) applies to one of the rtptime=X values that 
is reported in the RTP-Info header. All of our testing (with ~30 different 
brand/model combinations) has shown that this is critical for many mobile phones 
to correctly apply A/V sync.</SPAN></FONT></DIV>
<DIV><FONT face=Verdana color=#0000ff size=2></FONT>&nbsp;</DIV>
<DIV><SPAN class=810492701-08082008><FONT face=Verdana color=#0000ff size=2>The 
live555 code (the 2008.07.25 release) does not adjust (calculate a delta) the 
RTP-Info header in this way. It simply reports the seqNum &amp; rtptime of the 
first packet on each stream.</FONT></SPAN></DIV>
<DIV><SPAN class=810492701-08082008><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=810492701-08082008><FONT face=Verdana color=#0000ff size=2>And 
while you may think that RTSP/RTP/RTCP clients should not use the RTP 
timestamps, these phones are doing just that. Wouldn't it be nice if we could 
play nicely with them too?</FONT></SPAN></DIV>
<DIV><SPAN class=810492701-08082008><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=810492701-08082008><FONT face=Verdana color=#0000ff 
size=2>Cheers &amp; thanks for all your hard work and excellent 
code.</FONT></SPAN></DIV>
<DIV><SPAN class=810492701-08082008><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=810492701-08082008><FONT face=Verdana color=#0000ff 
size=2>ChrisB</FONT></SPAN></DIV>
<DIV class=Section1>
<P class=MsoNormal align=left><B style="mso-bidi-font-weight: normal"><SPAN 
style="FONT-SIZE: 7.5pt; FONT-FAMILY: Verdana"><ST1:PERSONNAME w:st="on">Chris 
Burns<BR></SPAN></B><SPAN style="FONT-SIZE: 7.5pt; FONT-FAMILY: Verdana">M: +64 
21 391 286<BR></SPAN><SPAN style="FONT-SIZE: 7.5pt; FONT-FAMILY: Verdana"><A 
href="mailto:chris.burns@abdeus.com">chris.burns@abdeus.com</A></SPAN><O:P></O:P></P>
<P class=MsoNormal><A href="http://www.abdeus.com/"><SPAN 
style="TEXT-DECORATION: none; text-underline: none"></SPAN></A></P></DIV></ST1:PERSONNAME>
<DIV><FONT face=Verdana color=#0000ff size=2></FONT>&nbsp;</DIV><BR>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> live-devel-bounces@ns.live555.com 
  [mailto:live-devel-bounces@ns.live555.com] <B>On Behalf Of </B>Ross 
  Finlayson<BR><B>Sent:</B> Friday, 08 August 2008 12:02<BR><B>To:</B> LIVE555 
  Streaming Media - development &amp; use<BR><B>Subject:</B> Re: [Live-devel] 
  Calculating rtptime for RTSP/PLAY-Response "RTP-Info" 
  header<BR></FONT><BR></DIV>
  <DIV></DIV>
  <BLOCKQUOTE cite="" type="cite"><FONT face=Verdana color=#0000ff size=-1>I'm 
    specifically trying to work out how to create the "RTP-Info" header in a 
    RTSP/PLAY-Response.</FONT></BLOCKQUOTE>
  <DIV><BR></DIV>
  <DIV>Our server implementation does this automatically (see "RTSPServer.cpp", 
  and search for "rtpInfo").&nbsp; You shouldn't have to do anything yourself to 
  generate this.</DIV>
  <DIV><BR></DIV>
  <DIV>Similarly, at the client end, the information is filled in automatically 
  - if you wish, you can just access the "MediaSubsession::rtpInfo" 
  structure.&nbsp; Most clients, however, will not need to access this structure 
  directly.&nbsp; Instead, if they wish to get the current 'normal play time' 
  (NPT) for the stream, they can just call 
  "MediaSubsession::getNormalPlayTime()", which uses the "rtpInfo" 
  structure.</DIV>
  <DIV><BR></DIV>
  <DIV>Also (as I have explained several times before), RTSP/RTP/RTCP clients 
  (receivers) should rarely, if ever, need to look at RTP timestamps, sequence 
  numbers, or RTCP packet data.&nbsp; Our receiving code automatically uses this 
  information itself, to give you a properly-synchronized presentation time for 
  each incoming frame of data.</DIV><X-SIGSEP><PRE>-- 
</PRE></X-SIGSEP>
  <DIV><BR>Ross Finlayson<BR>Live Networks, 
Inc.<BR>http://www.live555.com/</DIV></BLOCKQUOTE></BODY></HTML>