List Info

Thread: RESEND: CR: Changes to handle RTP Timestamps after PAUSE




RESEND: CR: Changes to handle RTP Timestamps after PAUSE
country flaguser name
India
2008-04-30 08:03:24
 
----- Original Message -----
Sent: Thursday, April 24, 2008 12:26 PM
Subject: [Protocol-dev] CR: Changes to handle RTP Timestamps after PAUSE

Synopsis:
During a PAUSE/PLAY interaction(while streaming),RTP timestamp of each stream increases by the paused time, which is compliant to the IETF standards.
However, helix can not handle this increment. These changes fix this issue.
 
Overview:
Fix is based on allowing setFirstTimeStamp to perform the setting even when already set for the case of resumption from PAUSE.
After this change, servers that send the proper play range ;and rtptime in rtpinfo will work correctly. 
                   
   ;           ;  The problem of the race condition between the PLAY response (PAUSE resume case) and the first packet transmitted by the
server after resuming is also handled here by notifying the transport of resume being sent to the server and telling the transport to queue and
defer processing of the packets (time conversion and transport buffer insertion) until signaled.
Files Added:
none
 
Files Modified:
protocol/transport/rtp/pub/rtptran.h
protocol/rtsp/pub/rtspclnt.h
protocol/transport/common/system/pub/rtsptran.h
protocol/transport/rtp/rtptran.cpp
protocol/rtsp/rtspclnt.cpp
transport/common/system/rtsptran.cpp
protocol-restricted/rtsp/rnrtspclnt.cpp
 
Image Size and Heap Use impact (Client -Only):
None.

Platforms and Profiles Affected:
platform : win32-i386-vc7
profile    : helix-client-all-defines
 
Distribution Libraries Affected:
None

Distribution library impact and planned action:
None

Platforms and Profiles Build Verified:
BIF branch   -> hxclient_3_1_0_atlas_restricted
Target(s)  ;    -> splay
Profile        ;  -> helix-client-all-defines
System ID   -> win32-i386-vc7
 
Branch:
Atlas310
 
Files Attached:
rtptran.h_diff
rtsptran.h_diff
rtspclnt.h_diff
rtptran.cpp_diff
rtsptran.cpp_diff
rtspclnt.cpp_diff
rnrtspclnt.cpp_diff
 
 
Thanks & Regards
Anshuman


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
  
  
  
  
  
  
  
Re: RESEND: CR: Changes to handle RTP Timestamps after PAUSE
country flaguser name
United States
2008-05-01 19:53:19
1.) ServerProducesWallClockTS() needs to return TRUE for non RealServer-s:
+HXBOOL
+RTSPClientProtocol::ServerProducesWallClockTS(void)
+{
+  ;  HXBOOL bRetVal = FALSE;
+ 
  ; UINT32 major = HX_GET_MAJOR_VERSION(m_ulServerVersion);
+    UINT32 minor = HX_GET_MINOR_VERSION(m_ulServerVersion);
+    UINT32 release = HX_GET_RELEASE_NUMBER(m_ulServerVersion);
  ;
  ; if (IsRealServer())
+    {      ;     
  ;    if(major >= 11 || ( major == 10 && minor == 0 && (release == 5 || release == 6)))
+       {
+     ;      ;    bRetVal = TRUE;      ;        
+     }      
;   }
+    else
+    {
;         bRetVal = TRUE;
+    }
+
;   return bRetVal;
 }

2.)  Below should use ServerProducesWallClockTS() instead of IsRealServer() and all places that communicate RTP time or /seq number must be covered:
-6187,7 +6247,7
     ;    {
   ;          pTrans->setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
      ;   }
;       else if (RTPINFO_RTPTIME == info)
+       ; else if ((RTPINFO_RTPTIME == info) && (!bOnPauseResume || !IsRealServer()))
    ;     {

Should be:
-   if(pTrans)
+
  if (pTrans && (!bOnPauseResume || ServerProducesWallClockTS()) )
    {
   ;    
/*
 ;        *  RTPTransport needs to know exactly what's in RTP-Info
         */
       if (RTPINFO_SEQ_RTPTIME == info)
        {
   ;         pTrans->setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
      ;      pTrans->setFirstTimeStamp(uStreamNumber, ulRTPTime, FALSE, bOnPauseResume);
 ;       }
   ;    
else if (RTPINFO_SEQ == info)
      ;  {
   ;         pTrans->setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
      ;  }
   ;    
else if (RTPINFO_RTPTIME == info)
     ;   {
   ;         pTrans->setFirstTimeStamp(uStreamNumber, ulRTPTime, FALSE, bOnPauseResume);
 ;       }
   ; }

3.) Is play range parsing fixed not to reset from/to to 0 when not present?
-7710,7 +7770,7
     {
   ;      pSeqValue = pRange->getFirstHeaderValue();
 
;       INT32 nFrom = 0, nTo = 0;
+    ;    INT32 nFrom = RTSP_PLAY_RANGE_BLANK, nTo = RTSP_PLAY_RANGE_BLANK;

4.)  Please fix formatting below - space should follow , before bIsResumeResponse
+     ;           pTransInfo->;m_pTransport->RTSPTransport::setPlayRange((UINT32)nFrom, (UINT32)nTo,bIsResumeResponse);

5.)  Please fix the comment:
Index: rtptran.cpp
===================================================================
RCS file: /cvsroot/protocol/transport/rtp/rtptran.cpp,v
retrieving revision 1.111.2.2
diff -u -r1.111.2.2 rtptran.cpp
--- rtptran.cpp 24 Jan 2008 06:49:24 -0000 ;     1.111.2.2
+++ rtptran.cpp 23 Apr 2008 09:40:50 -0000
-485,11 +484,17
 
       // In the client, we set for start of stream only if there are no more
-    ;    // pipelined seeks outstanding an this is not a resume request.
+       ;// pipelined seeks outstanding.
-    ; &nbsp; &nbsp;if (m_bIsSource || ((!bOnPauseResume) && (m_ulSeekCount <= 1)))
+&nbsp;   ; &nbsp; if (m_bIsSource || (m_ulSeekCount <= 1))

6.) Need to set m_bFirstSeqNumLocked to FALSE in RTPBaseTransport costructor.

7.) Below should be &nbsp;  if (!bOnPauseResume)

+RTPBaseTransport::setPlayRange(UINT32 ulFrom, UINT32 ulTo, HXBOOL bOnPauseResume)
 {
 &nbsp;   // this is the Range values in PLAY request in RMA time (ms) called on PLAY
&nbsp; &nbsp;  // request
- &nbsp;  RTSPTransport::setPlayRange(ulFrom, ulTo);
+  ;  RTSPTransport::setPlayRange(ulFrom, ulTo, bOnPauseResume);
; &nbsp; m_bWaitForStartInfo = TRUE;
+&nbsp;   m_bAbortWaitForStartInfo = FALSE;
+  ;  m_bFirstSeqNumLocked = FALSE;
+ &nbsp; &nbsp; &nbsp; 
+   ; &nbsp; &nbsp;
-+  if (bOnPauseResume)
++ if (!bOnPauseResume)
+  {



Rest looks good.


Thanks,
Milko



At 06:03 AM 4/30/2008, Anshuman Singh wrote:
 
----- Original Message -----
From: asinghreal.com">Anshuman Singh
To: protocol-devhelixcommunity.org">protocol-dev
Sent: Thursday, April 24, 2008 12:26 PM
Subject: [Protocol-dev] CR: Changes to handle RTP Timestamps after PAUSE

Synopsis:
During a PAUSE/PLAY interaction(while streaming),RTP timestamp of each stream increases by the paused time, which is compliant to the IETF standards.
However, helix can not handle this increment. These changes fix this issue.
 
Overview:
Fix is based on allowing
setFirstTimeStamp to perform the setting even when already set for the case of resumption from PAUSE.
After this change, servers that send the proper play range and rtptime in rtpinfo will work correctly.
 &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; The problem of the race condition between the PLAY response (PAUSE resume case) and the first packet transmitted by the
server after resuming is also handled here by notifying the transport of resume being sent to the server and telling the transport to queue and
defer processing of the packets (time conversion and transport buffer insertion) until signaled.
Files Added:
none
&nbsp;
Files Modified:
protocol/transport/rtp/pub/rtptran.h
protocol/rtsp/pub/rtspclnt.h
protocol/transport/common/system/pub/rtsptran.h
protocol/transport/rtp/rtptran.cpp
protocol/rtsp/rtspclnt.cpp
transport/common/system/rtsptran.cpp
protocol-restricted/rtsp/rnrtspclnt.cpp
 ;
Image Size and Heap Use impact (Client -Only):
None.

Platforms and Profiles Affected:
platform : win32-i386-vc7
profile &nbsp;  : helix-client-all-defines
 ;
Distribution Libraries Affected:
None

Distribution library impact and planned action:
None

Platforms and Profiles Build Verified:
BIF branch&nbsp;  -> hxclient_3_1_0_atlas_restricted
Target(s)  ; &nbsp;  -> splay
Profile   ; &nbsp; &nbsp; &nbsp; -> helix-client-all-defines
System ID &nbsp; -> win32-i386-vc7
&nbsp;
Branch:
Atlas310
 ;
Files Attached:
rtptran.h_diff
rtsptran.h_diff
rtspclnt.h_diff
rtptran.cpp_diff
rtsptran.cpp_diff
rtspclnt.cpp_diff
rnrtspclnt.cpp_diff
 
 
Thanks & Regards
Anshuman


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev







_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
Re: RESEND: CR: Changes to handle RTPTimestamps after PAUSE
country flaguser name
India
2008-05-02 08:08:49
Yes, parsing code sets the to/from values only if they are present.
 
Thanks,
Anshuman
----- Original Message -----
Sent: Friday, May 02, 2008 6:23 AM
Subject: Re: RESEND: [Protocol-dev] CR: Changes to handle RTPTimestamps after PAUSE


1.) ServerProducesWallClockTS() needs to return TRUE for non RealServer-s:
+HXBOOL
+RTSPClientProtocol::ServerProducesWallClockTS(void)
+{
+ &nbsp;  HXBOOL bRetVal = FALSE;
+&nbsp;
+ &nbsp;  UINT32 major = HX_GET_MAJOR_VERSION(m_ulServerVersion);
+&nbsp;   UINT32 minor = HX_GET_MINOR_VERSION(m_ulServerVersion);
+&nbsp;   UINT32 release = HX_GET_RELEASE_NUMBER(m_ulServerVersion);
+  
+ &nbsp;  if (IsRealServer())
+&nbsp; &nbsp; { &nbsp; &nbsp; &nbsp;   ; &nbsp;
+ &nbsp;   &nbsp; if(major >= 11 || ( major == 10 && minor == 0 && (release == 5 || release == 6)))
+&nbsp; &nbsp;  &nbsp; {
+ &nbsp; &nbsp; &nbsp;   &nbsp; &nbsp; &nbsp; bRetVal = TRUE; ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp;
+ &nbsp;   &nbsp; }  ; &nbsp; &nbsp;
+ &nbsp;  }
+ &nbsp;  else
+&nbsp; &nbsp; {
+ &nbsp;   ; &nbsp; &nbsp; bRetVal = TRUE;
+&nbsp; &nbsp; }
+
+ &nbsp;  return bRetVal;
&nbsp;}

2.)  Below should use ServerProducesWallClockTS() instead of IsRealServer() and all places that communicate RTP time or /seq number must be covered:
-6187,7 +6247,7
 &nbsp; &nbsp; &nbsp;   {
 &nbsp; &nbsp;   ; &nbsp; &nbsp;  pTrans->;setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp;  }
- &nbsp;   ; &nbsp; else if (RTPINFO_RTPTIME == info)
+&nbsp; &nbsp; &nbsp;   else if ((RTPINFO_RTPTIME == info) && (!bOnPauseResume || !IsRealServer()))
&nbsp; &nbsp; &nbsp;   ; {

Should be:
- &nbsp; if(pTrans)
+
  if (pTrans && (!bOnPauseResume || ServerProducesWallClockTS()) )
 &nbsp;  {
 &nbsp; &nbsp;   ;
/*
 &nbsp;   ; &nbsp;  *  RTPTransport needs to know exactly what's in RTP-Info
&nbsp;   ; &nbsp; &nbsp; */
 &nbsp; &nbsp; &nbsp; if (RTPINFO_SEQ_RTPTIME == info)
&nbsp; &nbsp; &nbsp; &nbsp; {
 &nbsp; &nbsp;   ; &nbsp; &nbsp; pTrans->;setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp;   ;  pTrans->;setFirstTimeStamp(uStreamNumber, ulRTPTime, FALSE, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp; }
 &nbsp; &nbsp;   ;
else if (RTPINFO_SEQ == info)
&nbsp; &nbsp; &nbsp; &nbsp; {
 &nbsp; &nbsp;   ; &nbsp; &nbsp; pTrans->;setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp; }
 &nbsp; &nbsp;   ;
else if (RTPINFO_RTPTIME == info)
 &nbsp; &nbsp; &nbsp;  {
 &nbsp; &nbsp;   ; &nbsp; &nbsp; pTrans->;setFirstTimeStamp(uStreamNumber, ulRTPTime, FALSE, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp; }
 &nbsp;  }

3.) Is play range parsing fixed not to reset from/to to 0 when not present?
-7710,7 +7770,7
 &nbsp; &nbsp; {
 &nbsp; &nbsp;   ;  pSeqValue = pRange->;getFirstHeaderValue();
 
-&nbsp;   ; &nbsp;  INT32 nFrom = 0, nTo = 0;
  ; &nbsp; &nbsp; INT32 nFrom = RTSP_PLAY_RANGE_BLANK, nTo = RTSP_PLAY_RANGE_BLANK;

4.)&nbsp; Please fix formatting below - space should follow , before bIsResumeResponse
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; pTransInfo->m_pTransport->RTSPTransport::setPlayRange((UINT32)nFrom, (UINT32)nTo,bIsResumeResponse);

5.)  Please fix the comment:
Index: rtptran.cpp
===================================================================
RCS file: /cvsroot/protocol/transport/rtp/rtptran.cpp,v
retrieving revision 1.111.2.2
diff -u -r1.111.2.2 rtptran.cpp
--- rtptran.cpp 24 Jan 2008 06:49:24 -0000&nbsp; &nbsp; &nbsp; 1.111.2.2
+++ rtptran.cpp 23 Apr 2008 09:40:50 -0000
-485,11 +484,17
 
&nbsp;   ; &nbsp; &nbsp;// In the client, we set for start of stream only if there are no more
-  &nbsp; &nbsp; &nbsp; // pipelined seeks outstanding an this is not a resume request.
+ &nbsp; &nbsp; &nbsp; // pipelined seeks outstanding.
-  &nbsp; &nbsp; &nbsp; if (m_bIsSource || ((!bOnPauseResume) && (m_ulSeekCount <= 1)))
+&nbsp; &nbsp; &nbsp;  if (m_bIsSource || (m_ulSeekCount <= 1))

6.) Need to set m_bFirstSeqNumLocked to FALSE in RTPBaseTransport costructor.

7.) Below should be &nbsp;  if (!bOnPauseResume)

+RTPBaseTransport::setPlayRange(UINT32 ulFrom, UINT32 ulTo, HXBOOL bOnPauseResume)
 ;{
 &nbsp; &nbsp; // this is the Range values in PLAY request in RMA time (ms) called on PLAY
 ; &nbsp;  // request
-&nbsp;   RTSPTransport::setPlayRange(ulFrom, ulTo);
+&nbsp; &nbsp; RTSPTransport::setPlayRange(ulFrom, ulTo, bOnPauseResume);
+&nbsp; &nbsp; m_bWaitForStartInfo = TRUE;
+&nbsp; &nbsp; m_bAbortWaitForStartInfo = FALSE;
+&nbsp; &nbsp; m_bFirstSeqNumLocked = FALSE;
+&nbsp;   ; &nbsp; 
+ &nbsp; &nbsp; &nbsp; 
-+  if (bOnPauseResume)
++ if (!bOnPauseResume)
+  {



Rest looks good.


Thanks,
Milko



At 06:03 AM 4/30/2008, Anshuman Singh wrote:

----- Original Message -----
From: asinghreal.com">Anshuman Singh
To: helixcommunity.org">protocol-dev
Sent: Thursday, April 24, 2008 12:26 PM
Subject: [Protocol-dev] CR: Changes to handle RTP Timestamps after PAUSE

Synopsis:
During a PAUSE/PLAY interaction(while streaming),RTP timestamp of each stream increases by the paused time, which is compliant to the IETF standards.
However, helix can not handle this increment. These changes fix this issue.
&nbsp;
Overview:
Fix is based on allowing
setFirstTimeStamp to perform the setting even when already set for the case of resumption from PAUSE.
After this change, servers that send the proper play range and rtptime in rtpinfo will work correctly.
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; The problem of the race condition between the PLAY response (PAUSE resume case) and the first packet transmitted by the
server after resuming is also handled here by notifying the transport of resume being sent to the server and telling the transport to queue and
defer processing of the packets (time conversion and transport buffer insertion) until signaled.
Files Added:
none
 
Files Modified:
protocol/transport/rtp/pub/rtptran.h
protocol/rtsp/pub/rtspclnt.h
protocol/transport/common/system/pub/rtsptran.h
protocol/transport/rtp/rtptran.cpp
protocol/rtsp/rtspclnt.cpp
transport/common/system/rtsptran.cpp
protocol-restricted/rtsp/rnrtspclnt.cpp
 
Image Size and Heap Use impact (Client -Only):
None.

Platforms and Profiles Affected:
platform : win32-i386-vc7
profile &nbsp;  : helix-client-all-defines
 
Distribution Libraries Affected:
None

Distribution library impact and planned action:
None

Platforms and Profiles Build Verified:
BIF branch&nbsp;  -> hxclient_3_1_0_atlas_restricted
Target(s)&nbsp; &nbsp;   -> splay
Profile &nbsp; &nbsp;   ; &nbsp; -> helix-client-all-defines
System ID &nbsp; -> win32-i386-vc7
 
Branch:
Atlas310
&nbsp;
Files Attached:
rtptran.h_diff
rtsptran.h_diff
rtspclnt.h_diff
rtptran.cpp_diff
rtsptran.cpp_diff
rtspclnt.cpp_diff
rnrtspclnt.cpp_diff
 
&nbsp;
Thanks & Regards
Anshuman


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev







_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
CN: Changes to handle RTPTimestamps afterPAUSE
country flaguser name
India
2008-05-04 07:58:49
Thanks Milko,
 
Changes are checked into Atlas_310 after corprating your suggestions.
 
Thanks,
Anshuman&nbsp;
----- Original Message -----
Sent: Friday, May 02, 2008 6:38 PM
Subject: Re: RESEND: [Protocol-dev] CR: Changes to handle RTPTimestamps afterPAUSE

Yes, parsing code sets the to/from values only if they are present.
 
Thanks,
Anshuman
----- Original Message -----
Sent: Friday, May 02, 2008 6:23 AM
Subject: Re: RESEND: [Protocol-dev] CR: Changes to handle RTPTimestamps after PAUSE


1.) ServerProducesWallClockTS() needs to return TRUE for non RealServer-s:
+HXBOOL
+RTSPClientProtocol::ServerProducesWallClockTS(void)
+{
+ &nbsp;  HXBOOL bRetVal = FALSE;
+&nbsp;
+ &nbsp;  UINT32 major = HX_GET_MAJOR_VERSION(m_ulServerVersion);
+&nbsp;   UINT32 minor = HX_GET_MINOR_VERSION(m_ulServerVersion);
+&nbsp;   UINT32 release = HX_GET_RELEASE_NUMBER(m_ulServerVersion);
+  
+ &nbsp;  if (IsRealServer())
+&nbsp; &nbsp; { &nbsp; &nbsp; &nbsp;   ; &nbsp;
+ &nbsp;   &nbsp; if(major >= 11 || ( major == 10 && minor == 0 && (release == 5 || release == 6)))
+&nbsp; &nbsp;  &nbsp; {
+ &nbsp; &nbsp; &nbsp;   &nbsp; &nbsp; &nbsp; bRetVal = TRUE; ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp;
+ &nbsp;   &nbsp; }  ; &nbsp; &nbsp;
+ &nbsp;  }
+ &nbsp;  else
+&nbsp; &nbsp; {
+ &nbsp;   ; &nbsp; &nbsp; bRetVal = TRUE;
+&nbsp; &nbsp; }
+
+ &nbsp;  return bRetVal;
&nbsp;}

2.)  Below should use ServerProducesWallClockTS() instead of IsRealServer() and all places that communicate RTP time or /seq number must be covered:
-6187,7 +6247,7
 &nbsp; &nbsp; &nbsp;   {
 &nbsp; &nbsp;   ; &nbsp; &nbsp;  pTrans->;setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp;  }
- &nbsp;   ; &nbsp; else if (RTPINFO_RTPTIME == info)
+&nbsp; &nbsp; &nbsp;   else if ((RTPINFO_RTPTIME == info) && (!bOnPauseResume || !IsRealServer()))
&nbsp; &nbsp; &nbsp;   ; {

Should be:
- &nbsp; if(pTrans)
+
  if (pTrans && (!bOnPauseResume || ServerProducesWallClockTS()) )
 &nbsp;  {
 &nbsp; &nbsp;   ;
/*
 &nbsp;   ; &nbsp;  *  RTPTransport needs to know exactly what's in RTP-Info
&nbsp;   ; &nbsp; &nbsp; */
 &nbsp; &nbsp; &nbsp; if (RTPINFO_SEQ_RTPTIME == info)
&nbsp; &nbsp; &nbsp; &nbsp; {
 &nbsp; &nbsp;   ; &nbsp; &nbsp; pTrans->;setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp;   ;  pTrans->;setFirstTimeStamp(uStreamNumber, ulRTPTime, FALSE, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp; }
 &nbsp; &nbsp;   ;
else if (RTPINFO_SEQ == info)
&nbsp; &nbsp; &nbsp; &nbsp; {
 &nbsp; &nbsp;   ; &nbsp; &nbsp; pTrans->;setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp; }
 &nbsp; &nbsp;   ;
else if (RTPINFO_RTPTIME == info)
 &nbsp; &nbsp; &nbsp;  {
 &nbsp; &nbsp;   ; &nbsp; &nbsp; pTrans->;setFirstTimeStamp(uStreamNumber, ulRTPTime, FALSE, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp; }
 &nbsp;  }

3.) Is play range parsing fixed not to reset from/to to 0 when not present?
-7710,7 +7770,7
 &nbsp; &nbsp; {
 &nbsp; &nbsp;   ;  pSeqValue = pRange->;getFirstHeaderValue();
 
-&nbsp;   ; &nbsp;  INT32 nFrom = 0, nTo = 0;
  ; &nbsp; &nbsp; INT32 nFrom = RTSP_PLAY_RANGE_BLANK, nTo = RTSP_PLAY_RANGE_BLANK;

4.)&nbsp; Please fix formatting below - space should follow , before bIsResumeResponse
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; pTransInfo->m_pTransport->RTSPTransport::setPlayRange((UINT32)nFrom, (UINT32)nTo,bIsResumeResponse);

5.)  Please fix the comment:
Index: rtptran.cpp
===================================================================
RCS file: /cvsroot/protocol/transport/rtp/rtptran.cpp,v
retrieving revision 1.111.2.2
diff -u -r1.111.2.2 rtptran.cpp
--- rtptran.cpp 24 Jan 2008 06:49:24 -0000&nbsp; &nbsp; &nbsp; 1.111.2.2
+++ rtptran.cpp 23 Apr 2008 09:40:50 -0000
-485,11 +484,17
 
&nbsp;   ; &nbsp; &nbsp;// In the client, we set for start of stream only if there are no more
-  &nbsp; &nbsp; &nbsp; // pipelined seeks outstanding an this is not a resume request.
+ &nbsp; &nbsp; &nbsp; // pipelined seeks outstanding.
-  &nbsp; &nbsp; &nbsp; if (m_bIsSource || ((!bOnPauseResume) && (m_ulSeekCount <= 1)))
+&nbsp; &nbsp; &nbsp;  if (m_bIsSource || (m_ulSeekCount <= 1))

6.) Need to set m_bFirstSeqNumLocked to FALSE in RTPBaseTransport costructor.

7.) Below should be &nbsp;  if (!bOnPauseResume)

+RTPBaseTransport::setPlayRange(UINT32 ulFrom, UINT32 ulTo, HXBOOL bOnPauseResume)
 ;{
 &nbsp; &nbsp; // this is the Range values in PLAY request in RMA time (ms) called on PLAY
 ; &nbsp;  // request
-&nbsp;   RTSPTransport::setPlayRange(ulFrom, ulTo);
+&nbsp; &nbsp; RTSPTransport::setPlayRange(ulFrom, ulTo, bOnPauseResume);
+&nbsp; &nbsp; m_bWaitForStartInfo = TRUE;
+&nbsp; &nbsp; m_bAbortWaitForStartInfo = FALSE;
+&nbsp; &nbsp; m_bFirstSeqNumLocked = FALSE;
+&nbsp;   ; &nbsp; 
+ &nbsp; &nbsp; &nbsp; 
-+  if (bOnPauseResume)
++ if (!bOnPauseResume)
+  {



Rest looks good.


Thanks,
Milko



At 06:03 AM 4/30/2008, Anshuman Singh wrote:

----- Original Message -----
From: asinghreal.com">Anshuman Singh
To: helixcommunity.org">protocol-dev
Sent: Thursday, April 24, 2008 12:26 PM
Subject: [Protocol-dev] CR: Changes to handle RTP Timestamps after PAUSE

Synopsis:
During a PAUSE/PLAY interaction(while streaming),RTP timestamp of each stream increases by the paused time, which is compliant to the IETF standards.
However, helix can not handle this increment. These changes fix this issue.
&nbsp;
Overview:
Fix is based on allowing
setFirstTimeStamp to perform the setting even when already set for the case of resumption from PAUSE.
After this change, servers that send the proper play range and rtptime in rtpinfo will work correctly.
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; The problem of the race condition between the PLAY response (PAUSE resume case) and the first packet transmitted by the
server after resuming is also handled here by notifying the transport of resume being sent to the server and telling the transport to queue and
defer processing of the packets (time conversion and transport buffer insertion) until signaled.
Files Added:
none
 
Files Modified:
protocol/transport/rtp/pub/rtptran.h
protocol/rtsp/pub/rtspclnt.h
protocol/transport/common/system/pub/rtsptran.h
protocol/transport/rtp/rtptran.cpp
protocol/rtsp/rtspclnt.cpp
transport/common/system/rtsptran.cpp
protocol-restricted/rtsp/rnrtspclnt.cpp
 
Image Size and Heap Use impact (Client -Only):
None.

Platforms and Profiles Affected:
platform : win32-i386-vc7
profile &nbsp;  : helix-client-all-defines
 
Distribution Libraries Affected:
None

Distribution library impact and planned action:
None

Platforms and Profiles Build Verified:
BIF branch&nbsp;  -> hxclient_3_1_0_atlas_restricted
Target(s)&nbsp; &nbsp;   -> splay
Profile &nbsp; &nbsp;   ; &nbsp; -> helix-client-all-defines
System ID &nbsp; -> win32-i386-vc7
 
Branch:
Atlas310
&nbsp;
Files Attached:
rtptran.h_diff
rtsptran.h_diff
rtspclnt.h_diff
rtptran.cpp_diff
rtsptran.cpp_diff
rtspclnt.cpp_diff
rnrtspclnt.cpp_diff
 
&nbsp;
Thanks & Regards
Anshuman


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev







_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
CN: Changes to handle RTPTimestamps afterPAUSE
country flaguser name
India
2008-05-06 10:48:36
Hi,
 
Changes checked into Head and hxclient_2_1_0_cayennes_restricted also.
 
Thanks,
Anshuman
 
----- Original Message -----
Sent: Sunday, May 04, 2008 6:28 PM
Subject: [Protocol-dev] CN: Changes to handle RTPTimestamps afterPAUSE

Thanks Milko,
 
Changes are checked into Atlas_310 after corprating your suggestions.
 
Thanks,
Anshuman&nbsp;
----- Original Message -----
Sent: Friday, May 02, 2008 6:38 PM
Subject: Re: RESEND: [Protocol-dev] CR: Changes to handle RTPTimestamps afterPAUSE

Yes, parsing code sets the to/from values only if they are present.
 
Thanks,
Anshuman
----- Original Message -----
Sent: Friday, May 02, 2008 6:23 AM
Subject: Re: RESEND: [Protocol-dev] CR: Changes to handle RTPTimestamps after PAUSE


1.) ServerProducesWallClockTS() needs to return TRUE for non RealServer-s:
+HXBOOL
+RTSPClientProtocol::ServerProducesWallClockTS(void)
+{
+ &nbsp;  HXBOOL bRetVal = FALSE;
+&nbsp;
+ &nbsp;  UINT32 major = HX_GET_MAJOR_VERSION(m_ulServerVersion);
+&nbsp;   UINT32 minor = HX_GET_MINOR_VERSION(m_ulServerVersion);
+&nbsp;   UINT32 release = HX_GET_RELEASE_NUMBER(m_ulServerVersion);
+  
+ &nbsp;  if (IsRealServer())
+&nbsp; &nbsp; { &nbsp; &nbsp; &nbsp;   ; &nbsp;
+ &nbsp;   &nbsp; if(major >= 11 || ( major == 10 && minor == 0 && (release == 5 || release == 6)))
+&nbsp; &nbsp;  &nbsp; {
+ &nbsp; &nbsp; &nbsp;   &nbsp; &nbsp; &nbsp; bRetVal = TRUE; ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp;
+ &nbsp;   &nbsp; }  ; &nbsp; &nbsp;
+ &nbsp;  }
+ &nbsp;  else
+&nbsp; &nbsp; {
+ &nbsp;   ; &nbsp; &nbsp; bRetVal = TRUE;
+&nbsp; &nbsp; }
+
+ &nbsp;  return bRetVal;
&nbsp;}

2.)  Below should use ServerProducesWallClockTS() instead of IsRealServer() and all places that communicate RTP time or /seq number must be covered:
-6187,7 +6247,7
 &nbsp; &nbsp; &nbsp;   {
 &nbsp; &nbsp;   ; &nbsp; &nbsp;  pTrans->;setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp;  }
- &nbsp;   ; &nbsp; else if (RTPINFO_RTPTIME == info)
+&nbsp; &nbsp; &nbsp;   else if ((RTPINFO_RTPTIME == info) && (!bOnPauseResume || !IsRealServer()))
&nbsp; &nbsp; &nbsp;   ; {

Should be:
- &nbsp; if(pTrans)
+
  if (pTrans && (!bOnPauseResume || ServerProducesWallClockTS()) )
 &nbsp;  {
 &nbsp; &nbsp;   ;
/*
 &nbsp;   ; &nbsp;  *  RTPTransport needs to know exactly what's in RTP-Info
&nbsp;   ; &nbsp; &nbsp; */
 &nbsp; &nbsp; &nbsp; if (RTPINFO_SEQ_RTPTIME == info)
&nbsp; &nbsp; &nbsp; &nbsp; {
 &nbsp; &nbsp;   ; &nbsp; &nbsp; pTrans->;setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp;   ;  pTrans->;setFirstTimeStamp(uStreamNumber, ulRTPTime, FALSE, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp; }
 &nbsp; &nbsp;   ;
else if (RTPINFO_SEQ == info)
&nbsp; &nbsp; &nbsp; &nbsp; {
 &nbsp; &nbsp;   ; &nbsp; &nbsp; pTrans->;setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp; }
 &nbsp; &nbsp;   ;
else if (RTPINFO_RTPTIME == info)
 &nbsp; &nbsp; &nbsp;  {
 &nbsp; &nbsp;   ; &nbsp; &nbsp; pTrans->;setFirstTimeStamp(uStreamNumber, ulRTPTime, FALSE, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp; }
 &nbsp;  }

3.) Is play range parsing fixed not to reset from/to to 0 when not present?
-7710,7 +7770,7
 &nbsp; &nbsp; {
 &nbsp; &nbsp;   ;  pSeqValue = pRange->;getFirstHeaderValue();
 
-&nbsp;   ; &nbsp;  INT32 nFrom = 0, nTo = 0;
  ; &nbsp; &nbsp; INT32 nFrom = RTSP_PLAY_RANGE_BLANK, nTo = RTSP_PLAY_RANGE_BLANK;

4.)&nbsp; Please fix formatting below - space should follow , before bIsResumeResponse
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; pTransInfo->m_pTransport->RTSPTransport::setPlayRange((UINT32)nFrom, (UINT32)nTo,bIsResumeResponse);

5.)  Please fix the comment:
Index: rtptran.cpp
===================================================================
RCS file: /cvsroot/protocol/transport/rtp/rtptran.cpp,v
retrieving revision 1.111.2.2
diff -u -r1.111.2.2 rtptran.cpp
--- rtptran.cpp 24 Jan 2008 06:49:24 -0000&nbsp; &nbsp; &nbsp; 1.111.2.2
+++ rtptran.cpp 23 Apr 2008 09:40:50 -0000
-485,11 +484,17
 
&nbsp;   ; &nbsp; &nbsp;// In the client, we set for start of stream only if there are no more
-  &nbsp; &nbsp; &nbsp; // pipelined seeks outstanding an this is not a resume request.
+ &nbsp; &nbsp; &nbsp; // pipelined seeks outstanding.
-  &nbsp; &nbsp; &nbsp; if (m_bIsSource || ((!bOnPauseResume) && (m_ulSeekCount <= 1)))
+&nbsp; &nbsp; &nbsp;  if (m_bIsSource || (m_ulSeekCount <= 1))

6.) Need to set m_bFirstSeqNumLocked to FALSE in RTPBaseTransport costructor.

7.) Below should be &nbsp;  if (!bOnPauseResume)

+RTPBaseTransport::setPlayRange(UINT32 ulFrom, UINT32 ulTo, HXBOOL bOnPauseResume)
 ;{
 &nbsp; &nbsp; // this is the Range values in PLAY request in RMA time (ms) called on PLAY
 ; &nbsp;  // request
-&nbsp;   RTSPTransport::setPlayRange(ulFrom, ulTo);
+&nbsp; &nbsp; RTSPTransport::setPlayRange(ulFrom, ulTo, bOnPauseResume);
+&nbsp; &nbsp; m_bWaitForStartInfo = TRUE;
+&nbsp; &nbsp; m_bAbortWaitForStartInfo = FALSE;
+&nbsp; &nbsp; m_bFirstSeqNumLocked = FALSE;
+&nbsp;   ; &nbsp; 
+ &nbsp; &nbsp; &nbsp; 
-+  if (bOnPauseResume)
++ if (!bOnPauseResume)
+  {



Rest looks good.


Thanks,
Milko



At 06:03 AM 4/30/2008, Anshuman Singh wrote:

----- Original Message -----
From: asinghreal.com">Anshuman Singh
To: helixcommunity.org">protocol-dev
Sent: Thursday, April 24, 2008 12:26 PM
Subject: [Protocol-dev] CR: Changes to handle RTP Timestamps after PAUSE

Synopsis:
During a PAUSE/PLAY interaction(while streaming),RTP timestamp of each stream increases by the paused time, which is compliant to the IETF standards.
However, helix can not handle this increment. These changes fix this issue.
&nbsp;
Overview:
Fix is based on allowing
setFirstTimeStamp to perform the setting even when already set for the case of resumption from PAUSE.
After this change, servers that send the proper play range and rtptime in rtpinfo will work correctly.
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; The problem of the race condition between the PLAY response (PAUSE resume case) and the first packet transmitted by the
server after resuming is also handled here by notifying the transport of resume being sent to the server and telling the transport to queue and
defer processing of the packets (time conversion and transport buffer insertion) until signaled.
Files Added:
none
 
Files Modified:
protocol/transport/rtp/pub/rtptran.h
protocol/rtsp/pub/rtspclnt.h
protocol/transport/common/system/pub/rtsptran.h
protocol/transport/rtp/rtptran.cpp
protocol/rtsp/rtspclnt.cpp
transport/common/system/rtsptran.cpp
protocol-restricted/rtsp/rnrtspclnt.cpp
 
Image Size and Heap Use impact (Client -Only):
None.

Platforms and Profiles Affected:
platform : win32-i386-vc7
profile &nbsp;  : helix-client-all-defines
 
Distribution Libraries Affected:
None

Distribution library impact and planned action:
None

Platforms and Profiles Build Verified:
BIF branch&nbsp;  -> hxclient_3_1_0_atlas_restricted
Target(s)&nbsp; &nbsp;   -> splay
Profile &nbsp; &nbsp;   ; &nbsp; -> helix-client-all-defines
System ID &nbsp; -> win32-i386-vc7
 
Branch:
Atlas310
&nbsp;
Files Attached:
rtptran.h_diff
rtsptran.h_diff
rtspclnt.h_diff
rtptran.cpp_diff
rtsptran.cpp_diff
rtspclnt.cpp_diff
rnrtspclnt.cpp_diff
 
&nbsp;
Thanks & Regards
Anshuman


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev







_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
CN: Changes to handle RTPTimestamps afterPAUSE
country flaguser name
India
2008-05-08 08:48:49
Changes also checked into Cay221s
 
Thanks,
Anshuman
----- Original Message -----
Sent: Tuesday, May 06, 2008 9:18 PM
Subject: [Protocol-dev] CN: Changes to handle RTPTimestamps afterPAUSE

Hi,
 
Changes checked into Head and hxclient_2_1_0_cayennes_restricted also.
 
Thanks,
Anshuman
 
----- Original Message -----
Sent: Sunday, May 04, 2008 6:28 PM
Subject: [Protocol-dev] CN: Changes to handle RTPTimestamps afterPAUSE

Thanks Milko,
 
Changes are checked into Atlas_310 after corprating your suggestions.
 
Thanks,
Anshuman&nbsp;
----- Original Message -----
Sent: Friday, May 02, 2008 6:38 PM
Subject: Re: RESEND: [Protocol-dev] CR: Changes to handle RTPTimestamps afterPAUSE

Yes, parsing code sets the to/from values only if they are present.
 
Thanks,
Anshuman
----- Original Message -----
Sent: Friday, May 02, 2008 6:23 AM
Subject: Re: RESEND: [Protocol-dev] CR: Changes to handle RTPTimestamps after PAUSE


1.) ServerProducesWallClockTS() needs to return TRUE for non RealServer-s:
+HXBOOL
+RTSPClientProtocol::ServerProducesWallClockTS(void)
+{
+ &nbsp;  HXBOOL bRetVal = FALSE;
+&nbsp;
+ &nbsp;  UINT32 major = HX_GET_MAJOR_VERSION(m_ulServerVersion);
+&nbsp;   UINT32 minor = HX_GET_MINOR_VERSION(m_ulServerVersion);
+&nbsp;   UINT32 release = HX_GET_RELEASE_NUMBER(m_ulServerVersion);
+  
+ &nbsp;  if (IsRealServer())
+&nbsp; &nbsp; { &nbsp; &nbsp; &nbsp;   ; &nbsp;
+ &nbsp;   &nbsp; if(major >= 11 || ( major == 10 && minor == 0 && (release == 5 || release == 6)))
+&nbsp; &nbsp;  &nbsp; {
+ &nbsp; &nbsp; &nbsp;   &nbsp; &nbsp; &nbsp; bRetVal = TRUE; ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp;
+ &nbsp;   &nbsp; }  ; &nbsp; &nbsp;
+ &nbsp;  }
+ &nbsp;  else
+&nbsp; &nbsp; {
+ &nbsp;   ; &nbsp; &nbsp; bRetVal = TRUE;
+&nbsp; &nbsp; }
+
+ &nbsp;  return bRetVal;
&nbsp;}

2.)  Below should use ServerProducesWallClockTS() instead of IsRealServer() and all places that communicate RTP time or /seq number must be covered:
-6187,7 +6247,7
 &nbsp; &nbsp; &nbsp;   {
 &nbsp; &nbsp;   ; &nbsp; &nbsp;  pTrans->;setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp;  }
- &nbsp;   ; &nbsp; else if (RTPINFO_RTPTIME == info)
+&nbsp; &nbsp; &nbsp;   else if ((RTPINFO_RTPTIME == info) && (!bOnPauseResume || !IsRealServer()))
&nbsp; &nbsp; &nbsp;   ; {

Should be:
- &nbsp; if(pTrans)
+
  if (pTrans && (!bOnPauseResume || ServerProducesWallClockTS()) )
 &nbsp;  {
 &nbsp; &nbsp;   ;
/*
 &nbsp;   ; &nbsp;  *  RTPTransport needs to know exactly what's in RTP-Info
&nbsp;   ; &nbsp; &nbsp; */
 &nbsp; &nbsp; &nbsp; if (RTPINFO_SEQ_RTPTIME == info)
&nbsp; &nbsp; &nbsp; &nbsp; {
 &nbsp; &nbsp;   ; &nbsp; &nbsp; pTrans->;setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp;   ;  pTrans->;setFirstTimeStamp(uStreamNumber, ulRTPTime, FALSE, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp; }
 &nbsp; &nbsp;   ;
else if (RTPINFO_SEQ == info)
&nbsp; &nbsp; &nbsp; &nbsp; {
 &nbsp; &nbsp;   ; &nbsp; &nbsp; pTrans->;setFirstSeqNum(uStreamNumber, uSeqNum, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp; }
 &nbsp; &nbsp;   ;
else if (RTPINFO_RTPTIME == info)
 &nbsp; &nbsp; &nbsp;  {
 &nbsp; &nbsp;   ; &nbsp; &nbsp; pTrans->;setFirstTimeStamp(uStreamNumber, ulRTPTime, FALSE, bOnPauseResume);
&nbsp; &nbsp; &nbsp; &nbsp; }
 &nbsp;  }

3.) Is play range parsing fixed not to reset from/to to 0 when not present?
-7710,7 +7770,7
 &nbsp; &nbsp; {
 &nbsp; &nbsp;   ;  pSeqValue = pRange->;getFirstHeaderValue();
 
-&nbsp;   ; &nbsp;  INT32 nFrom = 0, nTo = 0;
  ; &nbsp; &nbsp; INT32 nFrom = RTSP_PLAY_RANGE_BLANK, nTo = RTSP_PLAY_RANGE_BLANK;

4.)&nbsp; Please fix formatting below - space should follow , before bIsResumeResponse
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; pTransInfo->m_pTransport->RTSPTransport::setPlayRange((UINT32)nFrom, (UINT32)nTo,bIsResumeResponse);

5.)  Please fix the comment:
Index: rtptran.cpp
===================================================================
RCS file: /cvsroot/protocol/transport/rtp/rtptran.cpp,v
retrieving revision 1.111.2.2
diff -u -r1.111.2.2 rtptran.cpp
--- rtptran.cpp 24 Jan 2008 06:49:24 -0000&nbsp; &nbsp; &nbsp; 1.111.2.2
+++ rtptran.cpp 23 Apr 2008 09:40:50 -0000
-485,11 +484,17
 
&nbsp;   ; &nbsp; &nbsp;// In the client, we set for start of stream only if there are no more
-  &nbsp; &nbsp; &nbsp; // pipelined seeks outstanding an this is not a resume request.
+ &nbsp; &nbsp; &nbsp; // pipelined seeks outstanding.
-  &nbsp; &nbsp; &nbsp; if (m_bIsSource || ((!bOnPauseResume) && (m_ulSeekCount <= 1)))
+&nbsp; &nbsp; &nbsp;  if (m_bIsSource || (m_ulSeekCount <= 1))

6.) Need to set m_bFirstSeqNumLocked to FALSE in RTPBaseTransport costructor.

7.) Below should be &nbsp;  if (!bOnPauseResume)

+RTPBaseTransport::setPlayRange(UINT32 ulFrom, UINT32 ulTo, HXBOOL bOnPauseResume)
 ;{
 &nbsp; &nbsp; // this is the Range values in PLAY request in RMA time (ms) called on PLAY
 ; &nbsp;  // request
-&nbsp;   RTSPTransport::setPlayRange(ulFrom, ulTo);
+&nbsp; &nbsp; RTSPTransport::setPlayRange(ulFrom, ulTo, bOnPauseResume);
+&nbsp; &nbsp; m_bWaitForStartInfo = TRUE;
+&nbsp; &nbsp; m_bAbortWaitForStartInfo = FALSE;
+&nbsp; &nbsp; m_bFirstSeqNumLocked = FALSE;
+&nbsp;   ; &nbsp; 
+ &nbsp; &nbsp; &nbsp; 
-+  if (bOnPauseResume)
++ if (!bOnPauseResume)
+  {



Rest looks good.


Thanks,
Milko



At 06:03 AM 4/30/2008, Anshuman Singh wrote:

----- Original Message -----
From: asinghreal.com">Anshuman Singh
To: helixcommunity.org">protocol-dev
Sent: Thursday, April 24, 2008 12:26 PM
Subject: [Protocol-dev] CR: Changes to handle RTP Timestamps after PAUSE

Synopsis:
During a PAUSE/PLAY interaction(while streaming),RTP timestamp of each stream increases by the paused time, which is compliant to the IETF standards.
However, helix can not handle this increment. These changes fix this issue.
&nbsp;
Overview:
Fix is based on allowing
setFirstTimeStamp to perform the setting even when already set for the case of resumption from PAUSE.
After this change, servers that send the proper play range and rtptime in rtpinfo will work correctly.
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; The problem of the race condition between the PLAY response (PAUSE resume case) and the first packet transmitted by the
server after resuming is also handled here by notifying the transport of resume being sent to the server and telling the transport to queue and
defer processing of the packets (time conversion and transport buffer insertion) until signaled.
Files Added:
none
 
Files Modified:
protocol/transport/rtp/pub/rtptran.h
protocol/rtsp/pub/rtspclnt.h
protocol/transport/common/system/pub/rtsptran.h
protocol/transport/rtp/rtptran.cpp
protocol/rtsp/rtspclnt.cpp
transport/common/system/rtsptran.cpp
protocol-restricted/rtsp/rnrtspclnt.cpp
 
Image Size and Heap Use impact (Client -Only):
None.

Platforms and Profiles Affected:
platform : win32-i386-vc7
profile &nbsp;  : helix-client-all-defines
 
Distribution Libraries Affected:
None

Distribution library impact and planned action:
None

Platforms and Profiles Build Verified:
BIF branch&nbsp;  -> hxclient_3_1_0_atlas_restricted
Target(s)&nbsp; &nbsp;   -> splay
Profile &nbsp; &nbsp;   ; &nbsp; -> helix-client-all-defines
System ID &nbsp; -> win32-i386-vc7
 
Branch:
Atlas310
&nbsp;
Files Attached:
rtptran.h_diff
rtsptran.h_diff
rtspclnt.h_diff
rtptran.cpp_diff
rtsptran.cpp_diff
rtspclnt.cpp_diff
rnrtspclnt.cpp_diff
 
&nbsp;
Thanks & Regards
Anshuman


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev







_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
[1-6]

about | contact  Other archives ( Real Estate discussion Medical topics )