void StreamIndicator::Update(MediaDataPiecePtr piece, UINT64 receiveTime, bool useNewPiece) { CheckDataPiece(piece); if (m_pieceIndex == 0 && m_timeStamp == 0) { LIVE_ASSERT(false); Reset(piece); return; } UINT newPieceIndex = piece->GetPieceIndex(); UINT64 newTimeStamp = piece->GetTimeStamp(); LIVE_ASSERT(newPieceIndex > m_pieceIndex); // 按时间戳来推算正常的接收时间 UINT64 newReceiveTime = m_receiveTime + static_cast<DWORD>(newTimeStamp - m_timeStamp); LIVE_ASSERT(newTimeStamp - m_timeStamp < INT_MAX); STREAMBUFFER_DEBUG("StreamIndicator::Update " << make_tuple(m_pieceIndex, m_timeStamp, m_receiveTime) << " " << make_tuple(newPieceIndex, newTimeStamp, newReceiveTime) << " " << make_tuple(newPieceIndex - m_pieceIndex, newTimeStamp - m_timeStamp, newReceiveTime - m_receiveTime)); LIVE_ASSERT(m_receiveTime.get_realtime_count() - newReceiveTime < INT_MAX); m_pieceIndex = newPieceIndex; m_timeStamp = newTimeStamp; if (useNewPiece) { m_receiveTime = time_counter(receiveTime); } else { m_receiveTime = time_counter(newReceiveTime); } }
int main() { int i; for(i=0;i++;i<100) time_counter(); return 0; }
LogClient::LogClient(const tstring& baseDir, const tstring& configDir, boost::shared_ptr<PeerInformation> peerInfo) : m_ConfigDirectory(configDir) , m_PeerInformation(peerInfo) , m_BufferLogSaved(false) , m_FlowLogSaved(false) { if ( IsEnabled() ) { tstring dllpath = ppl::os::paths::combine(baseDir, _T("marker.dll")); m_Marker.Load(dllpath); } #ifdef _DEBUG // debug版下尽快刷新数据 m_LogDataSaveTime = time_counter( 0 ); #endif }
void StreamIndicator::Clear() { m_pieceIndex = 0; m_timeStamp = 0; m_receiveTime = time_counter(0); }