[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-server-cvs
Subject:    [Server-cvs] protocol/rtsp crtspbase.cpp, 1.70,
From:       atin () helixcommunity ! org
Date:       2009-10-23 19:31:44
Message-ID: 200910232042.n9NKgRJI009729 () mailer ! progressive-comp ! com
[Download RAW message or body]

Update of /cvsroot/server/protocol/rtsp
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv509

Modified Files:
	crtspbase.cpp transportparams.cpp 
Log Message:
Synopsis
========
If the bookmark query parameter was being sent with a value of n and it was
different from the Range header start value "m" in the PLAY request, then in
the response Range header the start time was "m + n" instead of "n".

Branches: SERVER_CURRENT
Reviewed by: jamie


Description
===========
In addition to the QP being added to the incoming range header start time, the
outgoing Range header's start time was always zero. This behavior was
introduced, due to the recent modifications for PLAYNOW for Rel 7.

The problem was that by the time SendPlayRequest() was called, a transport had
already been selected and so the call to
RTSPTransportInstantiator::DataCapableTransportExists() was returning FALSE.

Fix
===
Instead of adding the bookmarking QP to the start time, the start time is now
assigned the QP value.

And in the transport instantiator, if a transport has already been selected,
then the m_selectedtransportList is checked, instead of the
m_transportParamsList.


Files Affected
==============
server/protocol/rtsp/crtspbase.cpp
server/protocol/rtsp/transportparams.cpp

Testing Performed
=================
Unit Tests:
N/A

Integration Tests:
(1) ran stanley's rtsp script to ensure that the QP is NOT being added, but
    replaces the incoming range start value (if they are different).
(2) played qt and vlc player to ensure that the feature works as expected.

Leak Tests:
N/A

Performance Tests:
N/A

Platforms Tested: linux-rhel5-i686
Build verified: linux-rhel5-i686

QA Hints
========
Run the script and handsets if possible to make sure that the feature works
and that the range header in the PLAY response has the right values.



Index: crtspbase.cpp
===================================================================
RCS file: /cvsroot/server/protocol/rtsp/crtspbase.cpp,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -d -r1.70 -r1.71
--- crtspbase.cpp	22 Oct 2009 22:30:57 -0000	1.70
+++ crtspbase.cpp	23 Oct 2009 19:31:40 -0000	1.71
@@ -3777,7 +3777,7 @@
 
 		if (!m_bPlayReceived && m_nBookmarkType == 1 && m_nBookmarkValue > 0 && tBegin/100 \
!= m_nBookmarkValue/100)  {
-		    tBegin += m_nBookmarkValue;
+                    tBegin = (UINT64)m_nBookmarkValue;
 		}
 
                 HX_RELEASE(pBufAttr);
@@ -8223,7 +8223,7 @@
             // Keep a copy of the stream headers so that PLAY
             // requests can send 3gp required headers if available.
             pInfo->m_pStreamHeader = ppValues[j];
-            pInfo->m_pStreamHeader->AddRef ();
+            pInfo->m_pStreamHeader->AddRef();
 
             if (bHasTrackID && (!m_bIsProxy || m_bOriginUsesTrackID))
             {

Index: transportparams.cpp
===================================================================
RCS file: /cvsroot/server/protocol/rtsp/transportparams.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- transportparams.cpp	18 Oct 2009 22:29:15 -0000	1.21
+++ transportparams.cpp	23 Oct 2009 19:31:41 -0000	1.22
@@ -1397,6 +1397,20 @@
     LISTPOSITION pos;
     RTSPTransportParams* pParams;
 
+    if (m_bSelected)
+    {
+        pos = m_selectedTransportList.GetHeadPosition();
+        while (pos)
+        {
+            pParams = (RTSPTransportParams*)m_selectedTransportList.GetNext(pos);
+
+            if (pParams->m_lTransportType != RTSP_TR_NULLSET)
+            {
+                return TRUE;
+            }
+        }
+        return FALSE;
+    }
     pos = m_transportParamsList.GetHeadPosition();
     while (pos)
     {


_______________________________________________
Server-cvs mailing list
Server-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/server-cvs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic