(Auto)update libjingle 67686255-> 67689476

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6216 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
buildbot@webrtc.org
2014-05-21 17:02:15 +00:00
parent a148704b4b
commit f9f1bfbdae
4 changed files with 55 additions and 9 deletions

View File

@@ -203,4 +203,18 @@ int32 TimeDiff(uint32 later, uint32 earlier) {
#endif
}
TimestampWrapAroundHandler::TimestampWrapAroundHandler()
: last_ts_(0), num_wrap_(0) {}
int64 TimestampWrapAroundHandler::Unwrap(uint32 ts) {
if (ts < last_ts_) {
if (last_ts_ > 0xf0000000 && ts < 0x0fffffff) {
++num_wrap_;
}
}
last_ts_ = ts;
int64_t unwrapped_ts = ts + (num_wrap_ << 32);
return unwrapped_ts;
}
} // namespace talk_base

View File

@@ -97,6 +97,17 @@ inline int64 UnixTimestampNanosecsToNtpMillisecs(int64 unix_ts_ns) {
return unix_ts_ns / kNumNanosecsPerMillisec + kJan1970AsNtpMillisecs;
}
class TimestampWrapAroundHandler {
public:
TimestampWrapAroundHandler();
int64 Unwrap(uint32 ts);
private:
uint32 last_ts_;
int64 num_wrap_;
};
} // namespace talk_base
#endif // TALK_BASE_TIMEUTILS_H_

View File

@@ -160,4 +160,27 @@ TEST(TimeTest, DISABLED_CurrentTmTime) {
EXPECT_TRUE(0 <= microseconds && microseconds < 1000000);
}
class TimestampWrapAroundHandlerTest : public testing::Test {
public:
TimestampWrapAroundHandlerTest() {}
protected:
TimestampWrapAroundHandler wraparound_handler_;
};
TEST_F(TimestampWrapAroundHandlerTest, Unwrap) {
uint32 ts = 0xfffffff2;
int64 unwrapped_ts = ts;
EXPECT_EQ(ts, wraparound_handler_.Unwrap(ts));
ts = 2;
unwrapped_ts += 0x10;
EXPECT_EQ(unwrapped_ts, wraparound_handler_.Unwrap(ts));
ts = 0xfffffff2;
unwrapped_ts += 0xfffffff0;
EXPECT_EQ(unwrapped_ts, wraparound_handler_.Unwrap(ts));
ts = 0;
unwrapped_ts += 0xe;
EXPECT_EQ(unwrapped_ts, wraparound_handler_.Unwrap(ts));
}
} // namespace talk_base