clean up misc TimeDelta use

follow-up from https://webrtc-review.googlesource.com/c/src/+/262810

* replace Time::Millis(0) and TimeDelta::Millis(0) with ::Zero()
* drop unnecessary webrtc namespace from some TimeDeltas
* make TimeDelta do the unit conversion for stats

BUG=webrtc:13756

Change-Id: Ic60625ae0fc7959a47a6be9f5051851feaf76373
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/265875
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37664}
diff --git a/api/rtp_packet_info_unittest.cc b/api/rtp_packet_info_unittest.cc
index 601d34f..0e82aef 100644
--- a/api/rtp_packet_info_unittest.cc
+++ b/api/rtp_packet_info_unittest.cc
@@ -37,7 +37,7 @@
   rhs = RtpPacketInfo();
   EXPECT_NE(rhs.ssrc(), value);
 
-  rhs = RtpPacketInfo(value, {}, {}, {}, {}, Timestamp::Millis(0));
+  rhs = RtpPacketInfo(value, {}, {}, {}, {}, Timestamp::Zero());
   EXPECT_EQ(rhs.ssrc(), value);
 }
 
@@ -64,7 +64,7 @@
   rhs = RtpPacketInfo();
   EXPECT_NE(rhs.csrcs(), value);
 
-  rhs = RtpPacketInfo({}, value, {}, {}, {}, Timestamp::Millis(0));
+  rhs = RtpPacketInfo({}, value, {}, {}, {}, Timestamp::Zero());
   EXPECT_EQ(rhs.csrcs(), value);
 }
 
@@ -91,7 +91,7 @@
   rhs = RtpPacketInfo();
   EXPECT_NE(rhs.rtp_timestamp(), value);
 
-  rhs = RtpPacketInfo({}, {}, value, {}, {}, Timestamp::Millis(0));
+  rhs = RtpPacketInfo({}, {}, value, {}, {}, Timestamp::Zero());
   EXPECT_EQ(rhs.rtp_timestamp(), value);
 }
 
@@ -118,7 +118,7 @@
   rhs = RtpPacketInfo();
   EXPECT_NE(rhs.audio_level(), value);
 
-  rhs = RtpPacketInfo({}, {}, {}, value, {}, Timestamp::Millis(0));
+  rhs = RtpPacketInfo({}, {}, {}, value, {}, Timestamp::Zero());
   EXPECT_EQ(rhs.audio_level(), value);
 }
 
@@ -145,7 +145,7 @@
   rhs = RtpPacketInfo();
   EXPECT_NE(rhs.absolute_capture_time(), value);
 
-  rhs = RtpPacketInfo({}, {}, {}, {}, value, Timestamp::Millis(0));
+  rhs = RtpPacketInfo({}, {}, {}, {}, value, Timestamp::Zero());
   EXPECT_EQ(rhs.absolute_capture_time(), value);
 }
 
@@ -174,7 +174,7 @@
 
   // Default local capture clock offset is null.
   rhs = RtpPacketInfo({}, {}, {}, {}, AbsoluteCaptureTime{12, 34},
-                      Timestamp::Millis(0));
+                      Timestamp::Zero());
   EXPECT_EQ(rhs.local_capture_clock_offset(), absl::nullopt);
 }
 
diff --git a/call/rtp_video_sender_unittest.cc b/call/rtp_video_sender_unittest.cc
index b64cc78..fef0495 100644
--- a/call/rtp_video_sender_unittest.cc
+++ b/call/rtp_video_sender_unittest.cc
@@ -208,7 +208,7 @@
   // SendTask().
   void RunOnTransportQueue(absl::AnyInvocable<void() &&> task) {
     transport_controller_.GetWorkerQueue()->PostTask(std::move(task));
-    AdvanceTime(TimeDelta::Millis(0));
+    AdvanceTime(TimeDelta::Zero());
   }
 
  private:
diff --git a/call/simulated_network_unittest.cc b/call/simulated_network_unittest.cc
index a4545e5..47b17ca 100644
--- a/call/simulated_network_unittest.cc
+++ b/call/simulated_network_unittest.cc
@@ -40,7 +40,7 @@
       packet_size / link_capacity + TimeDelta::Millis(1);
 
   // Send at capacity and see we get no loss.
-  Timestamp start_time = Timestamp::Millis(0);
+  Timestamp start_time = Timestamp::Zero();
   Timestamp current_time = start_time;
   Timestamp next_packet_time = start_time;
   uint64_t next_id = 0;
@@ -94,7 +94,7 @@
   const DataSize packet_size = overload_rate * link_capacity * packet_inverval;
   // Send above capacity and see delays are still controlled at the cost of
   // packet loss.
-  Timestamp start_time = Timestamp::Millis(0);
+  Timestamp start_time = Timestamp::Zero();
   Timestamp current_time = start_time;
   Timestamp next_packet_time = start_time;
   Timestamp last_check = start_time;
diff --git a/call/video_receive_stream.h b/call/video_receive_stream.h
index 65b50ef..3d54d31 100644
--- a/call/video_receive_stream.h
+++ b/call/video_receive_stream.h
@@ -105,11 +105,11 @@
     uint32_t frames_dropped = 0;
     uint32_t frames_decoded = 0;
     // https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totaldecodetime
-    webrtc::TimeDelta total_decode_time = webrtc::TimeDelta::Millis(0);
+    TimeDelta total_decode_time = TimeDelta::Zero();
     // https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totalprocessingdelay
-    webrtc::TimeDelta total_processing_delay = webrtc::TimeDelta::Millis(0);
+    TimeDelta total_processing_delay = TimeDelta::Zero();
     // TODO(bugs.webrtc.org/13986): standardize
-    webrtc::TimeDelta total_assembly_time = webrtc::TimeDelta::Millis(0);
+    TimeDelta total_assembly_time = TimeDelta::Zero();
     uint32_t frames_assembled_from_multiple_packets = 0;
     // Total inter frame delay in seconds.
     // https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totalinterframedelay
diff --git a/media/base/media_channel.h b/media/base/media_channel.h
index 6c80d6d..57b4884 100644
--- a/media/base/media_channel.h
+++ b/media/base/media_channel.h
@@ -630,10 +630,10 @@
   uint32_t frames_rendered = 0;
   absl::optional<uint64_t> qp_sum;
   // https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totaldecodetime
-  webrtc::TimeDelta total_decode_time = webrtc::TimeDelta::Millis(0);
+  webrtc::TimeDelta total_decode_time = webrtc::TimeDelta::Zero();
   // https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totalprocessingdelay
-  webrtc::TimeDelta total_processing_delay = webrtc::TimeDelta::Millis(0);
-  webrtc::TimeDelta total_assembly_time = webrtc::TimeDelta::Millis(0);
+  webrtc::TimeDelta total_processing_delay = webrtc::TimeDelta::Zero();
+  webrtc::TimeDelta total_assembly_time = webrtc::TimeDelta::Zero();
   uint32_t frames_assembled_from_multiple_packets = 0;
   double total_inter_frame_delay = 0;
   double total_squared_inter_frame_delay = 0;
diff --git a/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc b/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
index 95a40e0..d79f04e 100644
--- a/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
+++ b/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
@@ -236,7 +236,7 @@
       int min_data_rate_kbps = 0,
       int max_data_rate_kbps = 5 * kInitialBitrateKbps) {
     NetworkControllerConfig config;
-    config.constraints.at_time = Timestamp::Millis(0);
+    config.constraints.at_time = Timestamp::Zero();
     config.constraints.min_data_rate =
         DataRate::KilobitsPerSec(min_data_rate_kbps);
     config.constraints.max_data_rate =
diff --git a/modules/congestion_controller/goog_cc/robust_throughput_estimator.cc b/modules/congestion_controller/goog_cc/robust_throughput_estimator.cc
index 93909af..792a93d4 100644
--- a/modules/congestion_controller/goog_cc/robust_throughput_estimator.cc
+++ b/modules/congestion_controller/goog_cc/robust_throughput_estimator.cc
@@ -90,8 +90,8 @@
   if (window_.empty() || window_.size() < settings_.required_packets)
     return absl::nullopt;
 
-  TimeDelta largest_recv_gap(TimeDelta::Millis(0));
-  TimeDelta second_largest_recv_gap(TimeDelta::Millis(0));
+  TimeDelta largest_recv_gap(TimeDelta::Zero());
+  TimeDelta second_largest_recv_gap(TimeDelta::Zero());
   for (size_t i = 1; i < window_.size(); i++) {
     // Find receive time gaps.
     TimeDelta gap = window_[i].receive_time - window_[i - 1].receive_time;
diff --git a/modules/pacing/bitrate_prober_unittest.cc b/modules/pacing/bitrate_prober_unittest.cc
index f8410d7..dd9bfe4 100644
--- a/modules/pacing/bitrate_prober_unittest.cc
+++ b/modules/pacing/bitrate_prober_unittest.cc
@@ -23,7 +23,7 @@
   BitrateProber prober(config);
   EXPECT_FALSE(prober.is_probing());
 
-  Timestamp now = Timestamp::Millis(0);
+  Timestamp now = Timestamp::Zero();
   const Timestamp start_time = now;
   EXPECT_EQ(prober.NextProbeTime(now), Timestamp::PlusInfinity());
 
@@ -160,7 +160,7 @@
 
   const DataRate kHighBitrate = DataRate::KilobitsPerSec(10000);  // 10 Mbps
 
-  prober.CreateProbeCluster({.at_time = Timestamp::Millis(0),
+  prober.CreateProbeCluster({.at_time = Timestamp::Zero(),
                              .target_data_rate = kHighBitrate,
                              .target_duration = TimeDelta::Millis(15),
                              .target_probe_count = 5,
@@ -178,8 +178,8 @@
   const DataRate kBitrate = DataRate::KilobitsPerSec(100);
   const DataSize kPacketSize = DataSize::Bytes(1000);
 
-  Timestamp now = Timestamp::Millis(0);
-  prober.CreateProbeCluster({.at_time = Timestamp::Millis(0),
+  Timestamp now = Timestamp::Zero();
+  prober.CreateProbeCluster({.at_time = Timestamp::Zero(),
                              .target_data_rate = kBitrate,
                              .target_duration = TimeDelta::Millis(15),
                              .target_probe_count = 5,
@@ -201,8 +201,8 @@
   const DataSize kPacketSize = DataSize::Bytes(1000);
   const DataSize kExpectedDataSent = kBitrate * TimeDelta::Millis(15);
 
-  Timestamp now = Timestamp::Millis(0);
-  prober.CreateProbeCluster({.at_time = Timestamp::Millis(0),
+  Timestamp now = Timestamp::Zero();
+  prober.CreateProbeCluster({.at_time = Timestamp::Zero(),
                              .target_data_rate = kBitrate,
                              .target_duration = TimeDelta::Millis(15),
                              .target_probe_count = 5,
@@ -225,8 +225,8 @@
   const DataSize kPacketSize = DataSize::Bytes(1000);
   const DataSize kExpectedDataSent = kBitrate * TimeDelta::Millis(15);
 
-  Timestamp now = Timestamp::Millis(0);
-  prober.CreateProbeCluster({.at_time = Timestamp::Millis(0),
+  Timestamp now = Timestamp::Zero();
+  prober.CreateProbeCluster({.at_time = Timestamp::Zero(),
                              .target_data_rate = kBitrate,
                              .target_duration = TimeDelta::Millis(15),
                              .target_probe_count = 5,
@@ -251,7 +251,7 @@
   const DataSize kExpectedDataSent = kSmallPacketSize * 2 * 5;
   const TimeDelta kTimeout = TimeDelta::Millis(5000);
 
-  Timestamp now = Timestamp::Millis(0);
+  Timestamp now = Timestamp::Zero();
   prober.CreateProbeCluster({.at_time = now,
                              .target_data_rate = kBitrate,
                              .target_duration = TimeDelta::Millis(15),
diff --git a/modules/remote_bitrate_estimator/remote_estimator_proxy_unittest.cc b/modules/remote_bitrate_estimator/remote_estimator_proxy_unittest.cc
index 57db595..10bc1e8 100644
--- a/modules/remote_bitrate_estimator/remote_estimator_proxy_unittest.cc
+++ b/modules/remote_bitrate_estimator/remote_estimator_proxy_unittest.cc
@@ -562,7 +562,7 @@
 }
 
 TEST_F(RemoteEstimatorProxyTest, ReportsIncomingPacketToNetworkStateEstimator) {
-  Timestamp first_send_timestamp = Timestamp::Millis(0);
+  Timestamp first_send_timestamp = Timestamp::Zero();
   const DataSize kPacketOverhead = DataSize::Bytes(38);
   proxy_.SetTransportOverhead(kPacketOverhead);
 
@@ -605,7 +605,7 @@
       AbsoluteSendTime::To24Bits(Timestamp::Millis(1 << 24));
   const TimeDelta kExpectedAbsSendTimeDelta = TimeDelta::Millis(30);
 
-  Timestamp first_send_timestamp = Timestamp::Millis(0);
+  Timestamp first_send_timestamp = Timestamp::Zero();
   EXPECT_CALL(network_state_estimator_, OnReceivedPacket(_))
       .WillOnce(Invoke([&first_send_timestamp](const PacketResult& packet) {
         EXPECT_EQ(packet.receive_time, kBaseTime);
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
index 27e34cd..4c08ce5 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
@@ -497,8 +497,8 @@
 
 TEST_P(RtpRtcpImpl2Test, NoSrBeforeMedia) {
   // Ignore fake transport delays in this test.
-  sender_.transport_.SimulateNetworkDelay(TimeDelta::Millis(0));
-  receiver_.transport_.SimulateNetworkDelay(TimeDelta::Millis(0));
+  sender_.transport_.SimulateNetworkDelay(TimeDelta::Zero());
+  receiver_.transport_.SimulateNetworkDelay(TimeDelta::Zero());
 
   // Move ahead to the instant a rtcp is expected.
   // Verify no SR is sent before media has been sent, RR should still be sent
@@ -607,7 +607,7 @@
 }
 
 TEST_P(RtpRtcpImpl2Test, ReSendsNackListAfterRttMs) {
-  sender_.transport_.SimulateNetworkDelay(TimeDelta::Millis(0));
+  sender_.transport_.SimulateNetworkDelay(TimeDelta::Zero());
   // Send module sends a NACK.
   const uint16_t kNackLength = 2;
   uint16_t nack_list[kNackLength] = {123, 125};
@@ -632,7 +632,7 @@
 }
 
 TEST_P(RtpRtcpImpl2Test, UniqueNackRequests) {
-  receiver_.transport_.SimulateNetworkDelay(TimeDelta::Millis(0));
+  receiver_.transport_.SimulateNetworkDelay(TimeDelta::Zero());
   EXPECT_EQ(0U, receiver_.RtcpSent().nack_packets);
   EXPECT_EQ(0U, receiver_.RtcpSent().nack_requests);
   EXPECT_EQ(0U, receiver_.RtcpSent().unique_nack_requests);
diff --git a/modules/video_coding/frame_buffer2_unittest.cc b/modules/video_coding/frame_buffer2_unittest.cc
index 2c21a86..13ad66c 100644
--- a/modules/video_coding/frame_buffer2_unittest.cc
+++ b/modules/video_coding/frame_buffer2_unittest.cc
@@ -194,7 +194,7 @@
                          });
     });
     if (max_wait_time == 0) {
-      time_controller_.AdvanceTime(TimeDelta::Millis(0));
+      time_controller_.AdvanceTime(TimeDelta::Zero());
     }
   }
 
@@ -304,7 +304,7 @@
   ExtractFrame(50);
   InsertFrame(pid, 1, ts, true, kFrameSize);
   InsertFrame(pid, 0, ts, false, kFrameSize);
-  time_controller_.AdvanceTime(TimeDelta::Millis(0));
+  time_controller_.AdvanceTime(TimeDelta::Zero());
 
   CheckFrame(0, pid, 0);
   CheckFrame(1, pid, 1);
diff --git a/modules/video_coding/timing/timing_unittest.cc b/modules/video_coding/timing/timing_unittest.cc
index c12de99..8633c0d 100644
--- a/modules/video_coding/timing/timing_unittest.cc
+++ b/modules/video_coding/timing/timing_unittest.cc
@@ -150,10 +150,10 @@
   timing.set_max_playout_delay(TimeDelta::Millis(20));
   EXPECT_FALSE(timing.RenderParameters().use_low_latency_rendering);
   // True if min==0, max > 0.
-  timing.set_min_playout_delay(TimeDelta::Millis(0));
+  timing.set_min_playout_delay(TimeDelta::Zero());
   EXPECT_TRUE(timing.RenderParameters().use_low_latency_rendering);
   // True if min==max==0.
-  timing.set_max_playout_delay(TimeDelta::Millis(0));
+  timing.set_max_playout_delay(TimeDelta::Zero());
   EXPECT_TRUE(timing.RenderParameters().use_low_latency_rendering);
   // True also for max playout delay==500 ms.
   timing.set_max_playout_delay(TimeDelta::Millis(500));
diff --git a/p2p/base/stun_request.cc b/p2p/base/stun_request.cc
index c940027..1228e4e 100644
--- a/p2p/base/stun_request.cc
+++ b/p2p/base/stun_request.cc
@@ -74,7 +74,7 @@
       // of canceling any outstanding tasks and prepare a new flag for
       // operations related to this call to `Send`.
       request->ResetTasksForTest();
-      request->Send(webrtc::TimeDelta::Millis(0));
+      request->Send(webrtc::TimeDelta::Zero());
     }
   }
 }
diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc
index e9bc83d..be6c23e 100644
--- a/pc/rtc_stats_collector.cc
+++ b/pc/rtc_stats_collector.cc
@@ -564,14 +564,11 @@
   if (video_receiver_info.qp_sum)
     inbound_video->qp_sum = *video_receiver_info.qp_sum;
   inbound_video->total_decode_time =
-      static_cast<double>(video_receiver_info.total_decode_time.ms()) /
-      rtc::kNumMillisecsPerSec;
+      video_receiver_info.total_decode_time.seconds<double>();
   inbound_video->total_processing_delay =
-      static_cast<double>(video_receiver_info.total_processing_delay.ms()) /
-      rtc::kNumMillisecsPerSec;
+      video_receiver_info.total_processing_delay.seconds<double>();
   inbound_video->total_assembly_time =
-      static_cast<double>(video_receiver_info.total_assembly_time.ms()) /
-      rtc::kNumMillisecsPerSec;
+      video_receiver_info.total_assembly_time.seconds<double>();
   inbound_video->frames_assembled_from_multiple_packets =
       video_receiver_info.frames_assembled_from_multiple_packets;
   inbound_video->total_inter_frame_delay =
diff --git a/pc/video_rtp_track_source_unittest.cc b/pc/video_rtp_track_source_unittest.cc
index feb0019..13728c7 100644
--- a/pc/video_rtp_track_source_unittest.cc
+++ b/pc/video_rtp_track_source_unittest.cc
@@ -121,7 +121,7 @@
   EncodedResolution resolution() const override {
     return EncodedResolution{0, 0};
   }
-  Timestamp render_time() const override { return Timestamp::Millis(0); }
+  Timestamp render_time() const override { return Timestamp::Zero(); }
 };
 
 TEST(VideoRtpTrackSourceTest, BroadcastsFrames) {
diff --git a/rtc_base/task_utils/repeating_task_unittest.cc b/rtc_base/task_utils/repeating_task_unittest.cc
index 4cb6816..021c51e 100644
--- a/rtc_base/task_utils/repeating_task_unittest.cc
+++ b/rtc_base/task_utils/repeating_task_unittest.cc
@@ -195,7 +195,7 @@
 }
 
 TEST(RepeatingTaskTest, CompensatesForShortRunTime) {
-  SimulatedClock clock(Timestamp::Millis(0));
+  SimulatedClock clock(Timestamp::Zero());
   FakeTaskQueue task_queue(&clock);
   std::atomic_int counter(0);
   RepeatingTaskHandle::Start(
@@ -336,7 +336,7 @@
 TEST(RepeatingTaskTest, ClockIntegration) {
   absl::AnyInvocable<void() &&> delayed_task;
   TimeDelta expected_delay = TimeDelta::Zero();
-  SimulatedClock clock(Timestamp::Millis(0));
+  SimulatedClock clock(Timestamp::Zero());
 
   NiceMock<MockTaskQueue> task_queue;
   ON_CALL(task_queue, PostDelayedTask)
diff --git a/video/adaptation/pixel_limit_resource_unittest.cc b/video/adaptation/pixel_limit_resource_unittest.cc
index dfd7a30..28eb19b 100644
--- a/video/adaptation/pixel_limit_resource_unittest.cc
+++ b/video/adaptation/pixel_limit_resource_unittest.cc
@@ -48,7 +48,7 @@
 
   void RunTaskOnTaskQueue(absl::AnyInvocable<void() &&> task) {
     task_queue_->PostTask(std::move(task));
-    time_controller_.AdvanceTime(TimeDelta::Millis(0));
+    time_controller_.AdvanceTime(TimeDelta::Zero());
   }
 
  protected:
@@ -83,7 +83,7 @@
     rtc::scoped_refptr<PixelLimitResource> pixel_limit_resource =
         PixelLimitResource::Create(task_queue_.get(), &input_state_provider_);
     pixel_limit_resource->SetResourceListener(&resource_listener);
-    time_controller_.AdvanceTime(TimeDelta::Millis(0));
+    time_controller_.AdvanceTime(TimeDelta::Zero());
 
     pixel_limit_resource->SetMaxPixels(kMaxPixels);
     SetCurrentPixels(kMaxPixels + 1);
@@ -118,7 +118,7 @@
     rtc::scoped_refptr<PixelLimitResource> pixel_limit_resource =
         PixelLimitResource::Create(task_queue_.get(), &input_state_provider_);
     pixel_limit_resource->SetResourceListener(&resource_listener);
-    time_controller_.AdvanceTime(TimeDelta::Millis(0));
+    time_controller_.AdvanceTime(TimeDelta::Zero());
 
     pixel_limit_resource->SetMaxPixels(kMaxPixels);
     SetCurrentPixels(kMinPixels - 1);
diff --git a/video/encoder_rtcp_feedback.cc b/video/encoder_rtcp_feedback.cc
index 17095a0..ebba41e 100644
--- a/video/encoder_rtcp_feedback.cc
+++ b/video/encoder_rtcp_feedback.cc
@@ -35,7 +35,7 @@
       ssrcs_(ssrcs),
       get_packet_infos_(std::move(get_packet_infos)),
       video_stream_encoder_(encoder),
-      time_last_packet_delivery_queue_(Timestamp::Millis(0)),
+      time_last_packet_delivery_queue_(Timestamp::Zero()),
       min_keyframe_send_interval_(
           TimeDelta::Millis(KeyframeIntervalSettings::ParseFromFieldTrials()
                                 .MinKeyframeSendIntervalMs()
diff --git a/video/frame_cadence_adapter_unittest.cc b/video/frame_cadence_adapter_unittest.cc
index dce3b08..0824ac3 100644
--- a/video/frame_cadence_adapter_unittest.cc
+++ b/video/frame_cadence_adapter_unittest.cc
@@ -126,7 +126,7 @@
 
 TEST(FrameCadenceAdapterTest, FrameRateFollowsRateStatisticsByDefault) {
   test::ScopedKeyValueConfig no_field_trials;
-  GlobalSimulatedTimeController time_controller(Timestamp::Millis(0));
+  GlobalSimulatedTimeController time_controller(Timestamp::Zero());
   auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock());
   adapter->Initialize(nullptr);
 
@@ -148,7 +148,7 @@
 TEST(FrameCadenceAdapterTest,
      FrameRateFollowsRateStatisticsWhenFeatureDisabled) {
   ZeroHertzFieldTrialDisabler feature_disabler;
-  GlobalSimulatedTimeController time_controller(Timestamp::Millis(0));
+  GlobalSimulatedTimeController time_controller(Timestamp::Zero());
   auto adapter = CreateAdapter(feature_disabler, time_controller.GetClock());
   adapter->Initialize(nullptr);
 
@@ -169,7 +169,7 @@
 
 TEST(FrameCadenceAdapterTest, FrameRateFollowsMaxFpsWhenZeroHertzActivated) {
   ZeroHertzFieldTrialEnabler enabler;
-  GlobalSimulatedTimeController time_controller(Timestamp::Millis(0));
+  GlobalSimulatedTimeController time_controller(Timestamp::Zero());
   auto adapter = CreateAdapter(enabler, time_controller.GetClock());
   adapter->Initialize(nullptr);
   adapter->SetZeroHertzModeEnabled(
@@ -185,7 +185,7 @@
 TEST(FrameCadenceAdapterTest,
      FrameRateFollowsRateStatisticsAfterZeroHertzDeactivated) {
   ZeroHertzFieldTrialEnabler enabler;
-  GlobalSimulatedTimeController time_controller(Timestamp::Millis(0));
+  GlobalSimulatedTimeController time_controller(Timestamp::Zero());
   auto adapter = CreateAdapter(enabler, time_controller.GetClock());
   adapter->Initialize(nullptr);
   adapter->SetZeroHertzModeEnabled(
@@ -214,7 +214,7 @@
 TEST(FrameCadenceAdapterTest, ForwardsFramesDelayed) {
   ZeroHertzFieldTrialEnabler enabler;
   MockCallback callback;
-  GlobalSimulatedTimeController time_controller(Timestamp::Millis(0));
+  GlobalSimulatedTimeController time_controller(Timestamp::Zero());
   auto adapter = CreateAdapter(enabler, time_controller.GetClock());
   adapter->Initialize(&callback);
   adapter->SetZeroHertzModeEnabled(
@@ -336,7 +336,7 @@
   // At 3.5s, we receive this frame.
   ZeroHertzFieldTrialEnabler enabler;
   MockCallback callback;
-  GlobalSimulatedTimeController time_controller(Timestamp::Millis(0));
+  GlobalSimulatedTimeController time_controller(Timestamp::Zero());
   auto adapter = CreateAdapter(enabler, time_controller.GetClock());
   adapter->Initialize(&callback);
   adapter->SetZeroHertzModeEnabled(
@@ -364,7 +364,7 @@
 TEST(FrameCadenceAdapterTest, RequestsRefreshFrameOnKeyFrameRequestWhenNew) {
   ZeroHertzFieldTrialEnabler enabler;
   MockCallback callback;
-  GlobalSimulatedTimeController time_controller(Timestamp::Millis(0));
+  GlobalSimulatedTimeController time_controller(Timestamp::Zero());
   auto adapter = CreateAdapter(enabler, time_controller.GetClock());
   adapter->Initialize(&callback);
   adapter->SetZeroHertzModeEnabled(
@@ -382,7 +382,7 @@
 TEST(FrameCadenceAdapterTest, IgnoresKeyFrameRequestShortlyAfterFrame) {
   ZeroHertzFieldTrialEnabler enabler;
   MockCallback callback;
-  GlobalSimulatedTimeController time_controller(Timestamp::Millis(0));
+  GlobalSimulatedTimeController time_controller(Timestamp::Zero());
   auto adapter = CreateAdapter(enabler, time_controller.GetClock());
   adapter->Initialize(&callback);
   adapter->SetZeroHertzModeEnabled(
@@ -397,7 +397,7 @@
 TEST(FrameCadenceAdapterTest, RequestsRefreshFramesUntilArrival) {
   ZeroHertzFieldTrialEnabler enabler;
   MockCallback callback;
-  GlobalSimulatedTimeController time_controller(Timestamp::Millis(0));
+  GlobalSimulatedTimeController time_controller(Timestamp::Zero());
   auto adapter = CreateAdapter(enabler, time_controller.GetClock());
   adapter->Initialize(&callback);
   adapter->SetZeroHertzModeEnabled(
@@ -423,7 +423,7 @@
 TEST(FrameCadenceAdapterTest, RequestsRefreshAfterFrameDrop) {
   ZeroHertzFieldTrialEnabler enabler;
   MockCallback callback;
-  GlobalSimulatedTimeController time_controller(Timestamp::Millis(0));
+  GlobalSimulatedTimeController time_controller(Timestamp::Zero());
   auto adapter = CreateAdapter(enabler, time_controller.GetClock());
   adapter->Initialize(&callback);
   adapter->SetZeroHertzModeEnabled(
@@ -464,7 +464,7 @@
 TEST(FrameCadenceAdapterTest, OmitsRefreshAfterFrameDropWithTimelyFrameEntry) {
   ZeroHertzFieldTrialEnabler enabler;
   MockCallback callback;
-  GlobalSimulatedTimeController time_controller(Timestamp::Millis(0));
+  GlobalSimulatedTimeController time_controller(Timestamp::Zero());
   auto adapter = CreateAdapter(enabler, time_controller.GetClock());
   adapter->Initialize(&callback);
   adapter->SetZeroHertzModeEnabled(
@@ -524,7 +524,7 @@
  protected:
   ZeroHertzFieldTrialEnabler enabler_;
   MockCallback callback_;
-  GlobalSimulatedTimeController time_controller_{Timestamp::Millis(0)};
+  GlobalSimulatedTimeController time_controller_{Timestamp::Zero()};
   const std::unique_ptr<FrameCadenceAdapterInterface> adapter_{
       CreateAdapter(enabler_, time_controller_.GetClock())};
 };
@@ -651,7 +651,7 @@
  protected:
   ZeroHertzFieldTrialEnabler field_trial_enabler_;
   MockCallback callback_;
-  GlobalSimulatedTimeController time_controller_{Timestamp::Millis(0)};
+  GlobalSimulatedTimeController time_controller_{Timestamp::Zero()};
   std::unique_ptr<FrameCadenceAdapterInterface> adapter_{
       CreateAdapter(field_trial_enabler_, time_controller_.GetClock())};
 };
diff --git a/video/receive_statistics_proxy2.cc b/video/receive_statistics_proxy2.cc
index 5f1f635..3448ab5 100644
--- a/video/receive_statistics_proxy2.cc
+++ b/video/receive_statistics_proxy2.cc
@@ -769,10 +769,10 @@
                                             absl::optional<uint8_t> qp,
                                             TimeDelta decode_time,
                                             VideoContentType content_type) {
-  webrtc::TimeDelta processing_delay = webrtc::TimeDelta::Millis(0);
+  TimeDelta processing_delay = TimeDelta::Zero();
   webrtc::Timestamp current_time = clock_->CurrentTime();
   // TODO(bugs.webrtc.org/13984): some tests do not fill packet_infos().
-  webrtc::TimeDelta assembly_time = webrtc::TimeDelta::Millis(0);
+  TimeDelta assembly_time = TimeDelta::Zero();
   if (frame.packet_infos().size() > 0) {
     const auto [first_packet, last_packet] = std::minmax_element(
         frame.packet_infos().cbegin(), frame.packet_infos().cend(),
@@ -803,8 +803,8 @@
     const VideoFrameMetaData& frame_meta,
     absl::optional<uint8_t> qp,
     TimeDelta decode_time,
-    webrtc::TimeDelta processing_delay,
-    webrtc::TimeDelta assembly_time,
+    TimeDelta processing_delay,
+    TimeDelta assembly_time,
     VideoContentType content_type) {
   RTC_DCHECK_RUN_ON(&main_thread_);
 
diff --git a/video/receive_statistics_proxy2.h b/video/receive_statistics_proxy2.h
index 14f3421..19364fe 100644
--- a/video/receive_statistics_proxy2.h
+++ b/video/receive_statistics_proxy2.h
@@ -57,7 +57,7 @@
 
   void OnDecodedFrame(const VideoFrame& frame,
                       absl::optional<uint8_t> qp,
-                      webrtc::TimeDelta decode_time,
+                      TimeDelta decode_time,
                       VideoContentType content_type);
 
   // Called asyncronously on the worker thread as a result of a call to the
@@ -65,9 +65,9 @@
   // the actual decoding happens.
   void OnDecodedFrame(const VideoFrameMetaData& frame_meta,
                       absl::optional<uint8_t> qp,
-                      webrtc::TimeDelta decode_time,
-                      webrtc::TimeDelta processing_delay,
-                      webrtc::TimeDelta assembly_time,
+                      TimeDelta decode_time,
+                      TimeDelta processing_delay,
+                      TimeDelta assembly_time,
                       VideoContentType content_type);
 
   void OnSyncOffsetUpdated(int64_t video_playout_ntp_ms,
diff --git a/video/receive_statistics_proxy2_unittest.cc b/video/receive_statistics_proxy2_unittest.cc
index fa6c096..0ad02fb 100644
--- a/video/receive_statistics_proxy2_unittest.cc
+++ b/video/receive_statistics_proxy2_unittest.cc
@@ -111,8 +111,7 @@
   EXPECT_EQ(0u, statistics_proxy_->GetStats().frames_decoded);
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
   for (uint32_t i = 1; i <= 3; ++i) {
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0),
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                       VideoContentType::UNSPECIFIED);
     EXPECT_EQ(i, FlushAndGetStats().frames_decoded);
   }
@@ -123,8 +122,7 @@
   const int kRequiredSamples = metrics::kMinRunTimeInSeconds * kFps;
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
   for (int i = 0; i < kRequiredSamples; ++i) {
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0),
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                       VideoContentType::UNSPECIFIED);
     fake_clock_.AdvanceTimeMilliseconds(1000 / kFps);
   }
@@ -140,8 +138,7 @@
   const int kRequiredSamples = metrics::kMinRunTimeInSeconds * kFps;
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
   for (int i = 0; i < kRequiredSamples - 1; ++i) {
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0),
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                       VideoContentType::UNSPECIFIED);
     fake_clock_.AdvanceTimeMilliseconds(1000 / kFps);
   }
@@ -154,7 +151,7 @@
        OnDecodedFrameWithQpDoesNotResetFramesDecodedOrTotalDecodeTime) {
   EXPECT_EQ(0u, statistics_proxy_->GetStats().frames_decoded);
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
-  TimeDelta expected_total_decode_time = TimeDelta::Millis(0);
+  TimeDelta expected_total_decode_time = TimeDelta::Zero();
   unsigned int expected_frames_decoded = 0;
   for (uint32_t i = 1; i <= 3; ++i) {
     statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
@@ -183,7 +180,7 @@
   const TimeDelta kProcessingDelay = TimeDelta::Millis(10);
   EXPECT_EQ(0u, statistics_proxy_->GetStats().frames_decoded);
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
-  TimeDelta expected_total_processing_delay = TimeDelta::Millis(0);
+  TimeDelta expected_total_processing_delay = TimeDelta::Zero();
   unsigned int expected_frames_decoded = 0;
   // We set receive time fixed and increase the clock by 10ms
   // in the loop which will increase the processing delay by
@@ -220,7 +217,7 @@
   const TimeDelta kAssemblyTime = TimeDelta::Millis(7);
   EXPECT_EQ(0u, statistics_proxy_->GetStats().frames_decoded);
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
-  TimeDelta expected_total_assembly_time = TimeDelta::Millis(0);
+  TimeDelta expected_total_assembly_time = TimeDelta::Zero();
   unsigned int expected_frames_decoded = 0;
   unsigned int expected_frames_assembled_from_multiple_packets = 0;
 
@@ -285,10 +282,10 @@
 TEST_F(ReceiveStatisticsProxy2Test, OnDecodedFrameIncreasesQpSum) {
   EXPECT_EQ(absl::nullopt, statistics_proxy_->GetStats().qp_sum);
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
-  statistics_proxy_->OnDecodedFrame(frame, 3u, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, 3u, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   EXPECT_EQ(3u, FlushAndGetStats().qp_sum);
-  statistics_proxy_->OnDecodedFrame(frame, 127u, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, 127u, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   EXPECT_EQ(130u, FlushAndGetStats().qp_sum);
 }
@@ -310,11 +307,11 @@
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
   EXPECT_EQ(kRealtimeString, videocontenttypehelpers::ToString(
                                  statistics_proxy_->GetStats().content_type));
-  statistics_proxy_->OnDecodedFrame(frame, 3u, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, 3u, TimeDelta::Zero(),
                                     VideoContentType::SCREENSHARE);
   EXPECT_EQ(kScreenshareString,
             videocontenttypehelpers::ToString(FlushAndGetStats().content_type));
-  statistics_proxy_->OnDecodedFrame(frame, 3u, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, 3u, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   EXPECT_EQ(kRealtimeString,
             videocontenttypehelpers::ToString(FlushAndGetStats().content_type));
@@ -332,7 +329,7 @@
   EXPECT_EQ(expected_total_squared_inter_frame_delay,
             statistics_proxy_->GetStats().total_squared_inter_frame_delay);
 
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   EXPECT_DOUBLE_EQ(expected_total_inter_frame_delay,
                    FlushAndGetStats().total_inter_frame_delay);
@@ -340,7 +337,7 @@
                    FlushAndGetStats().total_squared_inter_frame_delay);
 
   fake_clock_.AdvanceTime(kInterFrameDelay1);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   expected_total_inter_frame_delay += kInterFrameDelay1.seconds<double>();
   expected_total_squared_inter_frame_delay +=
@@ -352,7 +349,7 @@
       statistics_proxy_->GetStats().total_squared_inter_frame_delay);
 
   fake_clock_.AdvanceTime(kInterFrameDelay2);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   expected_total_inter_frame_delay += kInterFrameDelay2.seconds<double>();
   expected_total_squared_inter_frame_delay +=
@@ -364,7 +361,7 @@
       statistics_proxy_->GetStats().total_squared_inter_frame_delay);
 
   fake_clock_.AdvanceTime(kInterFrameDelay3);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   expected_total_inter_frame_delay += kInterFrameDelay3.seconds<double>();
   expected_total_squared_inter_frame_delay +=
@@ -382,22 +379,22 @@
   const int64_t kInterframeDelayMs2 = 200;
   const int64_t kInterframeDelayMs3 = 100;
   EXPECT_EQ(-1, statistics_proxy_->GetStats().interframe_delay_max_ms);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   EXPECT_EQ(-1, FlushAndGetStats().interframe_delay_max_ms);
 
   fake_clock_.AdvanceTimeMilliseconds(kInterframeDelayMs1);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   EXPECT_EQ(kInterframeDelayMs1, FlushAndGetStats().interframe_delay_max_ms);
 
   fake_clock_.AdvanceTimeMilliseconds(kInterframeDelayMs2);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   EXPECT_EQ(kInterframeDelayMs2, FlushAndGetStats().interframe_delay_max_ms);
 
   fake_clock_.AdvanceTimeMilliseconds(kInterframeDelayMs3);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   // kInterframeDelayMs3 is smaller than kInterframeDelayMs2.
   EXPECT_EQ(kInterframeDelayMs2, FlushAndGetStats().interframe_delay_max_ms);
@@ -409,23 +406,23 @@
   const int64_t kInterframeDelayMs2 = 750;
   const int64_t kInterframeDelayMs3 = 700;
   EXPECT_EQ(-1, statistics_proxy_->GetStats().interframe_delay_max_ms);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   EXPECT_EQ(-1, FlushAndGetStats().interframe_delay_max_ms);
 
   fake_clock_.AdvanceTimeMilliseconds(kInterframeDelayMs1);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   EXPECT_EQ(kInterframeDelayMs1, FlushAndGetStats().interframe_delay_max_ms);
 
   fake_clock_.AdvanceTimeMilliseconds(kInterframeDelayMs2);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   // Still first delay is the maximum
   EXPECT_EQ(kInterframeDelayMs1, FlushAndGetStats().interframe_delay_max_ms);
 
   fake_clock_.AdvanceTimeMilliseconds(kInterframeDelayMs3);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   // Now the first sample is out of the window, so the second is the maximum.
   EXPECT_EQ(kInterframeDelayMs2, FlushAndGetStats().interframe_delay_max_ms);
@@ -535,7 +532,7 @@
 TEST_F(ReceiveStatisticsProxy2Test, OnDecodedFrameWithoutQpQpSumWontExist) {
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
   EXPECT_EQ(absl::nullopt, statistics_proxy_->GetStats().qp_sum);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   EXPECT_EQ(absl::nullopt, FlushAndGetStats().qp_sum);
 }
@@ -543,10 +540,10 @@
 TEST_F(ReceiveStatisticsProxy2Test, OnDecodedFrameWithoutQpResetsQpSum) {
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
   EXPECT_EQ(absl::nullopt, statistics_proxy_->GetStats().qp_sum);
-  statistics_proxy_->OnDecodedFrame(frame, 3u, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, 3u, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   EXPECT_EQ(3u, FlushAndGetStats().qp_sum);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
   EXPECT_EQ(absl::nullopt, FlushAndGetStats().qp_sum);
 }
@@ -1017,8 +1014,7 @@
     // Since OnRenderedFrame is never called the fps in each sample will be 0,
     // i.e. bad
     frame.set_ntp_time_ms(fake_clock_.CurrentNtpInMilliseconds());
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0),
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                       VideoContentType::UNSPECIFIED);
     statistics_proxy_->OnRenderedFrame(MetaData(frame));
     fake_clock_.AdvanceTimeMilliseconds(1000 / kDefaultFps);
@@ -1087,7 +1083,7 @@
 
 TEST_F(ReceiveStatisticsProxy2Test, ZeroDelayReportedIfFrameNotDelayed) {
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
 
   // Frame not delayed, delayed frames to render: 0%.
@@ -1108,7 +1104,7 @@
 TEST_F(ReceiveStatisticsProxy2Test,
        DelayedFrameHistogramsAreNotUpdatedIfMinRuntimeHasNotPassed) {
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
 
   // Frame not delayed, delayed frames to render: 0%.
@@ -1129,7 +1125,7 @@
 TEST_F(ReceiveStatisticsProxy2Test,
        DelayedFramesHistogramsAreNotUpdatedIfNoRenderedFrames) {
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
 
   // Min run time has passed. No rendered frames.
@@ -1144,7 +1140,7 @@
 
 TEST_F(ReceiveStatisticsProxy2Test, DelayReportedIfFrameIsDelayed) {
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
 
   // Frame delayed 1 ms, delayed frames to render: 100%.
@@ -1167,7 +1163,7 @@
 
 TEST_F(ReceiveStatisticsProxy2Test, AverageDelayOfDelayedFramesIsReported) {
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     VideoContentType::UNSPECIFIED);
 
   // Two frames delayed (6 ms, 10 ms), delayed frames to render: 50%.
@@ -1319,13 +1315,13 @@
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
 
   for (int i = 0; i < kMinRequiredSamples; ++i) {
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
+                                      content_type_);
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
   }
   // One extra with double the interval.
   fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     content_type_);
 
   FlushAndUpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr);
@@ -1356,18 +1352,18 @@
 
   for (int i = 0; i <= kMinRequiredSamples - kLastFivePercentsSamples; ++i) {
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
+                                      content_type_);
   }
   // Last 5% of intervals are double in size.
   for (int i = 0; i < kLastFivePercentsSamples; ++i) {
     fake_clock_.AdvanceTimeMilliseconds(2 * kInterFrameDelayMs);
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
+                                      content_type_);
   }
   // Final sample is outlier and 10 times as big.
   fake_clock_.AdvanceTimeMilliseconds(10 * kInterFrameDelayMs);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     content_type_);
 
   FlushAndUpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr);
@@ -1390,8 +1386,8 @@
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
 
   for (int i = 0; i < kMinRequiredSamples; ++i) {
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
+                                      content_type_);
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
   }
 
@@ -1414,8 +1410,8 @@
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
 
   for (int i = 0; i <= kMinRequiredSamples; ++i) {
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
+                                      content_type_);
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
   }
 
@@ -1427,10 +1423,10 @@
 
   // Insert two more frames. The interval during the pause should be
   // disregarded in the stats.
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     content_type_);
   fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     content_type_);
 
   FlushAndUpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr);
@@ -1466,18 +1462,18 @@
 
   for (int i = 0; i < kMinRequiredSamples; ++i) {
     VideoFrameMetaData meta = MetaData(frame);
-    statistics_proxy_->OnDecodedFrame(
-        meta, absl::nullopt, TimeDelta::Millis(0), webrtc::TimeDelta::Millis(0),
-        webrtc::TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(meta, absl::nullopt, TimeDelta::Zero(),
+                                      TimeDelta::Zero(), TimeDelta::Zero(),
+                                      content_type_);
     statistics_proxy_->OnRenderedFrame(meta);
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
   }
   // Add extra freeze.
   fake_clock_.AdvanceTimeMilliseconds(kFreezeDelayMs);
   VideoFrameMetaData meta = MetaData(frame);
-  statistics_proxy_->OnDecodedFrame(
-      meta, absl::nullopt, TimeDelta::Millis(0), webrtc::TimeDelta::Millis(0),
-      webrtc::TimeDelta::Millis(0), content_type_);
+  statistics_proxy_->OnDecodedFrame(meta, absl::nullopt, TimeDelta::Zero(),
+                                    TimeDelta::Zero(), TimeDelta::Zero(),
+                                    content_type_);
   statistics_proxy_->OnRenderedFrame(meta);
 
   FlushAndUpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr);
@@ -1515,8 +1511,8 @@
 
   for (int i = 0; i < kMinRequiredSamples; ++i) {
     fake_clock_.AdvanceTimeMilliseconds(kFrameDurationMs);
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
+                                      content_type_);
     statistics_proxy_->OnRenderedFrame(MetaData(frame));
   }
 
@@ -1524,7 +1520,7 @@
   // Add freeze.
   loop_.Flush();
   fake_clock_.AdvanceTimeMilliseconds(kFreezeDurationMs);
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     content_type_);
   statistics_proxy_->OnRenderedFrame(MetaData(frame));
 
@@ -1532,7 +1528,7 @@
   loop_.Flush();
   fake_clock_.AdvanceTimeMilliseconds(kPauseDurationMs);
   statistics_proxy_->OnStreamInactive();
-  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
                                     content_type_);
   statistics_proxy_->OnRenderedFrame(MetaData(frame));
 
@@ -1563,9 +1559,9 @@
 
   for (int i = 0; i <= kMinRequiredSamples; ++i) {
     VideoFrameMetaData meta = MetaData(frame);
-    statistics_proxy_->OnDecodedFrame(
-        meta, absl::nullopt, TimeDelta::Millis(0), webrtc::TimeDelta::Millis(0),
-        webrtc::TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(meta, absl::nullopt, TimeDelta::Zero(),
+                                      TimeDelta::Zero(), TimeDelta::Zero(),
+                                      content_type_);
     statistics_proxy_->OnRenderedFrame(meta);
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
   }
@@ -1575,9 +1571,9 @@
   // Second playback interval with triple the length.
   for (int i = 0; i <= kMinRequiredSamples * 3; ++i) {
     VideoFrameMetaData meta = MetaData(frame);
-    statistics_proxy_->OnDecodedFrame(
-        meta, absl::nullopt, TimeDelta::Millis(0), webrtc::TimeDelta::Millis(0),
-        webrtc::TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(meta, absl::nullopt, TimeDelta::Zero(),
+                                      TimeDelta::Zero(), TimeDelta::Zero(),
+                                      content_type_);
     statistics_proxy_->OnRenderedFrame(meta);
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
   }
@@ -1607,15 +1603,15 @@
   webrtc::VideoFrame frame = CreateFrame(kWidth, kHeight);
 
   for (int i = 0; i <= kMinRequiredSamples; ++i) {
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
+                                      content_type_);
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
 
     statistics_proxy_->OnStreamInactive();
     fake_clock_.AdvanceTimeMilliseconds(kPauseDurationMs);
 
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
+                                      content_type_);
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
   }
 
@@ -1640,18 +1636,18 @@
   // HD frames.
   for (int i = 0; i < kMinRequiredSamples; ++i) {
     VideoFrameMetaData meta = MetaData(frame_hd);
-    statistics_proxy_->OnDecodedFrame(
-        meta, absl::nullopt, TimeDelta::Millis(0), webrtc::TimeDelta::Millis(0),
-        webrtc::TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(meta, absl::nullopt, TimeDelta::Zero(),
+                                      TimeDelta::Zero(), TimeDelta::Zero(),
+                                      content_type_);
     statistics_proxy_->OnRenderedFrame(meta);
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
   }
   // SD frames.
   for (int i = 0; i < 2 * kMinRequiredSamples; ++i) {
     VideoFrameMetaData meta = MetaData(frame_sd);
-    statistics_proxy_->OnDecodedFrame(
-        meta, absl::nullopt, TimeDelta::Millis(0), webrtc::TimeDelta::Millis(0),
-        webrtc::TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(meta, absl::nullopt, TimeDelta::Zero(),
+                                      TimeDelta::Zero(), TimeDelta::Zero(),
+                                      content_type_);
     statistics_proxy_->OnRenderedFrame(meta);
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
   }
@@ -1680,23 +1676,23 @@
   // High quality frames.
   for (int i = 0; i < kMinRequiredSamples; ++i) {
     VideoFrameMetaData meta = MetaData(frame);
-    statistics_proxy_->OnDecodedFrame(
-        meta, kLowQp, TimeDelta::Millis(0), webrtc::TimeDelta::Millis(0),
-        webrtc::TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(meta, kLowQp, TimeDelta::Zero(),
+                                      TimeDelta::Zero(), TimeDelta::Zero(),
+                                      content_type_);
     statistics_proxy_->OnRenderedFrame(meta);
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
   }
   // Blocky frames.
   for (int i = 0; i < 2 * kMinRequiredSamples; ++i) {
     VideoFrameMetaData meta = MetaData(frame);
-    statistics_proxy_->OnDecodedFrame(
-        meta, kHighQp, TimeDelta::Millis(0), webrtc::TimeDelta::Millis(0),
-        webrtc::TimeDelta::Millis(0), content_type_);
+    statistics_proxy_->OnDecodedFrame(meta, kHighQp, TimeDelta::Zero(),
+                                      TimeDelta::Zero(), TimeDelta::Zero(),
+                                      content_type_);
     statistics_proxy_->OnRenderedFrame(meta);
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs);
   }
   // Extra last frame.
-  statistics_proxy_->OnDecodedFrame(frame, kHighQp, TimeDelta::Millis(0),
+  statistics_proxy_->OnDecodedFrame(frame, kHighQp, TimeDelta::Zero(),
                                     content_type_);
   statistics_proxy_->OnRenderedFrame(MetaData(frame));
 
@@ -1722,8 +1718,8 @@
   webrtc::VideoFrame frame_ld = CreateFrame(320, 180);
 
   // Call once to pass content type.
-  statistics_proxy_->OnDecodedFrame(frame_hd, absl::nullopt,
-                                    TimeDelta::Millis(0), content_type_);
+  statistics_proxy_->OnDecodedFrame(frame_hd, absl::nullopt, TimeDelta::Zero(),
+                                    content_type_);
 
   loop_.Flush();
   statistics_proxy_->OnRenderedFrame(MetaData(frame_hd));
@@ -1781,15 +1777,15 @@
   videocontenttypehelpers::SetSimulcastId(&content_type, 1);
   for (int i = 0; i <= kMinRequiredSamples; ++i) {
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs1);
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0), content_type);
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
+                                      content_type);
   }
 
   videocontenttypehelpers::SetSimulcastId(&content_type, 2);
   for (int i = 0; i <= kMinRequiredSamples; ++i) {
     fake_clock_.AdvanceTimeMilliseconds(kInterFrameDelayMs2);
-    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt,
-                                      TimeDelta::Millis(0), content_type);
+    statistics_proxy_->OnDecodedFrame(frame, absl::nullopt, TimeDelta::Zero(),
+                                      content_type);
   }
   FlushAndUpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr);
 
diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc
index 190c1d7..2f8278b 100644
--- a/video/video_stream_encoder_unittest.cc
+++ b/video/video_stream_encoder_unittest.cc
@@ -746,7 +746,7 @@
   };
 
   test::ScopedKeyValueConfig field_trials_;
-  GlobalSimulatedTimeController time_controller_{Timestamp::Millis(0)};
+  GlobalSimulatedTimeController time_controller_{Timestamp::Zero()};
   std::unique_ptr<TaskQueueFactory> task_queue_factory_{
       time_controller_.CreateTaskQueueFactory()};
   std::unique_ptr<MockableSendStatisticsProxy> stats_proxy_ =
@@ -9116,7 +9116,7 @@
 
   // Lots of boiler plate.
   test::ScopedKeyValueConfig field_trials;
-  GlobalSimulatedTimeController time_controller(Timestamp::Millis(0));
+  GlobalSimulatedTimeController time_controller(Timestamp::Zero());
   auto stats_proxy = std::make_unique<MockableSendStatisticsProxy>(
       time_controller.GetClock(), VideoSendStream::Config(nullptr),
       webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, field_trials);