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

List:       helix-server-cvs
Subject:    [Server-cvs] engine/inputsource/pub base_shim.h, 1.5,
From:       jzeng () helixcommunity ! org
Date:       2008-06-26 22:52:40
Message-ID: 200806262253.m5QMrgLH011728 () mailer ! progressive-comp ! com
[Download RAW message or body]

Update of /cvsroot/server/engine/inputsource/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv20031/pub

Modified Files:
	base_shim.h ppmstaticshim.h 
Log Message:
Synopsis
========
Refactor BaseShim/PPMShim/MDPShim
Branches:  head, server_12_1
Suggested Reviewer: Jamie 

Description
===========
This is the first step of refactoring shims, including:

1. Eliminate m_packet. Every call inside ::PacketReady is synchronous, and we don't need a member
variable to hold the info.  I just declare a stack variable and pass it around.  This eliminate
memory leaks in the future when we need to modify this piece of code.

2. Renaming a few classes/structs, also move all the helper functions into protected from public.

3. Move some functions from PPMShim to Baseshim, so PPMShim and MDPShim become really shell classes
without doing any packet manipulation.


Remaining refactoring tasks:

1. Fix 3gp mulitrate video handling.

2. Do a better software engineering: clientsession doesn't need to know the type shim it has. We
should put a few virtual functions in Baseshim and ClientSession just calls them disregarding PPM or
MDP.

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

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/ppmstaticshim.h,v

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

Unit Tests:
None.

Integration Tests:
Test rm and 3gp static clips with queue=1&0, mdp=1&0.

More tests will be done at my next steps(after I setup my own encoder).

Leak Tests:
--lct with repetitive switches. No leaks found.

Performance Tests:
- None

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





Index: base_shim.h
===================================================================
RCS file: /cvsroot/server/engine/inputsource/pub/base_shim.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- base_shim.h	4 Apr 2008 22:54:55 -0000	1.5
+++ base_shim.h	26 Jun 2008 22:52:38 -0000	1.6
@@ -37,7 +37,7 @@
 
 #ifndef _BASE_SHIM_H_
 #define _BASE_SHIM_H_
- 
+
 #include "hxasm.h"
 #include "source.h"
 #include "sink.h"
@@ -46,9 +46,9 @@
 class CHXTimestampConverter;
 struct IHXRegistry;
 
-typedef struct streamData
+typedef struct _FCSStreamData
 {
-      ULONG32   ulLastPacketTS;
+    ULONG32                   ulLastPacketTS;
     ULONG32                   ulPacketDiff;
 
     ULONG32                   ulLastPacketRTPTS;
@@ -57,66 +57,81 @@
     UINT32                    ulStartingRTPTS;
     UINT32                    ulRTPTimeOffset;
 
-      HXBOOL    bGettingPacket;
-      CHXTimestampConverter* pTSConverter;
+    HXBOOL                    bGettingPacket;
+    CHXTimestampConverter*    pTSConverter;
 
     INT32                     m_lRTPOffset;
-}StreamData;
+} FCSStreamData;
 
-struct Packet
+class FCSPacketData
 {
-        IHXBuffer* pBuffer;
-        ULONG32    ulTS;
-        ULONG32    ulRTPTS;
-        UINT16     unStreamNumber;
-        UINT8      unASMFlags;
-        UINT16     unASMRuleNumber;
+public:
+
+    FCSPacketData()
+    {
+        pBuffer = NULL;
+    }
+
+    ~FCSPacketData()
+    {
+        HX_RELEASE(pBuffer);
+    }
+
+    IHXBuffer* pBuffer;
+    ULONG32    ulTS;
+    ULONG32    ulRTPTS;
+    UINT16     unStreamNumber;
+    UINT8      unASMFlags;
+    UINT16     unASMRuleNumber;
 };
-        
-class BasePacketShim:public IUnknown
+
+class BasePacketShim:   public IUnknown
 {
-        
-public:
-       BasePacketShim(IHXRegistry* pReg,
-                      IHXSwitchResponse* pResp,
-                      IHXCommonClassFactory* pCF,
-                      ClientSession::StreamInfo** ppStrmInfo,
-                      BOOL bIsRealDatatype,
-                      UINT16 num_streams);
+
+    public:
+        BasePacketShim(IHXRegistry* pReg,
+                IHXSwitchResponse* pResp,
+                IHXCommonClassFactory* pCF,
+                ClientSession::StreamInfo** ppStrmInfo,
+                BOOL bIsRealDatatype,
+                UINT16 num_streams);
         ~BasePacketShim();
 
 
-      /*  Shim Methods   */
-      void Switch(BOOL bClipDone);
-      void SwitchSource();
-      STDMETHOD_ (UINT32, GetClipEndTime)  (THIS);
-      void Done();
-      void HandleWirePayload(IHXBuffer*& pBuffer, UINT32& ulRTPTime, UINT8& ucMarker);
-      IHXBuffer* ParsePacket(IHXPacket* pPacket,UINT32& ulRTPCurTS);
-      IHXPacket* AdjustTimeStamp(IHXPacket* pPacket,IHXBuffer* pBuffer);
-      void AdjustPayloadTimeStamp(IHXBuffer*& pBuffer, UINT32 ulDiff, UINT32 ulTimeOffset);
+        /*  Shim Methods   */
+        void Switch(BOOL bClipDone);
+        void SwitchSource();
+        STDMETHOD_ (UINT32, GetClipEndTime)  (THIS);
+        void Done();
 
-protected:
-      INT32 m_ulRefCount;
-      
-      IHXSwitchResponse*  m_pSwitchResponse;
-      BOOL m_bSwitch;
-      IHXCommonClassFactory* m_pCCF;
-      StreamData* m_pStreamInfo;
-      BOOL m_bSwitchSource;
-      UINT16 m_uNumOfStreams;
-      Packet* m_packet;
+    protected:
+        INT32 m_ulRefCount;
 
-      UINT32 m_ulRVStream;
-      UINT32 m_ulSwitchStream;
-      BOOL  m_bFirstPacketFromSource;
-      UINT32 m_ulStartingTS;
-      UINT32 m_ulDeliveryTimeOffset;
-      BOOL  m_bIsRTPPacket;
-      UINT32 m_ulRTPTimeOffsetInMSec;
-      BOOL  m_bGetRTPOffset;
-      BOOL  m_bIsRealDatatype;
+        IHXSwitchResponse*  m_pSwitchResponse;
+        BOOL m_bSwitch;
+        IHXCommonClassFactory* m_pCCF;
+        FCSStreamData* m_pStreamInfo;
+        BOOL m_bSwitchSource;
+        UINT16 m_uNumOfStreams;
 
+        UINT32 m_ulRVStream;
+        UINT32 m_ulSwitchStream;
+        BOOL  m_bFirstPacketFromSource;
+        UINT32 m_ulStartingTS;
+        UINT32 m_ulDeliveryTimeOffset;
+        BOOL  m_bIsRTPPacket;
+        UINT32 m_ulRTPTimeOffsetInMSec;
+        BOOL  m_bGetRTPOffset;
+        BOOL  m_bIsRealDatatype;
+        BOOL m_bWirePayload;
+        IHXLiveSourceWrapper* m_pLiveSourceWrapper;
+
+        void HandleWirePayload(IHXBuffer*& pBuffer, UINT32& ulRTPTime, UINT8& ucMarker);
+        void ParsePacket(IHXPacket* pPacket, FCSPacketData* pPacketData);
+        void RecordFirstPacket(FCSPacketData* pPacketData);
+        IHXPacket* AdjustTimeStamp(IHXPacket* pPacket);
+        IHXBuffer* AdjustPayloadTimeStamp(IHXBuffer* pBuffer, UINT32 ulDiff, UINT32 ulTimeOffset);
+        IHXBuffer* HandleWirePayload(IHXBuffer* pBuffer, FCSPacketData* pPacketData);
 };
 
 #endif /* _BASE_SHIM_H_ */

Index: ppmstaticshim.h
===================================================================
RCS file: /cvsroot/server/engine/inputsource/pub/ppmstaticshim.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- ppmstaticshim.h	4 Apr 2008 22:54:55 -0000	1.18
+++ ppmstaticshim.h	26 Jun 2008 22:52:38 -0000	1.19
@@ -69,7 +69,6 @@
       STDMETHOD_(ULONG32,AddRef)    (THIS);
       STDMETHOD_(ULONG32,Release)   (THIS);
 
-      void HandleWirePayload(IHXBuffer*& pBuffer);
       void Switch(IHXPSourcePackets* pNewSourcePackets, BOOL bClipDone);
       void SwitchSource();
       void Done();
@@ -78,8 +77,6 @@
       IHXPSinkPackets*    m_pPacketSink;
       IHXPSourcePackets*  m_pPacketSource;
       IHXPSourcePackets*  m_pSwitchPacketSource;
-      BOOL m_bWirePayload;
-      IHXLiveSourceWrapper* m_pLiveSourceWrapper;
 };
 
 #endif /* _STATIC_SHIM_PPM_H_ */


_______________________________________________
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