[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