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

List:       helix-server-cvs
Subject:    [Server-cvs] protocol/rtsp crtspbase.cpp,1.103,1.104
From:       juanitomoore () helixcommunity ! org
Date:       2012-03-12 22:01:48
[Download RAW message or body]

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

Modified Files:
	crtspbase.cpp 
Log Message:
Synopsis:
=========
Fix for Bug 270284: Bookmarking doesn't work with Kindle Fire,
Motorola Xoom or Asus Transformer

Branches: HEAD

Reviewer: Chytanya

Description:
============
If no range headers are available, we were setting the start to zero.
Instead, if we also had a bookmark (and/or bookmark-buffer), we use
that value instead.

Files affected:
===============
server/protocol/rtsp/crtspbase.cpp 

Testing Performed:
================
Unit Tests: None

Integration tests: Using a debug build, ran the same clip with bookmarking
from a Kindle Fire and saw that we indeed get the expected bookmark.

Leak Tests: None
Performance Tests: N/A

Platforms Tested: linux-rhel5-x86_64

Builds Verified: linux-rhel5-x86_64

QA Hints
========
Test both bookmarks and bookmark buffer on the devices mentioned


Index: crtspbase.cpp
===================================================================
RCS file: /cvsroot/server/protocol/rtsp/crtspbase.cpp,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -d -r1.103 -r1.104
--- crtspbase.cpp	1 Dec 2011 20:32:53 -0000	1.103
+++ crtspbase.cpp	12 Mar 2012 22:01:45 -0000	1.104
@@ -3867,7 +3867,7 @@
                 INT64 nBegin = m_nBookmarkValue - m_nBookmarkBuffer;
                 if (!m_bPlayReceived && m_nBookmarkType == 1 &&
                     ulReqRangeUnits == RTSPRange::TR_NPT && 
-                    nBegin > 0 && tBegin/100 != nBegin/100)
+                    nBegin > 0 && tBegin/100 != (UINT64)(nBegin/100))
                 {
                     if (nBegin < pSession->m_ulSessionDuration - 1000)
                         tBegin = (UINT64)nBegin;
@@ -3896,8 +3896,20 @@
     else if (!m_bPlayReceived)
     {
         // if this is the first PLAY request for this session and it has
-        // no Range, then they want 0 to end
-        tBegin = (UINT64)0;
+        // no Range, then use bookmark if provided, otherwise 0.
+        INT64 nBegin = m_nBookmarkValue - m_nBookmarkBuffer;
+        if (m_nBookmarkType == 1 && nBegin > 0 && tBegin/100 != (UINT64)(nBegin/100))
+        {
+            if (nBegin < pSession->m_ulSessionDuration - 1000)
+                tBegin = (UINT64)nBegin;
+            else
+                tBegin = (UINT64)(pSession->m_ulSessionDuration - 1000);
+        }
+        else
+        {
+            tBegin = 0ULL;
+        }
+
         tEnd = RTSP_PLAY_RANGE_BLANK;
 
         pSession->m_bRangeResponsePending = FALSE;


_______________________________________________
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