[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