[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-datatype-cvs
Subject: [Datatype-cvs] mp3/fileformat mp3ff.cpp,1.58.2.20,1.58.2.21
From: xzhao () helixcommunity ! org
Date: 2012-02-22 7:27:08
[Download RAW message or body]
Update of /cvsroot/datatype/mp3/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7410
Modified Files:
Tag: hxclient_3_1_0_atlas
mp3ff.cpp
Log Message:
Synopsis: Add continuous timestamp mode for AAC and MP3 fileformat
Overview:
In this mode, after seek, the packet time stamp will not jump to some position after \
seek point, instead it will continue growing from current position. For example, \
current packet ts is 3s, after seek to 10s, next packet ts will be 3.021s, not \
10.021s. This mode is useful when seek table is not available, while some proxy FF \
know exactly the packet ts detail. So leave this decision to the upper proxy FF.
Files Modified:
datatype/mp3/fileformat/mp3ff.cpp
datatype/mp3/fileformat/pub/mp3ff.h
datatype/aac/fileformat/aacff.cpp
datatype/aac/fileformat/pub/aacff.h
Index: mp3ff.cpp
===================================================================
RCS file: /cvsroot/datatype/mp3/fileformat/mp3ff.cpp,v
retrieving revision 1.58.2.20
retrieving revision 1.58.2.21
diff -u -d -r1.58.2.20 -r1.58.2.21
--- mp3ff.cpp 26 Oct 2010 22:51:01 -0000 1.58.2.20
+++ mp3ff.cpp 22 Feb 2012 07:27:04 -0000 1.58.2.21
@@ -233,6 +233,7 @@
m_bFileDurationChanged(FALSE),
m_bValidateMP3Required(TRUE),
m_pCreatePacketFunction(NULL),
+ m_bUseContinuousDTSAfterSeek(FALSE),
m_ulNewReadSize(0)
{
memset(&m_ReadBuf, 0, sizeof(m_ReadBuf));
@@ -571,6 +572,21 @@
if (m_pStatus != NULL)
m_pStatus->AddRef();
+ if (pRequest)
+ {
+ IHXValues* pRequestHeaders = NULL;
+ if (SUCCEEDED(pRequest->GetRequestHeaders(pRequestHeaders)) &&
+ pRequestHeaders)
+ {
+ ULONG32 ulVal = 0;
+ if (SUCCEEDED(pRequestHeaders->GetPropertyULONG32("UseContinuousDTSAfterSeek", \
ulVal))) + {
+ m_bUseContinuousDTSAfterSeek = ((ulVal == 0) ? FALSE : TRUE);
+ }
+ HX_RELEASE(pRequestHeaders);
+ }
+ }
+
#if defined(HELIX_FEATURE_MP3FF_ONDEMANDMETAINFO)
// See if meta info has been requested
HXBOOL bAcceptMetaInfo = m_bAcceptMetaInfo;
@@ -1993,12 +2009,16 @@
}
HXLOGL3(HXLOG_MP3X,"Seek(%lu)", requestedTime);
- // Find nearest packet to the requested time
- UINT32 ulPacketNo = (UINT32)(requestedTime / m_Info.dTimePerFrame);
- UINT32 ulPacketStart = (UINT32)(ulPacketNo * m_Info.dPacketSize + \
m_ulFileOffset); + UINT32 ulPacketStart = 0;
+ if (!m_bUseContinuousDTSAfterSeek)
+ {
+ // Find nearest packet to the requested time
+ UINT32 ulPacketNo = (UINT32)(requestedTime / m_Info.dTimePerFrame);
+ ulPacketStart = (UINT32)(ulPacketNo * m_Info.dPacketSize + m_ulFileOffset);
- m_dNextPts = ulPacketNo * m_Info.dTimePerFrame;
- m_ulNextPacketDeliveryTime = (UINT32)(m_dNextPts);
+ m_dNextPts = ulPacketNo * m_Info.dTimePerFrame;
+ m_ulNextPacketDeliveryTime = (UINT32)(m_dNextPts);
+ }
// Note state, since Seek() is asynchronous
m_State = SeekSeekPending;
_______________________________________________
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