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

List:       helix-datatype-cvs
Subject:    [Datatype-cvs] mpeg2ts/demuxer tsdemuxer.cpp,1.8,1.9
From:       qluo () helixcommunity ! org
Date:       2011-01-27 17:53:38
Message-ID: 201101271753.p0RHrq15014479 () mailer ! progressive-comp ! com
[Download RAW message or body]

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

Modified Files:
	tsdemuxer.cpp 
Log Message:
merge fixes to head.


Index: tsdemuxer.cpp
===================================================================
RCS file: /cvsroot/datatype/mpeg2ts/demuxer/tsdemuxer.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- tsdemuxer.cpp	27 Dec 2010 17:54:25 -0000	1.8
+++ tsdemuxer.cpp	27 Jan 2011 17:53:35 -0000	1.9
@@ -53,6 +53,10 @@
 #include "pckunpck.h"
 #include "tsdemuxer.h"
 
+#if defined(ANDROID)
+#include <utils/Log.h>
+#define printf LOGD
+#endif
 /*
  *  constructor, destructor
  */
@@ -65,6 +69,7 @@
     , m_ulFilesize(0)
     , m_bRawMode(bRawMode)
     , m_bUseRawDTS(FALSE)
+    , m_u64FirstDTSBaseOffset(0)
 {
     // context
     if (pContext)
@@ -415,6 +420,10 @@
      }
    }
    m_pCurrentProgram->u64FirstDTS = u64DTSBase;
+   if(m_u64FirstDTSBaseOffset == 0)
+   {
+       m_u64FirstDTSBaseOffset = m_pCurrentProgram->u64FirstDTS;
+   }
 }
 
 HX_RESULT
@@ -731,7 +740,7 @@
     // check sync byte
     if (pData[0] != TS_SYNC_BYTE)
     {
-        return HXR_FAIL;
+        return HXR_CORRUPT_FILE;
     }
 
     // header
@@ -925,6 +934,11 @@
                 //find out where the new AU boundary is
                 BYTE* pNewAU = pESStream->pPayloadHandler->FindAU(pESStream->pESData \
                + pESStream->ulCurrentPESOffset, 
                                                  pESStream->ulBufferOffset - \
pESStream->ulCurrentPESOffset); +                if (!pNewAU)
+                {
+                    printf("%s: Cant find start code in PES with PTS/DTS\n", \
__FUNCTION__); +                }
+
                 if (pNewAU)
                 {
                     pESStream->ulNewAUOffset = pNewAU - pESStream->pESData;
@@ -1223,10 +1237,10 @@
     // skip packets before the DTS of the first vodeo with decoder setup info
     if (m_pCurrentProgram->bHasVideoStream)
     {
-        if ( m_pCurrentProgram->bFirstVideoDTSSet == FALSE)
+        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))
@@ -1302,13 +1316,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