|
List Info
Thread: RESEND: CR: Changes to handle RTP Timestamps after PAUSE
|
|
| RESEND: CR: Changes to handle RTP
Timestamps after PAUSE |
  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-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
|
|
|
|
|
|
|
|
| Re: RESEND: CR: Changes to handle RTP
Timestamps after PAUSE |
  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.
-
if (m_bIsSource ||
((!bOnPauseResume) && (m_ulSeekCount <= 1)))
+ if (m_bIsSource
|| (m_ulSeekCount <= 1))
6.) Need to set
m_bFirstSeqNumLocked to FALSE in
RTPBaseTransport costructor.
7.) Below should be if
(!bOnPauseResume)
+RTPBaseTransport::setPlayRange(UINT32 ulFrom, UINT32 ulTo, HXBOOL
bOnPauseResume)
{
// this is the Range values in PLAY request in
RMA time (ms) called on PLAY
// request
- RTSPTransport::setPlayRange(ulFrom, ulTo);
+ RTSPTransport::setPlayRange(ulFrom, ulTo,
bOnPauseResume);
+ m_bWaitForStartInfo = TRUE;
+ m_bAbortWaitForStartInfo = FALSE;
+ m_bFirstSeqNumLocked = FALSE;
+
+
-+ if
(bOnPauseResume)
++ if (!bOnPauseResume)
+ {
Rest looks good.
Thanks,
Milko
At 06:03 AM 4/30/2008, Anshuman Singh wrote:
----- Original Message -----
From: asingh real.com">Anshuman Singh
To:
protocol-dev 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.
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-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________
Protocol-dev mailing list
Protocol-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
|
| Re: RESEND: CR: Changes to handle
RTPTimestamps after PAUSE |
  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) +{ +
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. - if
(m_bIsSource || ((!bOnPauseResume) && (m_ulSeekCount <=
1))) + if
(m_bIsSource || (m_ulSeekCount <= 1))
6.) Need to set m_bFirstSeqNumLocked to FALSE in
RTPBaseTransport costructor.
7.) Below should
be if (!bOnPauseResume)
+RTPBaseTransport::setPlayRange(UINT32 ulFrom,
UINT32 ulTo, HXBOOL bOnPauseResume) { //
this is the Range values in PLAY request in RMA time (ms) called on
PLAY // request -
RTSPTransport::setPlayRange(ulFrom, ulTo); +
RTSPTransport::setPlayRange(ulFrom, ulTo,
bOnPauseResume); + m_bWaitForStartInfo =
TRUE; + m_bAbortWaitForStartInfo =
FALSE; + m_bFirstSeqNumLocked =
FALSE; + + -+ if
(bOnPauseResume) ++ if (!bOnPauseResume) + {
Rest looks
good.
Thanks, Milko
At 06:03 AM 4/30/2008,
Anshuman Singh wrote:
----- Original Message -----
From: asingh real.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. 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-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev
mailing list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev mailing
list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
|
| CN: Changes to handle RTPTimestamps
afterPAUSE |
  India |
2008-05-04 07:58:49 |
|
|
Thanks Milko,
Changes are checked into Atlas_310 after
corprating your suggestions.
Thanks,
Anshuman
----- 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) +{ +
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. - if
(m_bIsSource || ((!bOnPauseResume) && (m_ulSeekCount <=
1))) + if
(m_bIsSource || (m_ulSeekCount <= 1))
6.) Need to set m_bFirstSeqNumLocked to FALSE in
RTPBaseTransport costructor.
7.) Below should
be if (!bOnPauseResume)
+RTPBaseTransport::setPlayRange(UINT32 ulFrom,
UINT32 ulTo, HXBOOL bOnPauseResume) {
// this is the Range values in PLAY request in RMA time (ms) called on
PLAY // request -
RTSPTransport::setPlayRange(ulFrom, ulTo); +
RTSPTransport::setPlayRange(ulFrom, ulTo,
bOnPauseResume); + m_bWaitForStartInfo =
TRUE; + m_bAbortWaitForStartInfo =
FALSE; + m_bFirstSeqNumLocked =
FALSE; + + -+ if
(bOnPauseResume) ++ if (!bOnPauseResume) + {
Rest looks
good.
Thanks, Milko
At 06:03 AM 4/30/2008,
Anshuman Singh wrote:
----- Original Message
----- From: asingh real.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. 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-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev
mailing list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev
mailing
list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev mailing
list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
|
| CN: Changes to handle RTPTimestamps
afterPAUSE |
  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
----- 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) +{ +
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. - if
(m_bIsSource || ((!bOnPauseResume) && (m_ulSeekCount <=
1))) + if
(m_bIsSource || (m_ulSeekCount <= 1))
6.) Need to set
m_bFirstSeqNumLocked to FALSE in
RTPBaseTransport costructor.
7.) Below should
be if (!bOnPauseResume)
+RTPBaseTransport::setPlayRange(UINT32
ulFrom, UINT32 ulTo, HXBOOL
bOnPauseResume) { // this is the
Range values in PLAY request in RMA time (ms) called on
PLAY // request -
RTSPTransport::setPlayRange(ulFrom, ulTo); +
RTSPTransport::setPlayRange(ulFrom, ulTo,
bOnPauseResume); + m_bWaitForStartInfo =
TRUE; + m_bAbortWaitForStartInfo =
FALSE; + m_bFirstSeqNumLocked =
FALSE; + + -+ if
(bOnPauseResume) ++ if (!bOnPauseResume) + {
Rest looks
good.
Thanks, Milko
At 06:03 AM 4/30/2008,
Anshuman Singh wrote:
----- Original Message
----- From: asingh real.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. 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-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev
mailing list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev
mailing
list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev
mailing
list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev mailing
list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
|
| CN: Changes to handle RTPTimestamps
afterPAUSE |
  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
----- 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) +{ +
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. - if
(m_bIsSource || ((!bOnPauseResume) && (m_ulSeekCount <=
1))) + if
(m_bIsSource || (m_ulSeekCount <= 1))
6.) Need to set
m_bFirstSeqNumLocked to FALSE in
RTPBaseTransport costructor.
7.) Below should
be if (!bOnPauseResume)
+RTPBaseTransport::setPlayRange(UINT32
ulFrom, UINT32 ulTo, HXBOOL
bOnPauseResume) { // this is the
Range values in PLAY request in RMA time (ms) called on
PLAY // request -
RTSPTransport::setPlayRange(ulFrom, ulTo); +
RTSPTransport::setPlayRange(ulFrom, ulTo,
bOnPauseResume); + m_bWaitForStartInfo =
TRUE; + m_bAbortWaitForStartInfo =
FALSE; + m_bFirstSeqNumLocked =
FALSE; + + -+ if
(bOnPauseResume) ++ if (!bOnPauseResume) + {
Rest
looks good.
Thanks, Milko
At 06:03 AM
4/30/2008, Anshuman Singh wrote:
----- Original Message
----- From: asingh real.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. 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-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev
mailing list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev
mailing
list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev
mailing
list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev
mailing
list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
_______________________________________________ Protocol-dev mailing
list Protocol-dev helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
|
[1-6]
|
|