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

List:       helix-server-cvs
Subject:    [Server-cvs] engine/session clientsession.cpp,1.200,1.201
From:       yuxinliu () helixcommunity ! org
Date:       2011-09-28 5:22:07
Message-ID: 201109280621.p8S6L1OZ028336 () mailer ! progressive-comp ! com
[Download RAW message or body]

Update of /cvsroot/server/engine/session
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv13920

Modified Files:
	clientsession.cpp 
Log Message:
Synopsis
========
This CR fixes PR 269469: clipBegin fails for non-first clip in SSPL file

Branch : SERVER_CURRENT_RN
Reviewed by: Chytanya

Description:
==========
When having a Helix Playlist file which specifies a specific start position of a \
piece of content in the playlist, this works fine for the first piece of content \
however is ignored for any subsequent request.

The cause of the problem:
When server switch source from first clip to second clip, it need to seek second clip \
according to its ClipBin time. But I find it will fail at CQTFileFormat::Seek because \
of NO_STREAM_SET.

My fix is:
I add a new interface SwitchDoneSeek in hxswitch.h, and then move seek code into new \
function ClientSession::SwitchDoneSeek. It will be called by \
BasePacketShim::Resubscribe to make sure streams will be subscribed first before \
CSessionSourceControl::DoInternalSeek is called.


Files affected:
=========
server/engine/inputsource/base_shim.cpp
server/engine/session/clientsession.cpp
server/engine/session/pub/clientsession.h
server-restricted/protocol/http-ctrl/fcsgethandler.cpp
server-restricted/protocol/http-ctrl/pub/fcsgethandler.h
server/include/hxswitch.h
server-restricted/datatype/playlist/playlist_control.cpp
server-restricted/datatype/playlist/pub/playlist_control.h


Testing Performed:
================
Unit Tests: 
Using VLC to connect to server like this: rtsp://192.168.8.38/test.hpl, now It begin \
playback at each of the designated points. The content of test.hpl:
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
    <head>
        <meta name="title" content="Travel - H264"/>
        <meta name="copyright" content="(c) 2010"/>
    </head>
    <body>
		<video id="Slow_Boat" src="/3gp/Venice-h264.3gp" clipBegin="25">
        </video>    
		<video id="Desert_Race" src="/3gp/Desertrace-h264.3gp" clipBegin="15">
        </video>		
        <video id="Riders" src="/3gp/Riders-h264.3gp" clipBegin="20">
        </video>
    </body>
</smil>

Note: you can add <Vare ForceMDP="1"> to enable MDP for testing.

Leak Tests: None
Performance Tests: N/A

Platforms Tested: linux-rhel5-x86_64, win-x86-vc10

Builds Verified: linux-rhel5-x86_64, win-x86-vc10

QA Hints



Index: clientsession.cpp
===================================================================
RCS file: /cvsroot/server/engine/session/clientsession.cpp,v
retrieving revision 1.200
retrieving revision 1.201
diff -u -d -r1.200 -r1.201
--- clientsession.cpp	15 Jun 2011 19:09:43 -0000	1.200
+++ clientsession.cpp	28 Sep 2011 05:22:04 -0000	1.201
@@ -6338,6 +6338,24 @@
 
 
 STDMETHODIMP
+ClientSession::SwitchDoneSeek()
+{
+    if (m_ulClipBegin && m_ulClipDuration && m_ulClipBegin < m_ulClipDuration)
+    {
+        DPRINTF(D_PLMINFO, ("switchDone: m_ulClipBegin=%lu, m_ulClipDuration=%lu\n", \
 +                m_ulClipBegin, m_ulClipDuration));
+        m_pSourceControl->DoInternalSeek(m_ulClipBegin);
+        if (!m_bInBandSeeking)
+        {
+            m_ulClipBegin = 0;
+	}
+    }
+    
+    return HXR_OK;
+}
+
+
+STDMETHODIMP
 ClientSession::SwitchDone(HX_RESULT status)
 {    
     if(m_bDone)
@@ -6395,18 +6413,7 @@
     {
         ConfigureSource();
     }
-
-    if (m_ulClipBegin && m_ulClipDuration && m_ulClipBegin < m_ulClipDuration)
-    {
-        DPRINTF(D_PLMINFO, ("switchDone: m_ulClipBegin=%lu, m_ulClipDuration=%lu\n", \
                
-                m_ulClipBegin, m_ulClipDuration));
-        m_pSourceControl->DoInternalSeek(m_ulClipBegin);
-
-        if (!m_bInBandSeeking)
-        {
-            m_ulClipBegin = 0;
-        }
-    }
+    
 
     if(m_bIsPlaylist && m_pPlaylistControl)
     {


_______________________________________________
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