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

List:       helix-datatype-cvs
Subject:    [Datatype-cvs] mpeg2ts/demuxer tsdemuxer.cpp,1.6,1.6.2.1
From:       jgordon () helixcommunity ! org
Date:       2011-02-23 3:10:18
Message-ID: 201102230310.p1N3ATJT029494 () mailer ! progressive-comp ! com
[Download RAW message or body]

Update of /cvsroot/datatype/mpeg2ts/demuxer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv13779

Modified Files:
      Tag: PRODUCER_14_0_RN
	tsdemuxer.cpp 
Log Message:
merge TS demuxer changes from atlas (except the printfs...)


Index: tsdemuxer.cpp
===================================================================
RCS file: /cvsroot/datatype/mpeg2ts/demuxer/tsdemuxer.cpp,v
retrieving revision 1.6
retrieving revision 1.6.2.1
diff -u -d -r1.6 -r1.6.2.1
--- tsdemuxer.cpp	4 Nov 2010 21:52:04 -0000	1.6
+++ tsdemuxer.cpp	23 Feb 2011 03:10:16 -0000	1.6.2.1
@@ -64,6 +64,8 @@
     , m_bSeenPMT(FALSE)
     , m_ulFilesize(0)
     , m_bRawMode(bRawMode)
+    , m_bUseRawDTS(FALSE)
+    , m_u64FirstDTSBaseOffset(0)
 {
     // context
     if (pContext)
@@ -126,6 +128,8 @@
             pESStream->bCounterSet = FALSE;
             pESStream->uContinuityCounter = 0;
             pESStream->ulBufferOffset = 0;
+            pESStream->bNewAU = FALSE;
+            pESStream->bNewAUSeen = FALSE;
             m_pCurrentProgram->bSeenKeyFrame = FALSE;
 
             // flush packet queue
@@ -412,6 +416,10 @@
      }
    }
    m_pCurrentProgram->u64FirstDTS = u64DTSBase;
+   if(m_u64FirstDTSBaseOffset == 0)
+   {
+       m_u64FirstDTSBaseOffset = m_pCurrentProgram->u64FirstDTS;
+   }
 }
 
 HX_RESULT
@@ -600,11 +608,10 @@
     }
 
     // in RawMode, we let the packets carry original TS PTS/DTS (both in 90k \
                timebase)
-    if (SUCCEEDED(retVal) && pPacket && !m_bRawMode)
+    if (SUCCEEDED(retVal) && pPacket && !m_bUseRawDTS && !m_bRawMode)
     {
         retVal = ReBasePacket(pPacket);
     }
-
     return retVal;
 }
 
@@ -729,7 +736,7 @@
     // check sync byte
     if (pData[0] != TS_SYNC_BYTE)
     {
-        return HXR_FAIL;
+        return HXR_CORRUPT_FILE;
     }
 
     // header
@@ -1221,10 +1228,22 @@
     // skip packets before the DTS of the first vodeo with decoder setup info
     if (m_pCurrentProgram->bHasVideoStream)
     {
-        if ( m_pCurrentProgram->bFirstVideoDTSSet == FALSE || 
-            pESStream->u64PreviousDTS < m_pCurrentProgram->u64FirstVideoDTS)
+        if ( m_pCurrentProgram->bFirstVideoDTSSet == FALSE || \
pESStream->u64PreviousDTS < m_u64FirstDTSBaseOffset)  {
             return HXR_OK;
+        }  
+
+        if(m_pCurrentProgram->bFirstVideoDTSSet == TRUE && \
(m_pCurrentProgram->bFirstAudioDTSSet == FALSE) &&  +          (pESStream->nStreamID \
>= 0xC0) &&  (pESStream->nStreamID <= 0xDF)) +        {
+             if(pESStream->u64PreviousDTS >= m_pCurrentProgram->u64FirstVideoDTS)
+             {
+                 m_pCurrentProgram->bFirstAudioDTSSet = TRUE; 
+             }
+             if(m_pCurrentProgram->bFirstAudioDTSSet != TRUE)
+             {
+                 return HXR_OK;                
+             }
         }
     }
 
@@ -1288,13 +1307,6 @@
             }
         }
 
-        // mark the first packet
-        if (pESStream->bSeenFirstPacket == FALSE)
-        {
-            pESStream->bSeenFirstPacket = TRUE;
-            ucASMFlags |= 0x40;
-        }
-
         // use flag high bit as the timestamp overflow mark
         if (pESStream->u64PreviousDTS & 0x100000000ll) ucASMFlags |= 0x80;
         


_______________________________________________
Datatype-cvs mailing list
Datatype-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-cvs


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

Configure | About | News | Add a list | Sponsored by KoreLogic