Make rtc::TimestampWrapAroundHandler handle backwards wrapping

Also fix a timestamp issue in video analyzer test.

BUG=webrtc:5637, webrtc:5537

Review URL: https://codereview.webrtc.org/1779773002

Cr-Commit-Position: refs/heads/master@{#11938}
diff --git a/webrtc/base/timeutils.cc b/webrtc/base/timeutils.cc
index 24b04ee..b7803ae 100644
--- a/webrtc/base/timeutils.cc
+++ b/webrtc/base/timeutils.cc
@@ -193,17 +193,25 @@
 }
 
 TimestampWrapAroundHandler::TimestampWrapAroundHandler()
-    : last_ts_(0), num_wrap_(0) {}
+    : last_ts_(0), num_wrap_(-1) {}
 
 int64_t TimestampWrapAroundHandler::Unwrap(uint32_t ts) {
-  if (ts < last_ts_) {
-    if (last_ts_ > 0xf0000000 && ts < 0x0fffffff) {
-      ++num_wrap_;
-    }
+  if (num_wrap_ == -1) {
+    last_ts_ = ts;
+    num_wrap_ = 0;
+    return ts;
   }
+
+  if (ts < last_ts_) {
+    if (last_ts_ >= 0xf0000000 && ts < 0x0fffffff)
+      ++num_wrap_;
+  } else if ((ts - last_ts_) > 0xf0000000) {
+    // Backwards wrap. Unwrap with last wrap count and don't update last_ts_.
+    return ts + ((num_wrap_ - 1) << 32);
+  }
+
   last_ts_ = ts;
-  int64_t unwrapped_ts = ts + (num_wrap_ << 32);
-  return unwrapped_ts;
+  return ts + (num_wrap_ << 32);
 }
 
 int64_t TmToSeconds(const std::tm& tm) {