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

List:       helix-server-cvs
Subject:    [Server-cvs] engine/dataflow ppm.cpp,1.139,1.140
From:       jgordon () helixcommunity ! org
Date:       2010-03-23 19:15:49
Message-ID: 201003231915.o2NJFlXB017360 () mailer ! progressive-comp ! com
[Download RAW message or body]

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

Modified Files:
	ppm.cpp 
Log Message:
Synopsis
========
Backs out the on-demand change ensure earliest rtp time in rtp-info

Branches: SERVER_14_0, HEAD (SERVER_CURRENT)
Suggested Reviewer: chytanya
Build: http://build.dev.prognet.com/~build/report.cgi?id=209192

Description
===========
Backs out the buggy fix for out-of-order rtp times for on-demand
content, because it breaks more than it fixes.  :) 


Index: ppm.cpp
===================================================================
RCS file: /cvsroot/server/engine/dataflow/ppm.cpp,v
retrieving revision 1.139
retrieving revision 1.140
diff -u -d -r1.139 -r1.140
--- ppm.cpp	18 Mar 2010 00:08:07 -0000	1.139
+++ ppm.cpp	23 Mar 2010 19:15:47 -0000	1.140
@@ -2062,29 +2062,50 @@
 
     if ((m_bRTPInfoRequired) && (!m_bIsMulticast))
     {
-        if (pSD->m_nPacketType == HX_PACKET_UNKNOWN)
+        IHXRTPPacket* pRTPPacket = NULL;
+        UINT32 ulBaseTime = 0;
+        UINT16 i = 0;
+
+        if(pPacket->QueryInterface(IID_IHXRTPPacket, 
+                                   (void**) &pRTPPacket) == HXR_OK)
         {
-            pSD->m_nPacketType = CheckPacketType(pPacket);
+            UINT32 ulRTPTime = pRTPPacket->GetRTPTime();
+            
+            ulBaseTime =  (pSD->m_pTSConverter) ?
+                pSD->m_pTSConverter->rtp2hxa_raw(ulRTPTime)
+                : ulRTPTime;
+
+            pSD->m_pTransport->setTimeStamp(unStreamNumber, 
+                                            ulRTPTime, 
+                                            TRUE);
+            HX_RELEASE(pRTPPacket);
         }
-        if (PrepareRTPInfo(unStreamNumber, pPacket, TRUE) || 
-            !m_pPPM->m_bIsRTP)
+        else
         {
-            if(!m_pPPM->m_bIsRTP)
-            {
-                //for rdt, we need to sync m_ulFirstDeliveryTime so in CommitRTPInfo, we have
-                // valid values for other streams.
-                for (UINT16 i = 0; i < m_unStreamCount; i++)
-                {
-                    if(i != unStreamNumber)
-                    {
-                        (m_pStreamData + i)->m_ulFirstDeliveryTime = pSD->m_ulFirstDeliveryTime;
-                    }
-                }
-            }
+            ulBaseTime = pPacket->GetTime();
+            pSD->m_pTransport->setTimeStamp(unStreamNumber, ulBaseTime);
+        }
+        
+        pSD->m_pTransport->setSequenceNumber(unStreamNumber, pPacket->m_uSequenceNumber);
+        SetStreamStartTime(unStreamNumber, pPacket->GetTime());
 
-            CommitRTPInfo();
-            m_bRTPInfoRequired = FALSE;
+        for (i = 0; i < m_unStreamCount; i++)
+        {
+            if (m_pStreamData[i].m_bStreamRegistered && (i != unStreamNumber))
+            { 
+                UINT32 ulRTPInfoTime =         (m_pStreamData [i].m_pTSConverter) ?
+                    m_pStreamData [i].m_pTSConverter->hxa2rtp_raw(ulBaseTime) :
+                    ulBaseTime;
+
+                m_pStreamData [i].m_pTransport->setTimeStamp(i, ulRTPInfoTime, TRUE);
+                m_pStreamData [i].m_pTransport->setSequenceNumber(i, 
+                                    m_pStreamData[i].m_unStartingSeqNum);
+
+                SetStreamStartTime(i, pPacket->GetTime());
+            }
         }
+
+        m_bRTPInfoRequired = FALSE;
     }
 
     /*


_______________________________________________
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