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

List:       helix-server-cvs
Subject:    [Server-cvs] engine/session clientsession.cpp,1.101,1.102
From:       jzeng () helixcommunity ! org
Date:       2008-03-28 5:00:52
Message-ID: 200803280501.m2S510MY019504 () mailer ! progressive-comp ! com
[Download RAW message or body]

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

Modified Files:
	clientsession.cpp 
Log Message:
Synopsis
========
Fix realmedia fcs bugs.
Branches:  HEAD, server12, server_12_0
Suggested Reviewer: Jamie 

Description
===========

RV mutiple frames packets have internal timestamp, and we need to
modify them for fcs just as slta does. There is a class
CRVPacketTimeOffsetHandler to do that, but I choose to copy a few
lines over because:

1. that class uses async method of HandlePacket-PacketReady to pass
packets, which will require a major change in baseshim.

2. that class is extremely inefficient unless we rewrite it.  It does
at least 4 strcasecmp for each packets.

In addition, I also add a variable to decide to switch stream. We
can't switch at any switch_off packets: we need to switch at the video
stream.  But The method I used still not work right for multi-rate 3gp
content, and I will address that later.

By the way, I couldn't bear the code in baseshim anymore, so I
refactor it a little bit.

Remaing problems:

1. Now we can switch and the player won't complain anymore. For q=1
switch the playbacks look okay, but for q=0 the player may rebuffer
    and resume playback in a few seconds.

    2. The above-mentioned 3gp multi-rate issue.

    Files Affected
    ==============

    server/common/util/livekeyframe.cpp,v
    server/common/util/pub/livekeyframe.h,v
    server/engine/inputsource/Umakefil,v
    server/engine/inputsource/base_shim.cpp,v
    server/engine/inputsource/mdpshim.cpp,v
    server/engine/inputsource/ppmstaticshim.cpp,v
    server/engine/inputsource/pub/base_shim.h,v
    server/engine/inputsource/pub/mdpshim.h,v
    server/engine/inputsource/pub/ppmstaticshim.h,v
    server/engine/session/clientsession.cpp,v
    server/engine/session/pub/clientsession.h,v
    server-restricted/engine/bin/make_retail,v

    Testing Performed
    =================

    Unit Tests:
    None.

    Integration Tests:
    Test realmedia switching
    Verify 3gp switching still okay.

    Leak Tests:
    --lct 1:1:1 shows no leaks.

    Performance Tests:
    - None

    Platforms Tested: linux-rhel4-i686
    Build verified: linux-rhel4-i686



Index: clientsession.cpp
===================================================================
RCS file: /cvsroot/server/engine/session/clientsession.cpp,v
retrieving revision 1.101
retrieving revision 1.102
diff -u -d -r1.101 -r1.102
--- clientsession.cpp	26 Mar 2008 18:40:22 -0000	1.101
+++ clientsession.cpp	28 Mar 2008 05:00:49 -0000	1.102
@@ -3015,10 +3015,16 @@
             }
         }
 
+        IHXRegistry* pReg = NULL;
+        m_pProc->pc->server_context->QueryInterface(IID_IHXRegistry, (void \
**)&pReg);  if (bAllowMDP && m_bUseMDP)
         {
             m_pSourceControl->QueryInterface(IID_IHXServerPacketSource, \
                (void**)&pServerPacketSource);
-            m_pBaseShim = pMDPShim = new CMDPShim((IHXSwitchResponse*)this , \
m_pCommonClassFactory, m_ppStreams, m_num_streams); +            m_pBaseShim = \
pMDPShim = new CMDPShim(pReg, +                                                 \
(IHXSwitchResponse*)this ,  +                                                  \
m_pCommonClassFactory,  +                                                  \
m_ppStreams,  +                                                  m_num_streams);
             pMDPShim->SetSource(pServerPacketSource);
             m_pBaseShim->AddRef();
             pServerPacketSource->Release();
@@ -3028,7 +3034,8 @@
             m_bUseMDP = FALSE;
             pSourcePackets = \
                CreatePacketSource((IUnknown*)(IHXPSinkControl*)m_pSourceControl,
                                              m_pSourceControl->IsLive(), \
                m_bIsWirePayload);
-            m_pBaseShim = ppmShim = new CPPMStaticShim(pSourcePackets,
+             m_pBaseShim = ppmShim = new CPPMStaticShim(pReg,
+                                        pSourcePackets, 
                                        (IHXSwitchResponse*)this,
                                         m_pCommonClassFactory,
                                         m_ppStreams,
@@ -3037,6 +3044,7 @@
             m_pBaseShim->AddRef();
             pSourcePackets->Release();
         }
+        HX_RELEASE(pReg);
 
         m_pClient->m_pPacketFlowWrap->RegisterSource((IUnknown*)(IHXPSourcePackets*)m_pBaseShim,
  m_pSessionControl,


_______________________________________________
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