[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