Delete struct rtc::PacketTime.

Replaced by a int64_t representing time in us. To aid transition of
downstream code, rtc::PacketTime is made an alias for int64_t.

Bug: webrtc:9584
Change-Id: Ic3a5ee87d6de2aad7712894906dab074f1443df9
Reviewed-on: https://webrtc-review.googlesource.com/c/91860
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25503}
diff --git a/media/base/fakemediaengine.h b/media/base/fakemediaengine.h
index acd3faa..32f6123 100644
--- a/media/base/fakemediaengine.h
+++ b/media/base/fakemediaengine.h
@@ -269,11 +269,11 @@
     recv_rtcp_parameters_ = params;
   }
   virtual void OnPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                                const rtc::PacketTime& packet_time) {
+                                int64_t packet_time_us) {
     rtp_packets_.push_back(std::string(packet->data<char>(), packet->size()));
   }
   virtual void OnRtcpReceived(rtc::CopyOnWriteBuffer* packet,
-                              const rtc::PacketTime& packet_time) {
+                              int64_t packet_time_us) {
     rtcp_packets_.push_back(std::string(packet->data<char>(), packet->size()));
   }
   virtual void OnReadyToSend(bool ready) { ready_to_send_ = ready; }
diff --git a/media/base/mediachannel.h b/media/base/mediachannel.h
index fefb993..69c7b00 100644
--- a/media/base/mediachannel.h
+++ b/media/base/mediachannel.h
@@ -194,10 +194,10 @@
                             webrtc::MediaTransportInterface* media_transport);
   // Called when a RTP packet is received.
   virtual void OnPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                                const rtc::PacketTime& packet_time) = 0;
+                                int64_t packet_time_us) = 0;
   // Called when a RTCP packet is received.
   virtual void OnRtcpReceived(rtc::CopyOnWriteBuffer* packet,
-                              const rtc::PacketTime& packet_time) = 0;
+                              int64_t packet_time_us) = 0;
   // Called when the socket's ability to send has changed.
   virtual void OnReadyToSend(bool ready) = 0;
   // Called when the network route used for sending packets changed.
diff --git a/media/base/rtpdataengine.cc b/media/base/rtpdataengine.cc
index 87c3668..c3367c0 100644
--- a/media/base/rtpdataengine.cc
+++ b/media/base/rtpdataengine.cc
@@ -194,7 +194,7 @@
 }
 
 void RtpDataMediaChannel::OnPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                                           const rtc::PacketTime& packet_time) {
+                                           int64_t /* packet_time_us */) {
   RtpHeader header;
   if (!GetRtpHeader(packet->cdata(), packet->size(), &header)) {
     return;
diff --git a/media/base/rtpdataengine.h b/media/base/rtpdataengine.h
index 966d0c8..42e9190 100644
--- a/media/base/rtpdataengine.h
+++ b/media/base/rtpdataengine.h
@@ -82,9 +82,9 @@
     return true;
   }
   virtual void OnPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                                const rtc::PacketTime& packet_time);
+                                int64_t packet_time_us);
   virtual void OnRtcpReceived(rtc::CopyOnWriteBuffer* packet,
-                              const rtc::PacketTime& packet_time) {}
+                              int64_t packet_time_us) {}
   virtual void OnReadyToSend(bool ready) {}
   virtual bool SendData(const SendDataParams& params,
                         const rtc::CopyOnWriteBuffer& payload,
diff --git a/media/base/rtpdataengine_unittest.cc b/media/base/rtpdataengine_unittest.cc
index a636ea4..9b8e10b 100644
--- a/media/base/rtpdataengine_unittest.cc
+++ b/media/base/rtpdataengine_unittest.cc
@@ -317,13 +317,13 @@
   std::unique_ptr<cricket::RtpDataMediaChannel> dmc(CreateChannel());
 
   // SetReceived not called.
-  dmc->OnPacketReceived(&packet, rtc::PacketTime());
+  dmc->OnPacketReceived(&packet, /* packet_time_us */ -1);
   EXPECT_FALSE(HasReceivedData());
 
   dmc->SetReceive(true);
 
   // Unknown payload id
-  dmc->OnPacketReceived(&packet, rtc::PacketTime());
+  dmc->OnPacketReceived(&packet, /* packet_time_us */ -1);
   EXPECT_FALSE(HasReceivedData());
 
   cricket::DataCodec codec;
@@ -334,7 +334,7 @@
   ASSERT_TRUE(dmc->SetRecvParameters(parameters));
 
   // Unknown stream
-  dmc->OnPacketReceived(&packet, rtc::PacketTime());
+  dmc->OnPacketReceived(&packet, /* packet_time_us */ -1);
   EXPECT_FALSE(HasReceivedData());
 
   cricket::StreamParams stream;
@@ -342,7 +342,7 @@
   ASSERT_TRUE(dmc->AddRecvStream(stream));
 
   // Finally works!
-  dmc->OnPacketReceived(&packet, rtc::PacketTime());
+  dmc->OnPacketReceived(&packet, /* packet_time_us */ -1);
   EXPECT_TRUE(HasReceivedData());
   EXPECT_EQ("abcde", GetReceivedData());
   EXPECT_EQ(5U, GetReceivedDataLen());
@@ -355,6 +355,6 @@
   std::unique_ptr<cricket::RtpDataMediaChannel> dmc(CreateChannel());
 
   // Too short
-  dmc->OnPacketReceived(&packet, rtc::PacketTime());
+  dmc->OnPacketReceived(&packet, /* packet_time_us */ -1);
   EXPECT_FALSE(HasReceivedData());
 }
diff --git a/media/engine/webrtcvideoengine.cc b/media/engine/webrtcvideoengine.cc
index e376667..4994ec0 100644
--- a/media/engine/webrtcvideoengine.cc
+++ b/media/engine/webrtcvideoengine.cc
@@ -1376,10 +1376,10 @@
 }
 
 void WebRtcVideoChannel::OnPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                                          const rtc::PacketTime& packet_time) {
+                                          int64_t packet_time_us) {
   const webrtc::PacketReceiver::DeliveryStatus delivery_result =
       call_->Receiver()->DeliverPacket(webrtc::MediaType::VIDEO, *packet,
-                                       packet_time);
+                                       packet_time_us);
   switch (delivery_result) {
     case webrtc::PacketReceiver::DELIVERY_OK:
       return;
@@ -1427,7 +1427,7 @@
   }
 
   if (call_->Receiver()->DeliverPacket(webrtc::MediaType::VIDEO, *packet,
-                                       packet_time) !=
+                                       packet_time_us) !=
       webrtc::PacketReceiver::DELIVERY_OK) {
     RTC_LOG(LS_WARNING) << "Failed to deliver RTP packet on re-delivery.";
     return;
@@ -1435,13 +1435,13 @@
 }
 
 void WebRtcVideoChannel::OnRtcpReceived(rtc::CopyOnWriteBuffer* packet,
-                                        const rtc::PacketTime& packet_time) {
+                                        int64_t packet_time_us) {
   // TODO(pbos): Check webrtc::PacketReceiver::DELIVERY_OK once we deliver
   // for both audio and video on the same path. Since BundleFilter doesn't
   // filter RTCP anymore incoming RTCP packets could've been going to audio (so
   // logging failures spam the log).
   call_->Receiver()->DeliverPacket(webrtc::MediaType::VIDEO, *packet,
-                                   packet_time);
+                                   packet_time_us);
 }
 
 void WebRtcVideoChannel::OnReadyToSend(bool ready) {
diff --git a/media/engine/webrtcvideoengine.h b/media/engine/webrtcvideoengine.h
index 083fc9f..1ad086f 100644
--- a/media/engine/webrtcvideoengine.h
+++ b/media/engine/webrtcvideoengine.h
@@ -150,9 +150,9 @@
   bool GetStats(VideoMediaInfo* info) override;
 
   void OnPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                        const rtc::PacketTime& packet_time) override;
+                        int64_t packet_time_us) override;
   void OnRtcpReceived(rtc::CopyOnWriteBuffer* packet,
-                      const rtc::PacketTime& packet_time) override;
+                      int64_t packet_time_us) override;
   void OnReadyToSend(bool ready) override;
   void OnNetworkRouteChanged(const std::string& transport_name,
                              const rtc::NetworkRoute& network_route) override;
diff --git a/media/engine/webrtcvideoengine_unittest.cc b/media/engine/webrtcvideoengine_unittest.cc
index 36a0e14..6e25360 100644
--- a/media/engine/webrtcvideoengine_unittest.cc
+++ b/media/engine/webrtcvideoengine_unittest.cc
@@ -1725,7 +1725,7 @@
   EXPECT_TRUE(SetDefaultCodec());
   EXPECT_TRUE(SetSend(true));
   EXPECT_EQ(0, renderer_.num_rendered_frames());
-  channel_->OnPacketReceived(&packet1, rtc::PacketTime());
+  channel_->OnPacketReceived(&packet1, /* packet_time_us */ -1);
   EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_));
   EXPECT_TRUE(SendFrame());
   EXPECT_FRAME_WAIT(1, kVideoWidth, kVideoHeight, kTimeout);
@@ -4984,8 +4984,7 @@
   memset(data, 0, sizeof(data));
   rtc::SetBE32(&data[8], ssrcs[0]);
   rtc::CopyOnWriteBuffer packet(data, kDataLength);
-  rtc::PacketTime packet_time;
-  channel_->OnPacketReceived(&packet, packet_time);
+  channel_->OnPacketReceived(&packet, /* packet_time_us */ -1);
 
   ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size())
       << "No default receive stream created.";
@@ -5143,8 +5142,7 @@
   memset(data, 0, sizeof(data));
   rtc::SetBE32(&data[8], kIncomingUnsignalledSsrc);
   rtc::CopyOnWriteBuffer packet(data, kDataLength);
-  rtc::PacketTime packet_time;
-  channel_->OnPacketReceived(&packet, packet_time);
+  channel_->OnPacketReceived(&packet, /* packet_time_us */ -1);
 
   // The stream should now be created with the appropriate sync label.
   EXPECT_EQ(1u, fake_call_->GetVideoReceiveStreams().size());
@@ -5157,7 +5155,7 @@
   ASSERT_TRUE(channel_->RemoveRecvStream(kIncomingUnsignalledSsrc));
   EXPECT_EQ(0u, fake_call_->GetVideoReceiveStreams().size());
 
-  channel_->OnPacketReceived(&packet, packet_time);
+  channel_->OnPacketReceived(&packet, /* packet_time_us */ -1);
   EXPECT_EQ(1u, fake_call_->GetVideoReceiveStreams().size());
   EXPECT_TRUE(
       fake_call_->GetVideoReceiveStreams()[0]->GetConfig().sync_group.empty());
@@ -5183,8 +5181,7 @@
   rtc::Set8(data, 1, payload_type);
   rtc::SetBE32(&data[8], kIncomingUnsignalledSsrc);
   rtc::CopyOnWriteBuffer packet(data, kDataLength);
-  rtc::PacketTime packet_time;
-  channel_->OnPacketReceived(&packet, packet_time);
+  channel_->OnPacketReceived(&packet, /* packet_time_us */ -1);
 
   if (expect_created_receive_stream) {
     EXPECT_EQ(1u, fake_call_->GetVideoReceiveStreams().size())
@@ -5271,8 +5268,7 @@
   rtpHeader.ssrc = kIncomingUnsignalledSsrc + 1;
   cricket::SetRtpHeader(data, sizeof(data), rtpHeader);
   rtc::CopyOnWriteBuffer packet(data, sizeof(data));
-  rtc::PacketTime packet_time;
-  channel_->OnPacketReceived(&packet, packet_time);
+  channel_->OnPacketReceived(&packet, /* packet_time_us */ -1);
   // VP8 packet should create default receive stream.
   ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size());
   FakeVideoReceiveStream* recv_stream = fake_call_->GetVideoReceiveStreams()[0];
@@ -5288,7 +5284,7 @@
   rtpHeader.ssrc = kIncomingUnsignalledSsrc + 2;
   cricket::SetRtpHeader(data, sizeof(data), rtpHeader);
   rtc::CopyOnWriteBuffer packet2(data, sizeof(data));
-  channel_->OnPacketReceived(&packet2, packet_time);
+  channel_->OnPacketReceived(&packet2, /* packet_time_us */ -1);
   // VP9 packet should replace the default receive SSRC.
   ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size());
   recv_stream = fake_call_->GetVideoReceiveStreams()[0];
@@ -5305,7 +5301,7 @@
   rtpHeader.ssrc = kIncomingUnsignalledSsrc + 3;
   cricket::SetRtpHeader(data, sizeof(data), rtpHeader);
   rtc::CopyOnWriteBuffer packet3(data, sizeof(data));
-  channel_->OnPacketReceived(&packet3, packet_time);
+  channel_->OnPacketReceived(&packet3, /* packet_time_us */ -1);
   // H264 packet should replace the default receive SSRC.
   ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size());
   recv_stream = fake_call_->GetVideoReceiveStreams()[0];
@@ -5339,8 +5335,7 @@
   rtp_header.ssrc = kSsrcs3[0];
   cricket::SetRtpHeader(data, sizeof(data), rtp_header);
   rtc::CopyOnWriteBuffer packet(data, sizeof(data));
-  rtc::PacketTime packet_time;
-  channel_->OnPacketReceived(&packet, packet_time);
+  channel_->OnPacketReceived(&packet, /* packet_time_us */ -1);
   // Default receive stream should be created.
   ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size());
   FakeVideoReceiveStream* recv_stream0 =
@@ -5358,7 +5353,7 @@
   rtp_header.ssrc = kSsrcs3[1];
   cricket::SetRtpHeader(data, sizeof(data), rtp_header);
   packet.SetData(data, sizeof(data));
-  channel_->OnPacketReceived(&packet, packet_time);
+  channel_->OnPacketReceived(&packet, /* packet_time_us */ -1);
   // New default receive stream should be created, but old stream should remain.
   ASSERT_EQ(2u, fake_call_->GetVideoReceiveStreams().size());
   EXPECT_EQ(recv_stream0, fake_call_->GetVideoReceiveStreams()[0]);
@@ -6695,8 +6690,7 @@
   rtpHeader.ssrc = kIncomingUnsignalledSsrc;
   cricket::SetRtpHeader(data, sizeof(data), rtpHeader);
   rtc::CopyOnWriteBuffer packet(data, sizeof(data));
-  rtc::PacketTime packet_time;
-  channel_->OnPacketReceived(&packet, packet_time);
+  channel_->OnPacketReceived(&packet, /* packet_time_us */ -1);
 
   // The |ssrc| member should still be unset.
   rtp_parameters = channel_->GetRtpReceiveParameters(0);
diff --git a/media/engine/webrtcvoiceengine.cc b/media/engine/webrtcvoiceengine.cc
index f63eb3e..b753a42 100644
--- a/media/engine/webrtcvoiceengine.cc
+++ b/media/engine/webrtcvoiceengine.cc
@@ -2029,14 +2029,14 @@
                                         event, duration);
 }
 
-void WebRtcVoiceMediaChannel::OnPacketReceived(
-    rtc::CopyOnWriteBuffer* packet,
-    const rtc::PacketTime& packet_time) {
+void WebRtcVoiceMediaChannel::OnPacketReceived(rtc::CopyOnWriteBuffer* packet,
+                                               int64_t packet_time_us) {
   RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
 
   webrtc::PacketReceiver::DeliveryStatus delivery_result =
       call_->Receiver()->DeliverPacket(webrtc::MediaType::AUDIO, *packet,
-                                       packet_time);
+                                       packet_time_us);
+
   if (delivery_result != webrtc::PacketReceiver::DELIVERY_UNKNOWN_SSRC) {
     return;
   }
@@ -2089,18 +2089,17 @@
   }
 
   delivery_result = call_->Receiver()->DeliverPacket(webrtc::MediaType::AUDIO,
-                                                     *packet, packet_time);
+                                                     *packet, packet_time_us);
   RTC_DCHECK_NE(webrtc::PacketReceiver::DELIVERY_UNKNOWN_SSRC, delivery_result);
 }
 
-void WebRtcVoiceMediaChannel::OnRtcpReceived(
-    rtc::CopyOnWriteBuffer* packet,
-    const rtc::PacketTime& packet_time) {
+void WebRtcVoiceMediaChannel::OnRtcpReceived(rtc::CopyOnWriteBuffer* packet,
+                                             int64_t packet_time_us) {
   RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
 
   // Forward packet to Call as well.
   call_->Receiver()->DeliverPacket(webrtc::MediaType::AUDIO, *packet,
-                                   packet_time);
+                                   packet_time_us);
 }
 
 void WebRtcVoiceMediaChannel::OnNetworkRouteChanged(
diff --git a/media/engine/webrtcvoiceengine.h b/media/engine/webrtcvoiceengine.h
index 3c26dbb..d8eff15 100644
--- a/media/engine/webrtcvoiceengine.h
+++ b/media/engine/webrtcvoiceengine.h
@@ -194,9 +194,9 @@
   bool InsertDtmf(uint32_t ssrc, int event, int duration) override;
 
   void OnPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                        const rtc::PacketTime& packet_time) override;
+                        int64_t packet_time_us) override;
   void OnRtcpReceived(rtc::CopyOnWriteBuffer* packet,
-                      const rtc::PacketTime& packet_time) override;
+                      int64_t packet_time_us) override;
   void OnNetworkRouteChanged(const std::string& transport_name,
                              const rtc::NetworkRoute& network_route) override;
   void OnReadyToSend(bool ready) override;
diff --git a/media/engine/webrtcvoiceengine_unittest.cc b/media/engine/webrtcvoiceengine_unittest.cc
index 00e552d..e24f185 100644
--- a/media/engine/webrtcvoiceengine_unittest.cc
+++ b/media/engine/webrtcvoiceengine_unittest.cc
@@ -255,7 +255,7 @@
 
   void DeliverPacket(const void* data, int len) {
     rtc::CopyOnWriteBuffer packet(reinterpret_cast<const uint8_t*>(data), len);
-    channel_->OnPacketReceived(&packet, rtc::PacketTime());
+    channel_->OnPacketReceived(&packet, /* packet_time_us */ -1);
   }
 
   void TearDown() override { delete channel_; }
@@ -3281,9 +3281,9 @@
   const cricket::FakeAudioReceiveStream* s =
       call_.GetAudioReceiveStream(kAudioSsrc);
   EXPECT_EQ(0, s->received_packets());
-  channel_->OnPacketReceived(&kPcmuPacket, rtc::PacketTime());
+  channel_->OnPacketReceived(&kPcmuPacket, /* packet_time_us */ -1);
   EXPECT_EQ(1, s->received_packets());
-  channel_->OnRtcpReceived(&kRtcpPacket, rtc::PacketTime());
+  channel_->OnRtcpReceived(&kRtcpPacket, /* packet_time_us */ -1);
   EXPECT_EQ(2, s->received_packets());
 }
 
diff --git a/media/sctp/sctptransport.cc b/media/sctp/sctptransport.cc
index a8b945a..4ffaaf7 100644
--- a/media/sctp/sctptransport.cc
+++ b/media/sctp/sctptransport.cc
@@ -858,7 +858,7 @@
 void SctpTransport::OnPacketRead(rtc::PacketTransportInternal* transport,
                                  const char* data,
                                  size_t len,
-                                 const rtc::PacketTime& packet_time,
+                                 const int64_t& /* packet_time_us */,
                                  int flags) {
   RTC_DCHECK_RUN_ON(network_thread_);
   RTC_DCHECK_EQ(transport_, transport);
diff --git a/media/sctp/sctptransport.h b/media/sctp/sctptransport.h
index bd302bb..5c2a750 100644
--- a/media/sctp/sctptransport.h
+++ b/media/sctp/sctptransport.h
@@ -113,7 +113,7 @@
   virtual void OnPacketRead(rtc::PacketTransportInternal* transport,
                             const char* data,
                             size_t len,
-                            const rtc::PacketTime& packet_time,
+                            const int64_t& packet_time_us,
                             int flags);
 
   // Methods related to usrsctp callbacks.
diff --git a/p2p/base/asyncstuntcpsocket_unittest.cc b/p2p/base/asyncstuntcpsocket_unittest.cc
index de95419..b5fa14e 100644
--- a/p2p/base/asyncstuntcpsocket_unittest.cc
+++ b/p2p/base/asyncstuntcpsocket_unittest.cc
@@ -81,7 +81,7 @@
                     const char* data,
                     size_t len,
                     const rtc::SocketAddress& remote_addr,
-                    const rtc::PacketTime& packet_time) {
+                    const int64_t& /* packet_time_us */) {
     recv_packets_.push_back(std::string(data, len));
   }
 
diff --git a/p2p/base/dtlstransport.cc b/p2p/base/dtlstransport.cc
index 9b74c1c..e88c061 100644
--- a/p2p/base/dtlstransport.cc
+++ b/p2p/base/dtlstransport.cc
@@ -535,7 +535,7 @@
 void DtlsTransport::OnReadPacket(rtc::PacketTransportInternal* transport,
                                  const char* data,
                                  size_t size,
-                                 const rtc::PacketTime& packet_time,
+                                 const int64_t& packet_time_us,
                                  int flags) {
   RTC_DCHECK_RUN_ON(&thread_checker_);
   RTC_DCHECK(transport == ice_transport_);
@@ -543,7 +543,7 @@
 
   if (!dtls_active_) {
     // Not doing DTLS.
-    SignalReadPacket(this, data, size, packet_time, 0);
+    SignalReadPacket(this, data, size, packet_time_us, 0);
     return;
   }
 
@@ -606,7 +606,7 @@
         RTC_DCHECK(!srtp_ciphers_.empty());
 
         // Signal this upwards as a bypass packet.
-        SignalReadPacket(this, data, size, packet_time, PF_SRTP_BYPASS);
+        SignalReadPacket(this, data, size, packet_time_us, PF_SRTP_BYPASS);
       }
       break;
     case DTLS_TRANSPORT_FAILED:
diff --git a/p2p/base/dtlstransport.h b/p2p/base/dtlstransport.h
index 2eafc9e..2dd470e 100644
--- a/p2p/base/dtlstransport.h
+++ b/p2p/base/dtlstransport.h
@@ -197,7 +197,7 @@
   void OnReadPacket(rtc::PacketTransportInternal* transport,
                     const char* data,
                     size_t size,
-                    const rtc::PacketTime& packet_time,
+                    const int64_t& packet_time_us,
                     int flags);
   void OnSentPacket(rtc::PacketTransportInternal* transport,
                     const rtc::SentPacket& sent_packet);
diff --git a/p2p/base/dtlstransport_unittest.cc b/p2p/base/dtlstransport_unittest.cc
index e60a3a5..05a9b4b 100644
--- a/p2p/base/dtlstransport_unittest.cc
+++ b/p2p/base/dtlstransport_unittest.cc
@@ -232,7 +232,7 @@
   void OnTransportReadPacket(rtc::PacketTransportInternal* transport,
                              const char* data,
                              size_t size,
-                             const rtc::PacketTime& packet_time,
+                             const int64_t& /* packet_time_us */,
                              int flags) {
     uint32_t packet_num = 0;
     ASSERT_TRUE(VerifyPacket(data, size, &packet_num));
@@ -254,7 +254,7 @@
   void OnFakeIceTransportReadPacket(rtc::PacketTransportInternal* transport,
                                     const char* data,
                                     size_t size,
-                                    const rtc::PacketTime& time,
+                                    const int64_t& /* packet_time_us */,
                                     int flags) {
     // Flags shouldn't be set on the underlying Transport packets.
     ASSERT_EQ(0, flags);
diff --git a/p2p/base/fakedtlstransport.h b/p2p/base/fakedtlstransport.h
index e336b08..daef5c7 100644
--- a/p2p/base/fakedtlstransport.h
+++ b/p2p/base/fakedtlstransport.h
@@ -238,9 +238,9 @@
   void OnIceTransportReadPacket(PacketTransportInternal* ice_,
                                 const char* data,
                                 size_t len,
-                                const rtc::PacketTime& time,
+                                const int64_t& packet_time_us,
                                 int flags) {
-    SignalReadPacket(this, data, len, time, flags);
+    SignalReadPacket(this, data, len, packet_time_us, flags);
   }
 
   void set_receiving(bool receiving) {
diff --git a/p2p/base/p2ptransportchannel.cc b/p2p/base/p2ptransportchannel.cc
index b5de0e6..f61291c 100644
--- a/p2p/base/p2ptransportchannel.cc
+++ b/p2p/base/p2ptransportchannel.cc
@@ -2365,7 +2365,7 @@
 void P2PTransportChannel::OnReadPacket(Connection* connection,
                                        const char* data,
                                        size_t len,
-                                       const rtc::PacketTime& packet_time) {
+                                       int64_t packet_time_us) {
   RTC_DCHECK(network_thread_ == rtc::Thread::Current());
 
   // Do not deliver, if packet doesn't belong to the correct transport channel.
@@ -2373,7 +2373,7 @@
     return;
 
   // Let the client know of an incoming packet
-  SignalReadPacket(this, data, len, packet_time, 0);
+  SignalReadPacket(this, data, len, packet_time_us, 0);
 
   // May need to switch the sending connection based on the receiving media path
   // if this is the controlled side.
diff --git a/p2p/base/p2ptransportchannel.h b/p2p/base/p2ptransportchannel.h
index fd59bbd..abedd0b 100644
--- a/p2p/base/p2ptransportchannel.h
+++ b/p2p/base/p2ptransportchannel.h
@@ -304,7 +304,7 @@
   void OnReadPacket(Connection* connection,
                     const char* data,
                     size_t len,
-                    const rtc::PacketTime& packet_time);
+                    int64_t packet_time_us);
   void OnSentPacket(const rtc::SentPacket& sent_packet);
   void OnReadyToSend(Connection* connection);
   void OnConnectionDestroyed(Connection* connection);
diff --git a/p2p/base/p2ptransportchannel_unittest.cc b/p2p/base/p2ptransportchannel_unittest.cc
index 99151cb..2ab3d88 100644
--- a/p2p/base/p2ptransportchannel_unittest.cc
+++ b/p2p/base/p2ptransportchannel_unittest.cc
@@ -810,7 +810,7 @@
   void OnReadPacket(rtc::PacketTransportInternal* transport,
                     const char* data,
                     size_t len,
-                    const rtc::PacketTime& packet_time,
+                    const int64_t& /* packet_time_us */,
                     int flags) {
     std::list<std::string>& packets = GetPacketList(transport);
     packets.push_front(std::string(data, len));
diff --git a/p2p/base/packettransportinternal.h b/p2p/base/packettransportinternal.h
index 3cdacbc..7d50f9c 100644
--- a/p2p/base/packettransportinternal.h
+++ b/p2p/base/packettransportinternal.h
@@ -26,7 +26,6 @@
 
 namespace rtc {
 struct PacketOptions;
-struct PacketTime;
 struct SentPacket;
 
 class RTC_EXPORT PacketTransportInternal
@@ -87,7 +86,9 @@
   sigslot::signal5<PacketTransportInternal*,
                    const char*,
                    size_t,
-                   const rtc::PacketTime&,
+                   // TODO(bugs.webrtc.org/9584): Change to passing the int64_t
+                   // timestamp by value.
+                   const int64_t&,
                    int>
       SignalReadPacket;
 
diff --git a/p2p/base/port.cc b/p2p/base/port.cc
index 6a1c7b2..b00983a 100644
--- a/p2p/base/port.cc
+++ b/p2p/base/port.cc
@@ -773,7 +773,7 @@
                                 const char* data,
                                 size_t size,
                                 const rtc::SocketAddress& remote_addr,
-                                const rtc::PacketTime& packet_time) {
+                                int64_t packet_time_us) {
   RTC_NOTREACHED();
   return false;
 }
@@ -1236,7 +1236,7 @@
 
 void Connection::OnReadPacket(const char* data,
                               size_t size,
-                              const rtc::PacketTime& packet_time) {
+                              int64_t packet_time_us) {
   std::unique_ptr<IceMessage> msg;
   std::string remote_ufrag;
   const rtc::SocketAddress& addr(remote_candidate_.address());
@@ -1246,7 +1246,7 @@
     last_data_received_ = rtc::TimeMillis();
     UpdateReceiving(last_data_received_);
     recv_rate_tracker_.AddSamples(size);
-    SignalReadPacket(this, data, size, packet_time);
+    SignalReadPacket(this, data, size, packet_time_us);
 
     // If timed out sending writability checks, start up again
     if (!pruned_ && (write_state_ == STATE_WRITE_TIMEOUT)) {
diff --git a/p2p/base/port.h b/p2p/base/port.h
index be273bd..25a1cf7 100644
--- a/p2p/base/port.h
+++ b/p2p/base/port.h
@@ -306,7 +306,7 @@
                                     const char* data,
                                     size_t size,
                                     const rtc::SocketAddress& remote_addr,
-                                    const rtc::PacketTime& packet_time);
+                                    int64_t packet_time_us);
 
   // Shall the port handle packet from this |remote_addr|.
   // This method is overridden by TurnPort.
@@ -579,15 +579,12 @@
   // Error if Send() returns < 0
   virtual int GetError() = 0;
 
-  sigslot::signal4<Connection*, const char*, size_t, const rtc::PacketTime&>
-      SignalReadPacket;
+  sigslot::signal4<Connection*, const char*, size_t, int64_t> SignalReadPacket;
 
   sigslot::signal1<Connection*> SignalReadyToSend;
 
   // Called when a packet is received on this connection.
-  void OnReadPacket(const char* data,
-                    size_t size,
-                    const rtc::PacketTime& packet_time);
+  void OnReadPacket(const char* data, size_t size, int64_t packet_time_us);
 
   // Called when the socket is currently able to send.
   void OnReadyToSend();
diff --git a/p2p/base/port_unittest.cc b/p2p/base/port_unittest.cc
index 3aa1d52..7192942 100644
--- a/p2p/base/port_unittest.cc
+++ b/p2p/base/port_unittest.cc
@@ -232,12 +232,12 @@
   ASSERT_TRUE_WAIT(lport->last_stun_msg(), kDefaultTimeout);
   ASSERT_TRUE(lport->last_stun_buf());
   rconn->OnReadPacket(lport->last_stun_buf()->data<char>(),
-                      lport->last_stun_buf()->size(), rtc::PacketTime());
+                      lport->last_stun_buf()->size(), /* packet_time_us */ -1);
   clock->AdvanceTime(webrtc::TimeDelta::ms(ms));
   ASSERT_TRUE_WAIT(rport->last_stun_msg(), kDefaultTimeout);
   ASSERT_TRUE(rport->last_stun_buf());
   lconn->OnReadPacket(rport->last_stun_buf()->data<char>(),
-                      rport->last_stun_buf()->size(), rtc::PacketTime());
+                      rport->last_stun_buf()->size(), /* packet_time_us */ -1);
 }
 
 class TestChannel : public sigslot::has_slots<> {
@@ -1387,7 +1387,7 @@
   IceMessage* msg = lport->last_stun_msg();
   EXPECT_EQ(STUN_BINDING_REQUEST, msg->type());
   conn->OnReadPacket(lport->last_stun_buf()->data<char>(),
-                     lport->last_stun_buf()->size(), rtc::PacketTime());
+                     lport->last_stun_buf()->size(), /* packet_time_us */ -1);
   ASSERT_TRUE_WAIT(lport->last_stun_msg() != NULL, kDefaultTimeout);
   msg = lport->last_stun_msg();
   EXPECT_EQ(STUN_BINDING_RESPONSE, msg->type());
@@ -1420,7 +1420,7 @@
   lport->Reset();
   auto buf = absl::make_unique<ByteBufferWriter>();
   WriteStunMessage(*modified_req, buf.get());
-  conn1->OnReadPacket(buf->Data(), buf->Length(), rtc::PacketTime());
+  conn1->OnReadPacket(buf->Data(), buf->Length(), /* packet_time_us */ -1);
   ASSERT_TRUE_WAIT(lport->last_stun_msg() != NULL, kDefaultTimeout);
   msg = lport->last_stun_msg();
   EXPECT_EQ(STUN_BINDING_ERROR_RESPONSE, msg->type());
@@ -1454,7 +1454,7 @@
   EXPECT_EQ(STUN_BINDING_REQUEST, msg->type());
   // Send rport binding request to lport.
   lconn->OnReadPacket(rport->last_stun_buf()->data<char>(),
-                      rport->last_stun_buf()->size(), rtc::PacketTime());
+                      rport->last_stun_buf()->size(), /* packet_time_us */ -1);
 
   ASSERT_TRUE_WAIT(lport->last_stun_msg() != NULL, kDefaultTimeout);
   EXPECT_EQ(STUN_BINDING_RESPONSE, lport->last_stun_msg()->type());
@@ -1683,13 +1683,13 @@
 
   // Receive the BINDING-REQUEST and respond with BINDING-RESPONSE.
   rconn->OnReadPacket(lport->last_stun_buf()->data<char>(),
-                      lport->last_stun_buf()->size(), rtc::PacketTime());
+                      lport->last_stun_buf()->size(), /* packet_time_us */ -1);
   msg = rport->last_stun_msg();
   ASSERT_TRUE(msg != NULL);
   EXPECT_EQ(STUN_BINDING_RESPONSE, msg->type());
   // Received a BINDING-RESPONSE.
   lconn->OnReadPacket(rport->last_stun_buf()->data<char>(),
-                      rport->last_stun_buf()->size(), rtc::PacketTime());
+                      rport->last_stun_buf()->size(), /* packet_time_us */ -1);
   // Verify the STUN Stats.
   EXPECT_EQ(1U, lconn->stats().sent_ping_requests_total);
   EXPECT_EQ(1U, lconn->stats().sent_ping_requests_before_first_response);
@@ -1769,11 +1769,11 @@
   // Respond with a BINDING-RESPONSE.
   request = CopyStunMessage(*msg);
   lconn->OnReadPacket(rport->last_stun_buf()->data<char>(),
-                      rport->last_stun_buf()->size(), rtc::PacketTime());
+                      rport->last_stun_buf()->size(), /* packet_time_us */ -1);
   msg = lport->last_stun_msg();
   // Receive the BINDING-RESPONSE.
   rconn->OnReadPacket(lport->last_stun_buf()->data<char>(),
-                      lport->last_stun_buf()->size(), rtc::PacketTime());
+                      lport->last_stun_buf()->size(), /* packet_time_us */ -1);
 
   // Verify the Stun ping stats.
   EXPECT_EQ(3U, rconn->stats().sent_ping_requests_total);
@@ -1825,7 +1825,7 @@
   ASSERT_TRUE_WAIT(lport->last_stun_msg(), kDefaultTimeout);
   ASSERT_TRUE(lport->last_stun_buf());
   rconn->OnReadPacket(lport->last_stun_buf()->data<char>(),
-                      lport->last_stun_buf()->size(), rtc::PacketTime());
+                      lport->last_stun_buf()->size(), /* packet_time_us */ -1);
   EXPECT_EQ(nomination, rconn->remote_nomination());
   EXPECT_FALSE(lconn->nominated());
   EXPECT_TRUE(rconn->nominated());
@@ -1837,7 +1837,7 @@
   ASSERT_TRUE_WAIT(rport->last_stun_msg(), kDefaultTimeout);
   ASSERT_TRUE(rport->last_stun_buf());
   lconn->OnReadPacket(rport->last_stun_buf()->data<char>(),
-                      rport->last_stun_buf()->size(), rtc::PacketTime());
+                      rport->last_stun_buf()->size(), /* packet_time_us */ -1);
   EXPECT_EQ(nomination, lconn->acked_nomination());
   EXPECT_TRUE(lconn->nominated());
   EXPECT_TRUE(rconn->nominated());
@@ -1964,7 +1964,7 @@
   EXPECT_EQ(STUN_BINDING_REQUEST, msg->type());
   // Pass the binding request to rport.
   rconn->OnReadPacket(lport->last_stun_buf()->data<char>(),
-                      lport->last_stun_buf()->size(), rtc::PacketTime());
+                      lport->last_stun_buf()->size(), /* packet_time_us */ -1);
   // Wait until rport sends the response and then check the remote network cost.
   ASSERT_TRUE_WAIT(rport->last_stun_msg() != NULL, kDefaultTimeout);
   EXPECT_EQ(rtc::kNetworkCostHigh, rconn->remote_candidate().network_cost());
@@ -2276,7 +2276,7 @@
   EXPECT_EQ(STUN_BINDING_REQUEST, msg->type());
   // Send rport binding request to lport.
   lconn->OnReadPacket(rport->last_stun_buf()->data<char>(),
-                      rport->last_stun_buf()->size(), rtc::PacketTime());
+                      rport->last_stun_buf()->size(), /* packet_time_us */ -1);
   ASSERT_TRUE_WAIT(lport->last_stun_msg() != NULL, kDefaultTimeout);
   EXPECT_EQ(STUN_BINDING_RESPONSE, lport->last_stun_msg()->type());
   int64_t last_ping_received1 = lconn->last_ping_received();
@@ -2284,7 +2284,7 @@
   // Adding a delay of 100ms.
   rtc::Thread::Current()->ProcessMessages(100);
   // Pinging lconn using stun indication message.
-  lconn->OnReadPacket(buf->Data(), buf->Length(), rtc::PacketTime());
+  lconn->OnReadPacket(buf->Data(), buf->Length(), /* packet_time_us */ -1);
   int64_t last_ping_received2 = lconn->last_ping_received();
   EXPECT_GT(last_ping_received2, last_ping_received1);
 }
@@ -2716,7 +2716,7 @@
   // Feeding the respone message from litemode to the full mode connection.
   ch1.conn()->OnReadPacket(ice_lite_port->last_stun_buf()->data<char>(),
                            ice_lite_port->last_stun_buf()->size(),
-                           rtc::PacketTime());
+                           /* packet_time_us */ -1);
   // Verifying full mode connection becomes writable from the response.
   EXPECT_EQ_WAIT(Connection::STATE_WRITABLE, ch1.conn()->write_state(),
                  kDefaultTimeout);
diff --git a/p2p/base/relayport.cc b/p2p/base/relayport.cc
index fb830ce..b1b924b 100644
--- a/p2p/base/relayport.cc
+++ b/p2p/base/relayport.cc
@@ -139,7 +139,7 @@
                     const char* data,
                     size_t size,
                     const rtc::SocketAddress& remote_addr,
-                    const rtc::PacketTime& packet_time);
+                    const int64_t& packet_time_us);
 
   void OnSentPacket(rtc::AsyncPacketSocket* socket,
                     const rtc::SentPacket& sent_packet);
@@ -397,9 +397,9 @@
                              size_t size,
                              const rtc::SocketAddress& remote_addr,
                              ProtocolType proto,
-                             const rtc::PacketTime& packet_time) {
+                             int64_t packet_time_us) {
   if (Connection* conn = GetConnection(remote_addr)) {
-    conn->OnReadPacket(data, size, packet_time);
+    conn->OnReadPacket(data, size, packet_time_us);
   } else {
     Port::OnReadPacket(data, size, remote_addr, proto);
   }
@@ -686,7 +686,7 @@
                               const char* data,
                               size_t size,
                               const rtc::SocketAddress& remote_addr,
-                              const rtc::PacketTime& packet_time) {
+                              const int64_t& packet_time_us) {
   // RTC_DCHECK(remote_addr == port_->server_addr());
   // TODO(?): are we worried about this?
 
@@ -700,7 +700,7 @@
   // by the server,  The actual remote address is the one we recorded.
   if (!port_->HasMagicCookie(data, size)) {
     if (locked_) {
-      port_->OnReadPacket(data, size, ext_addr_, PROTO_UDP, packet_time);
+      port_->OnReadPacket(data, size, ext_addr_, PROTO_UDP, packet_time_us);
     } else {
       RTC_LOG(WARNING) << "Dropping packet: entry not locked";
     }
@@ -753,7 +753,7 @@
 
   // Process the actual data and remote address in the normal manner.
   port_->OnReadPacket(data_attr->bytes(), data_attr->length(), remote_addr2,
-                      PROTO_UDP, packet_time);
+                      PROTO_UDP, packet_time_us);
 }
 
 void RelayEntry::OnSentPacket(rtc::AsyncPacketSocket* socket,
diff --git a/p2p/base/relayport.h b/p2p/base/relayport.h
index d45636f..5989f76 100644
--- a/p2p/base/relayport.h
+++ b/p2p/base/relayport.h
@@ -95,7 +95,7 @@
                     size_t size,
                     const rtc::SocketAddress& remote_addr,
                     ProtocolType proto,
-                    const rtc::PacketTime& packet_time);
+                    int64_t packet_time_us);
 
   // The OnSentPacket callback is left empty here since they are handled by
   // RelayEntry.
diff --git a/p2p/base/relayport_unittest.cc b/p2p/base/relayport_unittest.cc
index e6e922f..1ca69f4 100644
--- a/p2p/base/relayport_unittest.cc
+++ b/p2p/base/relayport_unittest.cc
@@ -62,10 +62,10 @@
   }
 
   void OnReadPacket(rtc::AsyncPacketSocket* socket,
-                    const char* data,
-                    size_t size,
-                    const rtc::SocketAddress& remote_addr,
-                    const rtc::PacketTime& packet_time) {
+                    const char* /* data */,
+                    size_t /* size */,
+                    const rtc::SocketAddress& /* remote_addr */,
+                    const int64_t& /* packet_time_us */) {
     received_packet_count_[socket]++;
   }
 
diff --git a/p2p/base/relayserver.cc b/p2p/base/relayserver.cc
index 5fd9698..ad6b487 100644
--- a/p2p/base/relayserver.cc
+++ b/p2p/base/relayserver.cc
@@ -187,7 +187,7 @@
                                    const char* bytes,
                                    size_t size,
                                    const rtc::SocketAddress& remote_addr,
-                                   const rtc::PacketTime& packet_time) {
+                                   const int64_t& /* packet_time_us */) {
   // Get the address of the connection we just received on.
   rtc::SocketAddressPair ap(remote_addr, socket->GetLocalAddress());
   RTC_DCHECK(!ap.destination().IsNil());
@@ -232,7 +232,7 @@
                                    const char* bytes,
                                    size_t size,
                                    const rtc::SocketAddress& remote_addr,
-                                   const rtc::PacketTime& packet_time) {
+                                   const int64_t& /* packet_time_us */) {
   // Get the address of the connection we just received on.
   rtc::SocketAddressPair ap(remote_addr, socket->GetLocalAddress());
   RTC_DCHECK(!ap.destination().IsNil());
diff --git a/p2p/base/relayserver.h b/p2p/base/relayserver.h
index b7e81c3..5ba5e06 100644
--- a/p2p/base/relayserver.h
+++ b/p2p/base/relayserver.h
@@ -83,12 +83,12 @@
                         const char* bytes,
                         size_t size,
                         const rtc::SocketAddress& remote_addr,
-                        const rtc::PacketTime& packet_time);
+                        const int64_t& packet_time_us);
   void OnExternalPacket(rtc::AsyncPacketSocket* socket,
                         const char* bytes,
                         size_t size,
                         const rtc::SocketAddress& remote_addr,
-                        const rtc::PacketTime& packet_time);
+                        const int64_t& packet_time_us);
 
   void OnReadEvent(rtc::AsyncSocket* socket);
 
diff --git a/p2p/base/stunport.cc b/p2p/base/stunport.cc
index e09351e..00ecca2 100644
--- a/p2p/base/stunport.cc
+++ b/p2p/base/stunport.cc
@@ -319,9 +319,9 @@
                                    const char* data,
                                    size_t size,
                                    const rtc::SocketAddress& remote_addr,
-                                   const rtc::PacketTime& packet_time) {
+                                   int64_t packet_time_us) {
   // All packets given to UDP port will be consumed.
-  OnReadPacket(socket, data, size, remote_addr, packet_time);
+  OnReadPacket(socket, data, size, remote_addr, packet_time_us);
   return true;
 }
 
@@ -362,7 +362,7 @@
                            const char* data,
                            size_t size,
                            const rtc::SocketAddress& remote_addr,
-                           const rtc::PacketTime& packet_time) {
+                           const int64_t& packet_time_us) {
   RTC_DCHECK(socket == socket_);
   RTC_DCHECK(!remote_addr.IsUnresolvedIP());
 
@@ -376,7 +376,7 @@
   }
 
   if (Connection* conn = GetConnection(remote_addr)) {
-    conn->OnReadPacket(data, size, packet_time);
+    conn->OnReadPacket(data, size, packet_time_us);
   } else {
     Port::OnReadPacket(data, size, remote_addr, PROTO_UDP);
   }
diff --git a/p2p/base/stunport.h b/p2p/base/stunport.h
index 9c90ed9..dc9f0e3 100644
--- a/p2p/base/stunport.h
+++ b/p2p/base/stunport.h
@@ -104,7 +104,7 @@
                             const char* data,
                             size_t size,
                             const rtc::SocketAddress& remote_addr,
-                            const rtc::PacketTime& packet_time) override;
+                            int64_t packet_time_us) override;
 
   bool SupportsProtocol(const std::string& protocol) const override;
   ProtocolType GetProtocol() const override;
@@ -161,9 +161,10 @@
   void OnLocalAddressReady(rtc::AsyncPacketSocket* socket,
                            const rtc::SocketAddress& address);
   void OnReadPacket(rtc::AsyncPacketSocket* socket,
-                    const char* data, size_t size,
+                    const char* data,
+                    size_t size,
                     const rtc::SocketAddress& remote_addr,
-                    const rtc::PacketTime& packet_time);
+                    const int64_t& packet_time_us);
 
   void OnSentPacket(rtc::AsyncPacketSocket* socket,
                     const rtc::SentPacket& sent_packet) override;
diff --git a/p2p/base/stunport_unittest.cc b/p2p/base/stunport_unittest.cc
index 8cf10d5..727e80a 100644
--- a/p2p/base/stunport_unittest.cc
+++ b/p2p/base/stunport_unittest.cc
@@ -119,15 +119,15 @@
                     const char* data,
                     size_t size,
                     const rtc::SocketAddress& remote_addr,
-                    const rtc::PacketTime& packet_time) {
+                    const int64_t& /* packet_time_us */) {
     stun_port_->HandleIncomingPacket(socket, data, size, remote_addr,
-                                     rtc::PacketTime());
+                                     /* packet_time_us */ -1);
   }
 
   void SendData(const char* data, size_t len) {
     stun_port_->HandleIncomingPacket(socket_.get(), data, len,
                                      rtc::SocketAddress("22.22.22.22", 0),
-                                     rtc::PacketTime());
+                                     /* packet_time_us */ -1);
   }
 
  protected:
diff --git a/p2p/base/stunserver.cc b/p2p/base/stunserver.cc
index 00eacf1..95f0ceb 100644
--- a/p2p/base/stunserver.cc
+++ b/p2p/base/stunserver.cc
@@ -29,7 +29,7 @@
                           const char* buf,
                           size_t size,
                           const rtc::SocketAddress& remote_addr,
-                          const rtc::PacketTime& packet_time) {
+                          const int64_t& /* packet_time_us */) {
   // Parse the STUN message; eat any messages that fail to parse.
   rtc::ByteBufferReader bbuf(buf, size);
   StunMessage msg;
diff --git a/p2p/base/stunserver.h b/p2p/base/stunserver.h
index 9016d06..0061d38 100644
--- a/p2p/base/stunserver.h
+++ b/p2p/base/stunserver.h
@@ -33,7 +33,7 @@
                 const char* buf,
                 size_t size,
                 const rtc::SocketAddress& remote_addr,
-                const rtc::PacketTime& packet_time);
+                const int64_t& packet_time_us);
 
   // Handlers for the different types of STUN/TURN requests:
   virtual void OnBindingRequest(StunMessage* msg,
diff --git a/p2p/base/tcpport.cc b/p2p/base/tcpport.cc
index d070f6e..e018ea7 100644
--- a/p2p/base/tcpport.cc
+++ b/p2p/base/tcpport.cc
@@ -307,7 +307,7 @@
                            const char* data,
                            size_t size,
                            const rtc::SocketAddress& remote_addr,
-                           const rtc::PacketTime& packet_time) {
+                           const int64_t& packet_time_us) {
   Port::OnReadPacket(data, size, remote_addr, PROTO_TCP);
 }
 
@@ -535,9 +535,9 @@
                                  const char* data,
                                  size_t size,
                                  const rtc::SocketAddress& remote_addr,
-                                 const rtc::PacketTime& packet_time) {
+                                 const int64_t& packet_time_us) {
   RTC_DCHECK(socket == socket_.get());
-  Connection::OnReadPacket(data, size, packet_time);
+  Connection::OnReadPacket(data, size, packet_time_us);
 }
 
 void TCPConnection::OnReadyToSend(rtc::AsyncPacketSocket* socket) {
diff --git a/p2p/base/tcpport.h b/p2p/base/tcpport.h
index 3982370..4d06a65 100644
--- a/p2p/base/tcpport.h
+++ b/p2p/base/tcpport.h
@@ -94,7 +94,7 @@
                     const char* data,
                     size_t size,
                     const rtc::SocketAddress& remote_addr,
-                    const rtc::PacketTime& packet_time);
+                    const int64_t& packet_time_us);
 
   void OnSentPacket(rtc::AsyncPacketSocket* socket,
                     const rtc::SentPacket& sent_packet) override;
@@ -162,7 +162,7 @@
                     const char* data,
                     size_t size,
                     const rtc::SocketAddress& remote_addr,
-                    const rtc::PacketTime& packet_time);
+                    const int64_t& packet_time_us);
   void OnReadyToSend(rtc::AsyncPacketSocket* socket);
 
   std::unique_ptr<rtc::AsyncPacketSocket> socket_;
diff --git a/p2p/base/turnport.cc b/p2p/base/turnport.cc
index 43cefc4..eb0adfa 100644
--- a/p2p/base/turnport.cc
+++ b/p2p/base/turnport.cc
@@ -622,7 +622,7 @@
                                     const char* data,
                                     size_t size,
                                     const rtc::SocketAddress& remote_addr,
-                                    const rtc::PacketTime& packet_time) {
+                                    int64_t packet_time_us) {
   if (socket != socket_) {
     // The packet was received on a shared socket after we've allocated a new
     // socket for this TURN port.
@@ -659,12 +659,12 @@
   // a response to a previous request.
   uint16_t msg_type = rtc::GetBE16(data);
   if (IsTurnChannelData(msg_type)) {
-    HandleChannelData(msg_type, data, size, packet_time);
+    HandleChannelData(msg_type, data, size, packet_time_us);
     return true;
   }
 
   if (msg_type == TURN_DATA_INDICATION) {
-    HandleDataIndication(data, size, packet_time);
+    HandleDataIndication(data, size, packet_time_us);
     return true;
   }
 
@@ -695,8 +695,8 @@
                             const char* data,
                             size_t size,
                             const rtc::SocketAddress& remote_addr,
-                            const rtc::PacketTime& packet_time) {
-  HandleIncomingPacket(socket, data, size, remote_addr, packet_time);
+                            const int64_t& packet_time_us) {
+  HandleIncomingPacket(socket, data, size, remote_addr, packet_time_us);
 }
 
 void TurnPort::OnSentPacket(rtc::AsyncPacketSocket* socket,
@@ -932,7 +932,7 @@
 
 void TurnPort::HandleDataIndication(const char* data,
                                     size_t size,
-                                    const rtc::PacketTime& packet_time) {
+                                    int64_t packet_time_us) {
   // Read in the message, and process according to RFC5766, Section 10.4.
   rtc::ByteBufferReader buf(data, size);
   TurnMessage msg;
@@ -971,13 +971,13 @@
   }
 
   DispatchPacket(data_attr->bytes(), data_attr->length(), ext_addr, PROTO_UDP,
-                 packet_time);
+                 packet_time_us);
 }
 
 void TurnPort::HandleChannelData(int channel_id,
                                  const char* data,
                                  size_t size,
-                                 const rtc::PacketTime& packet_time) {
+                                 int64_t packet_time_us) {
   // Read the message, and process according to RFC5766, Section 11.6.
   //    0                   1                   2                   3
   //    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
@@ -1013,16 +1013,16 @@
   }
 
   DispatchPacket(data + TURN_CHANNEL_HEADER_SIZE, len, entry->address(),
-                 PROTO_UDP, packet_time);
+                 PROTO_UDP, packet_time_us);
 }
 
 void TurnPort::DispatchPacket(const char* data,
                               size_t size,
                               const rtc::SocketAddress& remote_addr,
                               ProtocolType proto,
-                              const rtc::PacketTime& packet_time) {
+                              int64_t packet_time_us) {
   if (Connection* conn = GetConnection(remote_addr)) {
-    conn->OnReadPacket(data, size, packet_time);
+    conn->OnReadPacket(data, size, packet_time_us);
   } else {
     Port::OnReadPacket(data, size, remote_addr, proto);
   }
diff --git a/p2p/base/turnport.h b/p2p/base/turnport.h
index f3f77a0..5db1956 100644
--- a/p2p/base/turnport.h
+++ b/p2p/base/turnport.h
@@ -175,13 +175,14 @@
                             const char* data,
                             size_t size,
                             const rtc::SocketAddress& remote_addr,
-                            const rtc::PacketTime& packet_time) override;
+                            int64_t packet_time_us) override;
   bool CanHandleIncomingPacketsFrom(
       const rtc::SocketAddress& addr) const override;
   virtual void OnReadPacket(rtc::AsyncPacketSocket* socket,
-                            const char* data, size_t size,
+                            const char* data,
+                            size_t size,
                             const rtc::SocketAddress& remote_addr,
-                            const rtc::PacketTime& packet_time);
+                            const int64_t& packet_time_us);
 
   void OnSentPacket(rtc::AsyncPacketSocket* socket,
                     const rtc::SentPacket& sent_packet) override;
@@ -313,13 +314,18 @@
   void OnAllocateError();
   void OnAllocateRequestTimeout();
 
-  void HandleDataIndication(const char* data, size_t size,
-                            const rtc::PacketTime& packet_time);
-  void HandleChannelData(int channel_id, const char* data, size_t size,
-                         const rtc::PacketTime& packet_time);
-  void DispatchPacket(const char* data, size_t size,
-      const rtc::SocketAddress& remote_addr,
-      ProtocolType proto, const rtc::PacketTime& packet_time);
+  void HandleDataIndication(const char* data,
+                            size_t size,
+                            int64_t packet_time_us);
+  void HandleChannelData(int channel_id,
+                         const char* data,
+                         size_t size,
+                         int64_t packet_time_us);
+  void DispatchPacket(const char* data,
+                      size_t size,
+                      const rtc::SocketAddress& remote_addr,
+                      ProtocolType proto,
+                      int64_t packet_time_us);
 
   bool ScheduleRefresh(uint32_t lifetime);
   void SendRequest(StunRequest* request, int delay);
diff --git a/p2p/base/turnport_unittest.cc b/p2p/base/turnport_unittest.cc
index 6100dbe..617e779 100644
--- a/p2p/base/turnport_unittest.cc
+++ b/p2p/base/turnport_unittest.cc
@@ -194,23 +194,23 @@
   void OnTurnReadPacket(Connection* conn,
                         const char* data,
                         size_t size,
-                        const rtc::PacketTime& packet_time) {
+                        int64_t packet_time_us) {
     turn_packets_.push_back(rtc::Buffer(data, size));
   }
   void OnUdpPortComplete(Port* port) { udp_ready_ = true; }
   void OnUdpReadPacket(Connection* conn,
                        const char* data,
                        size_t size,
-                       const rtc::PacketTime& packet_time) {
+                       int64_t packet_time_us) {
     udp_packets_.push_back(rtc::Buffer(data, size));
   }
   void OnSocketReadPacket(rtc::AsyncPacketSocket* socket,
                           const char* data,
                           size_t size,
                           const rtc::SocketAddress& remote_addr,
-                          const rtc::PacketTime& packet_time) {
+                          const int64_t& packet_time_us) {
     turn_port_->HandleIncomingPacket(socket, data, size, remote_addr,
-                                     packet_time);
+                                     packet_time_us);
   }
   void OnTurnPortClosed(TurnPort* port) { turn_port_closed_ = true; }
   void OnTurnPortDestroyed(PortInterface* port) { turn_port_destroyed_ = true; }
diff --git a/p2p/base/turnserver.cc b/p2p/base/turnserver.cc
index 99ca80a..a8bb41c 100644
--- a/p2p/base/turnserver.cc
+++ b/p2p/base/turnserver.cc
@@ -198,9 +198,10 @@
 }
 
 void TurnServer::OnInternalPacket(rtc::AsyncPacketSocket* socket,
-                                  const char* data, size_t size,
+                                  const char* data,
+                                  size_t size,
                                   const rtc::SocketAddress& addr,
-                                  const rtc::PacketTime& packet_time) {
+                                  const int64_t& /* packet_time_us */) {
   RTC_DCHECK(thread_checker_.CalledOnValidThread());
   // Fail if the packet is too small to even contain a channel header.
   if (size < TURN_CHANNEL_HEADER_SIZE) {
@@ -841,9 +842,10 @@
 
 void TurnServerAllocation::OnExternalPacket(
     rtc::AsyncPacketSocket* socket,
-    const char* data, size_t size,
+    const char* data,
+    size_t size,
     const rtc::SocketAddress& addr,
-    const rtc::PacketTime& packet_time) {
+    const int64_t& /* packet_time_us */) {
   RTC_DCHECK(external_socket_.get() == socket);
   Channel* channel = FindChannel(addr);
   if (channel) {
diff --git a/p2p/base/turnserver.h b/p2p/base/turnserver.h
index e7f886c..af51251 100644
--- a/p2p/base/turnserver.h
+++ b/p2p/base/turnserver.h
@@ -105,9 +105,10 @@
   void HandleChannelBindRequest(const TurnMessage* msg);
 
   void OnExternalPacket(rtc::AsyncPacketSocket* socket,
-                        const char* data, size_t size,
+                        const char* data,
+                        size_t size,
                         const rtc::SocketAddress& addr,
-                        const rtc::PacketTime& packet_time);
+                        const int64_t& packet_time_us);
 
   static int ComputeLifetime(const TurnMessage* msg);
   bool HasPermission(const rtc::IPAddress& addr);
@@ -256,9 +257,11 @@
 
  private:
   std::string GenerateNonce(int64_t now) const;
-  void OnInternalPacket(rtc::AsyncPacketSocket* socket, const char* data,
-                        size_t size, const rtc::SocketAddress& address,
-                        const rtc::PacketTime& packet_time);
+  void OnInternalPacket(rtc::AsyncPacketSocket* socket,
+                        const char* data,
+                        size_t size,
+                        const rtc::SocketAddress& address,
+                        const int64_t& packet_time_us);
 
   void OnNewInternalConnection(rtc::AsyncSocket* socket);
 
diff --git a/p2p/base/udptransport.cc b/p2p/base/udptransport.cc
index c21e5b8..d60d89c 100644
--- a/p2p/base/udptransport.cc
+++ b/p2p/base/udptransport.cc
@@ -119,9 +119,9 @@
                                       const char* data,
                                       size_t len,
                                       const rtc::SocketAddress& remote_addr,
-                                      const rtc::PacketTime& packet_time) {
+                                      const int64_t& packet_time_us) {
   // No thread_checker in high frequency network function.
-  SignalReadPacket(this, data, len, packet_time, 0);
+  SignalReadPacket(this, data, len, packet_time_us, 0);
 }
 
 void UdpTransport::OnSocketSentPacket(rtc::AsyncPacketSocket* socket,
diff --git a/p2p/base/udptransport.h b/p2p/base/udptransport.h
index 06a795f..f215ca3 100644
--- a/p2p/base/udptransport.h
+++ b/p2p/base/udptransport.h
@@ -22,7 +22,6 @@
 
 namespace rtc {
 class AsyncPacketSocket;
-struct PacketTime;
 struct SentPacket;
 class SocketAddress;
 }  // namespace rtc
@@ -71,7 +70,7 @@
                           const char* data,
                           size_t len,
                           const rtc::SocketAddress& remote_addr,
-                          const rtc::PacketTime& packet_time);
+                          const int64_t& packet_time_us);
   void OnSocketSentPacket(rtc::AsyncPacketSocket* socket,
                           const rtc::SentPacket& packet);
   bool IsLocalConsistent();
diff --git a/p2p/base/udptransport_unittest.cc b/p2p/base/udptransport_unittest.cc
index ead3665..92f2732 100644
--- a/p2p/base/udptransport_unittest.cc
+++ b/p2p/base/udptransport_unittest.cc
@@ -88,7 +88,7 @@
     void OnReadPacket(rtc::PacketTransportInternal* transport,
                       const char* data,
                       size_t len,
-                      const rtc::PacketTime& packet_time,
+                      const int64_t& /* packet_time_us */,
                       int flags) {
       num_received_packets_++;
       RTC_LOG(LS_VERBOSE) << "OnReadPacket (unittest)";
diff --git a/p2p/client/basicportallocator.cc b/p2p/client/basicportallocator.cc
index a83df39..39895df 100644
--- a/p2p/client/basicportallocator.cc
+++ b/p2p/client/basicportallocator.cc
@@ -1580,7 +1580,7 @@
                                       const char* data,
                                       size_t size,
                                       const rtc::SocketAddress& remote_addr,
-                                      const rtc::PacketTime& packet_time) {
+                                      const int64_t& packet_time_us) {
   RTC_DCHECK(socket == udp_socket_.get());
 
   bool turn_port_found = false;
@@ -1594,7 +1594,7 @@
   for (auto* port : relay_ports_) {
     if (port->CanHandleIncomingPacketsFrom(remote_addr)) {
       if (port->HandleIncomingPacket(socket, data, size, remote_addr,
-                                     packet_time)) {
+                                     packet_time_us)) {
         return;
       }
       turn_port_found = true;
@@ -1610,7 +1610,7 @@
         stun_servers.find(remote_addr) != stun_servers.end()) {
       RTC_DCHECK(udp_port_->SharedSocket());
       udp_port_->HandleIncomingPacket(socket, data, size, remote_addr,
-                                      packet_time);
+                                      packet_time_us);
     }
   }
 }
diff --git a/p2p/client/basicportallocator.h b/p2p/client/basicportallocator.h
index fd47bbb..1012d92 100644
--- a/p2p/client/basicportallocator.h
+++ b/p2p/client/basicportallocator.h
@@ -384,7 +384,7 @@
                     const char* data,
                     size_t size,
                     const rtc::SocketAddress& remote_addr,
-                    const rtc::PacketTime& packet_time);
+                    const int64_t& packet_time_us);
 
   void OnPortDestroyed(PortInterface* port);
 
diff --git a/p2p/stunprober/stunprober.cc b/p2p/stunprober/stunprober.cc
index 51506b6..9778416 100644
--- a/p2p/stunprober/stunprober.cc
+++ b/p2p/stunprober/stunprober.cc
@@ -77,7 +77,7 @@
                               const char* buf,
                               size_t size,
                               const rtc::SocketAddress& addr,
-                              const rtc::PacketTime& time);
+                              const int64_t& packet_time_us);
 
   const std::vector<Request*>& requests() { return requests_; }
 
@@ -204,7 +204,7 @@
     const char* buf,
     size_t size,
     const rtc::SocketAddress& addr,
-    const rtc::PacketTime& time) {
+    const int64_t& /* packet_time_us */) {
   RTC_DCHECK(thread_checker_.CalledOnValidThread());
   RTC_DCHECK(socket_);
   Request* request = GetRequestByAddress(addr.ipaddr());
diff --git a/pc/channel.cc b/pc/channel.cc
index 6a16eb3..50fa567 100644
--- a/pc/channel.cc
+++ b/pc/channel.cc
@@ -442,12 +442,12 @@
   // RtpPacketReceived.arrival_time_ms = (PacketTime + 500) / 1000;
   // Note: The |not_before| field is always 0 here. This field is not currently
   // used, so it should be fine.
-  int64_t timestamp = -1;
+  int64_t timestamp_us = -1;
   if (parsed_packet.arrival_time_ms() > 0) {
-    timestamp = parsed_packet.arrival_time_ms() * 1000;
+    timestamp_us = parsed_packet.arrival_time_ms() * 1000;
   }
 
-  OnPacketReceived(/*rtcp=*/false, parsed_packet.Buffer(), timestamp);
+  OnPacketReceived(/*rtcp=*/false, parsed_packet.Buffer(), timestamp_us);
 }
 
 void BaseChannel::UpdateRtpHeaderExtensionMap(
@@ -474,13 +474,13 @@
 }
 
 void BaseChannel::OnRtcpPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                                       const rtc::PacketTime& packet_time) {
-  OnPacketReceived(/*rtcp=*/true, *packet, packet_time);
+                                       int64_t packet_time_us) {
+  OnPacketReceived(/*rtcp=*/true, *packet, packet_time_us);
 }
 
 void BaseChannel::OnPacketReceived(bool rtcp,
                                    const rtc::CopyOnWriteBuffer& packet,
-                                   const rtc::PacketTime& packet_time) {
+                                   int64_t packet_time_us) {
   if (!has_received_packet_ && !rtcp) {
     has_received_packet_ = true;
     signaling_thread()->Post(RTC_FROM_HERE, this, MSG_FIRSTPACKETRECEIVED);
@@ -506,21 +506,21 @@
 
   invoker_.AsyncInvoke<void>(
       RTC_FROM_HERE, worker_thread_,
-      Bind(&BaseChannel::ProcessPacket, this, rtcp, packet, packet_time));
+      Bind(&BaseChannel::ProcessPacket, this, rtcp, packet, packet_time_us));
 }
 
 void BaseChannel::ProcessPacket(bool rtcp,
                                 const rtc::CopyOnWriteBuffer& packet,
-                                const rtc::PacketTime& packet_time) {
+                                int64_t packet_time_us) {
   RTC_DCHECK(worker_thread_->IsCurrent());
 
   // Need to copy variable because OnRtcpReceived/OnPacketReceived
   // requires non-const pointer to buffer. This doesn't memcpy the actual data.
   rtc::CopyOnWriteBuffer data(packet);
   if (rtcp) {
-    media_channel_->OnRtcpReceived(&data, packet_time);
+    media_channel_->OnRtcpReceived(&data, packet_time_us);
   } else {
-    media_channel_->OnPacketReceived(&data, packet_time);
+    media_channel_->OnPacketReceived(&data, packet_time_us);
   }
 }
 
diff --git a/pc/channel.h b/pc/channel.h
index 8e38cd8..65d6480 100644
--- a/pc/channel.h
+++ b/pc/channel.h
@@ -232,14 +232,14 @@
                   const rtc::PacketOptions& options);
 
   void OnRtcpPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                            const rtc::PacketTime& packet_time);
+                            int64_t packet_time_us);
 
   void OnPacketReceived(bool rtcp,
                         const rtc::CopyOnWriteBuffer& packet,
-                        const rtc::PacketTime& packet_time);
+                        int64_t packet_time_us);
   void ProcessPacket(bool rtcp,
                      const rtc::CopyOnWriteBuffer& packet,
-                     const rtc::PacketTime& packet_time);
+                     int64_t packet_time_us);
 
   void EnableMedia_w();
   void DisableMedia_w();
diff --git a/pc/jseptransport_unittest.cc b/pc/jseptransport_unittest.cc
index b8265de..e518301 100644
--- a/pc/jseptransport_unittest.cc
+++ b/pc/jseptransport_unittest.cc
@@ -1051,7 +1051,7 @@
   void OnReadPacket1(rtc::PacketTransportInternal* transport,
                      const char* data,
                      size_t size,
-                     const rtc::PacketTime& time,
+                     const int64_t& /* packet_time_us */,
                      int flags) {
     RTC_LOG(LS_INFO) << "JsepTransport 1 Received a packet.";
     CompareHeaderExtensions(
@@ -1064,7 +1064,7 @@
   void OnReadPacket2(rtc::PacketTransportInternal* transport,
                      const char* data,
                      size_t size,
-                     const rtc::PacketTime& time,
+                     const int64_t& /* packet_time_us */,
                      int flags) {
     RTC_LOG(LS_INFO) << "JsepTransport 2 Received a packet.";
     CompareHeaderExtensions(
diff --git a/pc/rtptransport.cc b/pc/rtptransport.cc
index c510359..4a57301 100644
--- a/pc/rtptransport.cc
+++ b/pc/rtptransport.cc
@@ -187,7 +187,7 @@
 }
 
 void RtpTransport::DemuxPacket(rtc::CopyOnWriteBuffer* packet,
-                               const rtc::PacketTime& time) {
+                               int64_t packet_time_us) {
   webrtc::RtpPacketReceived parsed_packet(&header_extension_map_);
   if (!parsed_packet.Parse(std::move(*packet))) {
     RTC_LOG(LS_ERROR)
@@ -195,8 +195,8 @@
     return;
   }
 
-  if (time != -1) {
-    parsed_packet.set_arrival_time_ms((time + 500) / 1000);
+  if (packet_time_us != -1) {
+    parsed_packet.set_arrival_time_ms((packet_time_us + 500) / 1000);
   }
   rtp_demuxer_.OnRtpPacket(parsed_packet);
 }
@@ -236,19 +236,19 @@
 }
 
 void RtpTransport::OnRtpPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                                       const rtc::PacketTime& packet_time) {
-  DemuxPacket(packet, packet_time);
+                                       int64_t packet_time_us) {
+  DemuxPacket(packet, packet_time_us);
 }
 
 void RtpTransport::OnRtcpPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                                        const rtc::PacketTime& packet_time) {
-  SignalRtcpPacketReceived(packet, packet_time);
+                                        int64_t packet_time_us) {
+  SignalRtcpPacketReceived(packet, packet_time_us);
 }
 
 void RtpTransport::OnReadPacket(rtc::PacketTransportInternal* transport,
                                 const char* data,
                                 size_t len,
-                                const rtc::PacketTime& packet_time,
+                                const int64_t& packet_time_us,
                                 int flags) {
   TRACE_EVENT0("webrtc", "RtpTransport::OnReadPacket");
 
@@ -272,9 +272,9 @@
   }
 
   if (rtcp) {
-    OnRtcpPacketReceived(&packet, packet_time);
+    OnRtcpPacketReceived(&packet, packet_time_us);
   } else {
-    OnRtpPacketReceived(&packet, packet_time);
+    OnRtpPacketReceived(&packet, packet_time_us);
   }
 }
 
diff --git a/pc/rtptransport.h b/pc/rtptransport.h
index 793ac90..dab5903 100644
--- a/pc/rtptransport.h
+++ b/pc/rtptransport.h
@@ -87,7 +87,7 @@
   RtpTransportAdapter* GetInternal() override;
 
   // These methods will be used in the subclasses.
-  void DemuxPacket(rtc::CopyOnWriteBuffer* packet, const rtc::PacketTime& time);
+  void DemuxPacket(rtc::CopyOnWriteBuffer* packet, int64_t packet_time_us);
 
   bool SendPacket(bool rtcp,
                   rtc::CopyOnWriteBuffer* packet,
@@ -98,9 +98,9 @@
   virtual void OnNetworkRouteChanged(
       absl::optional<rtc::NetworkRoute> network_route);
   virtual void OnRtpPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                                   const rtc::PacketTime& packet_time);
+                                   int64_t packet_time_us);
   virtual void OnRtcpPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                                    const rtc::PacketTime& packet_time);
+                                    int64_t packet_time_us);
   // Overridden by SrtpTransport and DtlsSrtpTransport.
   virtual void OnWritableState(rtc::PacketTransportInternal* packet_transport);
 
@@ -111,7 +111,7 @@
   void OnReadPacket(rtc::PacketTransportInternal* transport,
                     const char* data,
                     size_t len,
-                    const rtc::PacketTime& packet_time,
+                    const int64_t& packet_time_us,
                     int flags);
 
   // Updates "ready to send" for an individual channel and fires
diff --git a/pc/rtptransportinternal.h b/pc/rtptransportinternal.h
index ca05680..e633836 100644
--- a/pc/rtptransportinternal.h
+++ b/pc/rtptransportinternal.h
@@ -24,7 +24,6 @@
 namespace rtc {
 class CopyOnWriteBuffer;
 struct PacketOptions;
-struct PacketTime;
 }  // namespace rtc
 
 namespace webrtc {
@@ -59,8 +58,7 @@
   // Called whenever an RTCP packet is received. There is no equivalent signal
   // for RTP packets because they would be forwarded to the BaseChannel through
   // the RtpDemuxer callback.
-  sigslot::signal2<rtc::CopyOnWriteBuffer*, const rtc::PacketTime&>
-      SignalRtcpPacketReceived;
+  sigslot::signal2<rtc::CopyOnWriteBuffer*, int64_t> SignalRtcpPacketReceived;
 
   // Called whenever the network route of the P2P layer transport changes.
   // The argument is an optional network route.
diff --git a/pc/rtptransporttestutil.h b/pc/rtptransporttestutil.h
index eb33773..f2c3512 100644
--- a/pc/rtptransporttestutil.h
+++ b/pc/rtptransporttestutil.h
@@ -39,7 +39,7 @@
   }
 
   void OnRtcpPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                            const rtc::PacketTime& packet_time) {
+                            int64_t packet_time_us) {
     rtcp_count_++;
     last_recv_rtcp_packet_ = *packet;
   }
diff --git a/pc/srtptransport.cc b/pc/srtptransport.cc
index 8f9de67..0cf4106 100644
--- a/pc/srtptransport.cc
+++ b/pc/srtptransport.cc
@@ -193,7 +193,7 @@
 }
 
 void SrtpTransport::OnRtpPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                                        const rtc::PacketTime& packet_time) {
+                                        int64_t packet_time_us) {
   if (!IsSrtpActive()) {
     RTC_LOG(LS_WARNING)
         << "Inactive SRTP transport received an RTP packet. Drop it.";
@@ -221,11 +221,11 @@
     return;
   }
   packet->SetSize(len);
-  DemuxPacket(packet, packet_time);
+  DemuxPacket(packet, packet_time_us);
 }
 
 void SrtpTransport::OnRtcpPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                                         const rtc::PacketTime& packet_time) {
+                                         int64_t packet_time_us) {
   if (!IsSrtpActive()) {
     RTC_LOG(LS_WARNING)
         << "Inactive SRTP transport received an RTCP packet. Drop it.";
@@ -242,7 +242,7 @@
     return;
   }
   packet->SetSize(len);
-  SignalRtcpPacketReceived(packet, packet_time);
+  SignalRtcpPacketReceived(packet, packet_time_us);
 }
 
 void SrtpTransport::OnNetworkRouteChanged(
diff --git a/pc/srtptransport.h b/pc/srtptransport.h
index 70829d4..c62359b 100644
--- a/pc/srtptransport.h
+++ b/pc/srtptransport.h
@@ -113,9 +113,9 @@
   void CreateSrtpSessions();
 
   void OnRtpPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                           const rtc::PacketTime& packet_time) override;
+                           int64_t packet_time_us) override;
   void OnRtcpPacketReceived(rtc::CopyOnWriteBuffer* packet,
-                            const rtc::PacketTime& packet_time) override;
+                            int64_t packet_time_us) override;
   void OnNetworkRouteChanged(
       absl::optional<rtc::NetworkRoute> network_route) override;
 
diff --git a/rtc_base/asyncpacketsocket.h b/rtc_base/asyncpacketsocket.h
index e671f0d..44d6c67 100644
--- a/rtc_base/asyncpacketsocket.h
+++ b/rtc_base/asyncpacketsocket.h
@@ -51,25 +51,9 @@
   PacketInfo info_signaled_after_sent;
 };
 
-// This structure will have the information about when packet is actually
-// received by socket.
-struct PacketTime {
-  PacketTime() : timestamp(-1) {}
-  // Intentionally implicit.
-  PacketTime(int64_t timestamp) : timestamp(timestamp) {}
-  // Deprecated
-  PacketTime(int64_t timestamp, int64_t /* not_before */)
-      : timestamp(timestamp) {}
-
-  operator int64_t() const { return timestamp; }
-
-  int64_t timestamp;  // Receive time after socket delivers the data.
-};
-
-// Deprecated
-inline PacketTime CreatePacketTime(int64_t /* not_before */) {
-  return TimeMicros();
-}
+// TODO(bugs.webrtc.org/9584): Compatibility alias, delete as soon as downstream
+// code is updated.
+typedef int64_t PacketTime;
 
 // Provides the ability to receive packets asynchronously. Sends are not
 // buffered since it is acceptable to drop packets under high load.
@@ -121,7 +105,9 @@
                    const char*,
                    size_t,
                    const SocketAddress&,
-                   const PacketTime&>
+                   // TODO(bugs.webrtc.org/9584): Change to passing the int64_t
+                   // timestamp by value.
+                   const int64_t&>
       SignalReadPacket;
 
   // Emitted each time a packet is sent.
diff --git a/rtc_base/natserver.cc b/rtc_base/natserver.cc
index 8119376..b005eca 100644
--- a/rtc_base/natserver.cc
+++ b/rtc_base/natserver.cc
@@ -158,7 +158,7 @@
                                     const char* buf,
                                     size_t size,
                                     const SocketAddress& addr,
-                                    const PacketTime& packet_time) {
+                                    const int64_t& /* packet_time_us */) {
   // Read the intended destination from the wire.
   SocketAddress dest_addr;
   size_t length = UnpackAddressFromNAT(buf, size, &dest_addr);
@@ -184,7 +184,7 @@
                                     const char* buf,
                                     size_t size,
                                     const SocketAddress& remote_addr,
-                                    const PacketTime& packet_time) {
+                                    const int64_t& /* packet_time_us */) {
   SocketAddress local_addr = socket->GetLocalAddress();
 
   // Find the translation for this addresses.
diff --git a/rtc_base/natserver.h b/rtc_base/natserver.h
index f4cabcf..d16b537 100644
--- a/rtc_base/natserver.h
+++ b/rtc_base/natserver.h
@@ -81,12 +81,12 @@
                            const char* buf,
                            size_t size,
                            const SocketAddress& addr,
-                           const PacketTime& packet_time);
+                           const int64_t& packet_time_us);
   void OnExternalUDPPacket(AsyncPacketSocket* socket,
                            const char* buf,
                            size_t size,
                            const SocketAddress& remote_addr,
-                           const PacketTime& packet_time);
+                           const int64_t& packet_time_us);
 
  private:
   typedef std::set<SocketAddress, AddrCmp> AddressSet;
diff --git a/rtc_base/testclient.cc b/rtc_base/testclient.cc
index 56a9f8c..a5b90dd 100644
--- a/rtc_base/testclient.cc
+++ b/rtc_base/testclient.cc
@@ -97,7 +97,7 @@
   std::unique_ptr<Packet> packet = NextPacket(kTimeoutMs);
   if (packet) {
     res = (packet->size == size && memcmp(packet->buf, buf, size) == 0 &&
-           CheckTimestamp(packet->packet_time));
+           CheckTimestamp(packet->packet_time_us));
     if (addr)
       *addr = packet->addr;
   }
@@ -144,10 +144,10 @@
                           const char* buf,
                           size_t size,
                           const SocketAddress& remote_addr,
-                          const PacketTime& packet_time) {
+                          const int64_t& packet_time_us) {
   CritScope cs(&crit_);
   packets_.push_back(
-      absl::make_unique<Packet>(remote_addr, buf, size, packet_time));
+      absl::make_unique<Packet>(remote_addr, buf, size, packet_time_us));
 }
 
 void TestClient::OnReadyToSend(AsyncPacketSocket* socket) {
@@ -157,14 +157,14 @@
 TestClient::Packet::Packet(const SocketAddress& a,
                            const char* b,
                            size_t s,
-                           const PacketTime& packet_time)
-    : addr(a), buf(0), size(s), packet_time(packet_time) {
+                           int64_t packet_time_us)
+    : addr(a), buf(0), size(s), packet_time_us(packet_time_us) {
   buf = new char[size];
   memcpy(buf, b, size);
 }
 
 TestClient::Packet::Packet(const Packet& p)
-    : addr(p.addr), buf(0), size(p.size), packet_time(p.packet_time) {
+    : addr(p.addr), buf(0), size(p.size), packet_time_us(p.packet_time_us) {
   buf = new char[size];
   memcpy(buf, p.buf, size);
 }
diff --git a/rtc_base/testclient.h b/rtc_base/testclient.h
index a0d98b3..16fb6ba 100644
--- a/rtc_base/testclient.h
+++ b/rtc_base/testclient.h
@@ -29,14 +29,14 @@
     Packet(const SocketAddress& a,
            const char* b,
            size_t s,
-           const PacketTime& packet_time);
+           int64_t packet_time_us);
     Packet(const Packet& p);
     virtual ~Packet();
 
     SocketAddress addr;
     char* buf;
     size_t size;
-    PacketTime packet_time;
+    int64_t packet_time_us;
   };
 
   // Default timeout for NextPacket reads.
@@ -97,7 +97,7 @@
                 const char* buf,
                 size_t len,
                 const SocketAddress& remote_addr,
-                const PacketTime& packet_time);
+                const int64_t& packet_time_us);
   void OnReadyToSend(AsyncPacketSocket* socket);
   bool CheckTimestamp(int64_t packet_timestamp);
   void AdvanceTime(int ms);
diff --git a/rtc_base/testechoserver.h b/rtc_base/testechoserver.h
index 5e714eb6..9ffd786 100644
--- a/rtc_base/testechoserver.h
+++ b/rtc_base/testechoserver.h
@@ -44,7 +44,7 @@
                 const char* buf,
                 size_t size,
                 const SocketAddress& remote_addr,
-                const PacketTime& packet_time) {
+                const int64_t& /* packet_time_us */) {
     rtc::PacketOptions options;
     socket->Send(buf, size, options);
   }
diff --git a/rtc_base/thread_unittest.cc b/rtc_base/thread_unittest.cc
index d5c53f8..dc509b5 100644
--- a/rtc_base/thread_unittest.cc
+++ b/rtc_base/thread_unittest.cc
@@ -69,7 +69,7 @@
                 const char* buf,
                 size_t size,
                 const SocketAddress& remote_addr,
-                const PacketTime& packet_time) {
+                const int64_t& packet_time_us) {
     EXPECT_EQ(size, sizeof(uint32_t));
     uint32_t prev = reinterpret_cast<const uint32_t*>(buf)[0];
     uint32_t result = Next(prev);
diff --git a/rtc_base/virtualsocket_unittest.cc b/rtc_base/virtualsocket_unittest.cc
index d2bff54..d44f46a 100644
--- a/rtc_base/virtualsocket_unittest.cc
+++ b/rtc_base/virtualsocket_unittest.cc
@@ -104,7 +104,7 @@
                     const char* data,
                     size_t size,
                     const SocketAddress& remote_addr,
-                    const PacketTime& packet_time) {
+                    const int64_t& /* packet_time_us */) {
     ASSERT_EQ(socket.get(), s);
     ASSERT_GE(size, 4U);
 
diff --git a/rtc_tools/network_tester/test_controller.cc b/rtc_tools/network_tester/test_controller.cc
index 4bdc993..9d8161b 100644
--- a/rtc_tools/network_tester/test_controller.cc
+++ b/rtc_tools/network_tester/test_controller.cc
@@ -80,7 +80,7 @@
                                   const char* data,
                                   size_t len,
                                   const rtc::SocketAddress& remote_addr,
-                                  const rtc::PacketTime& packet_time) {
+                                  const int64_t& packet_time_us) {
   RTC_DCHECK_RUN_ON(&test_controller_thread_checker_);
   size_t packet_size = data[0];
   std::string receive_data(&data[1], packet_size);
@@ -109,7 +109,7 @@
       break;
     }
     case NetworkTesterPacket::TEST_DATA: {
-      packet.set_arrival_timestamp(packet_time);
+      packet.set_arrival_timestamp(packet_time_us);
       packet.set_packet_size(len);
       packet_logger_.LogPacket(packet);
       break;
diff --git a/rtc_tools/network_tester/test_controller.h b/rtc_tools/network_tester/test_controller.h
index cf65e17..06a83e9 100644
--- a/rtc_tools/network_tester/test_controller.h
+++ b/rtc_tools/network_tester/test_controller.h
@@ -60,7 +60,7 @@
                     const char* data,
                     size_t len,
                     const rtc::SocketAddress& remote_addr,
-                    const rtc::PacketTime& packet_time);
+                    const int64_t& packet_time_us);
   rtc::ThreadChecker test_controller_thread_checker_;
   rtc::SequencedTaskChecker packet_sender_checker_;
   rtc::BasicPacketSocketFactory socket_factory_;