[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-server-cvs
Subject: [Server-cvs] engine/session clientsession.cpp,1.57,1.58
From: dsingh () helixcommunity ! org
Date: 2007-09-27 10:40:23
Message-ID: 200709271040.l8RAeS4S002548 () mailer ! progressive-comp ! com
[Download RAW message or body]
Update of /cvsroot/server/engine/session
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv9164
Modified Files:
clientsession.cpp
Log Message:
Synopsis
========
Addition of RealMedia stream switching capability under FCS.
Branches: HEAD
Suggested Reviewer: Jamie Gordon, JJ Zeng , Anyone.
Description
===========
Currently server is having capability of switching RealAudio only clips. With this \
feature addition, server can switch clips which have either realVideo only stream or \
RealAudio and RealVideo streams. The ppmstaticshim.cpp file has major changes because \
the current implementation has only single stream handling, which will now be changed \
to any number of streams in the clip.
This CR also addressing one issue related to call stack problem which causes ceasing \
of getpacket packetready sequence. In current implementation when switch occurs the \
function call sequence for switching the packet source is like this: the function \
CPPMStaticShim::PacketReady() calls CPPMStaticShim::SwitchSource() calls \
ClientSession::SwitchDone(). The function ClientSession::SwitchDone() cleans up the \
older packet source and file format objects. This cleanup done by \
ClientSession::SwitchDone is potentially creating problem because we are in context \
of GetPacket/PacketReady of all those objects which are cleaned up by \
ClientSession::SwitchDone(). So to eliminate this problem I moved the call to \
CPPMStaticShim::SwitchSource()
> From CPPMStaticShim::PacketReady() To CPPMStaticShim::GetPacket().
Some points to note here are:
[] The code is functionally completed but the switch is taking too long to occur \
which needs to be tuned up. After the switch, audio of new clip starts from the \
beginning but some starting video frames are not displayed. [] Also I am not sure \
about the behavior of the server in case of client subscribe to a new stream or \
un-subscribe a stream while playback. This implementation is considering only \
those streams for which setup is done. And GetPacket for only those streams will be \
called in case of queued switch. [] In the current implementation I observed \
that when we play the clip using fcs URL the clip doesnt played to the end, it stops \
some 3-4 seconds before. But stops successfully no problem observed on player and \
server. This problem persists in this code addition also but, in case of queued \
switch the old clip played to the end(no truncation) and then new clip starts.
Files Affected
==============
server/engine/session/clientsession.cpp
server/engine/session/pub/clientsession.h
server/engine/inputsource/ppmstaticshim.cpp
server/engine/inputsource/pub/ppmstaticshim.h
server-restricted/datatype/switch/switchverifier.cpp
Testing Performed
=================
Unit Tests:
- None
Integration Tests:
- Tested switching of realmedia clips(realvideo10.rm and locally generated using HMP) \
as: a) Using FCS URL, clip played to the end without switch any switch request.
b) Successfull immediate switching to new matching clip, and new clip played to the \
end(truncated but not due to my changes). c) Successfull switching to new queued \
clip and new clip played to the end.
Leak Tests:
- No extra leaks observed.
Performance Tests:
- None
Platforms Tested: win32-i386-vc7
Build verified: win32-i386-vc7, linux-rhel4-i686.
QA Hints
===============
-None
Index: clientsession.cpp
===================================================================
RCS file: /cvsroot/server/engine/session/clientsession.cpp,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -d -r1.57 -r1.58
--- clientsession.cpp 26 Sep 2007 21:19:38 -0000 1.57
+++ clientsession.cpp 27 Sep 2007 10:40:20 -0000 1.58
@@ -2882,7 +2882,12 @@
pSourcePackets = \
CreatePacketSource((IUnknown*)(IHXPSinkControl*)m_pSourceControl, \
m_pSourceControl->IsLive());
- m_pPPMShim = new CPPMStaticShim(pSourcePackets, (IHXSwitchResponse*)this, \
m_pCommonClassFactory); + m_pPPMShim = new CPPMStaticShim(pSourcePackets,
+ (IHXSwitchResponse*)this,
+ m_pCommonClassFactory,
+ m_ppStreams,
+ m_num_streams,
+ bIsActuallyRTP);
m_pPPMShim->AddRef();
pSourcePackets->Release();
m_pClient->m_pPacketFlowWrap->RegisterSource((IUnknown*)(IHXPSourcePackets*)m_pPPMShim,
_______________________________________________
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