104 lines
4.1 KiB
Diff
104 lines
4.1 KiB
Diff
From: Andreas Pehrson <apehrson@mozilla.com>
|
|
Date: Tue, 2 Nov 2021 14:35:00 +0000
|
|
Subject: Bug 1729455 - Inject RTCStatsTimestampMakerRealtimeClock into Call
|
|
instances. r=bwc
|
|
|
|
This patch makes libwebrtc use our clock for timestamps.
|
|
It also makes sure there's no use of the libwebrtc realtime clock, other than
|
|
for relative time tracking (like timeouts), and that future libwebrtc updates
|
|
don't introduce unaudited use of it.
|
|
|
|
Differential Revision: https://phabricator.services.mozilla.com/D127714
|
|
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/0744d68b8c944e69945de4ac5c4ca71332e78ad8
|
|
---
|
|
modules/rtp_rtcp/include/flexfec_receiver.h | 2 ++
|
|
modules/rtp_rtcp/source/flexfec_receiver.cc | 2 ++
|
|
rtc_base/task_utils/repeating_task.h | 4 ++--
|
|
system_wrappers/include/clock.h | 2 +-
|
|
system_wrappers/source/clock.cc | 2 +-
|
|
5 files changed, 8 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/modules/rtp_rtcp/include/flexfec_receiver.h b/modules/rtp_rtcp/include/flexfec_receiver.h
|
|
index a869c8ad41..b6a33882d1 100644
|
|
--- a/modules/rtp_rtcp/include/flexfec_receiver.h
|
|
+++ b/modules/rtp_rtcp/include/flexfec_receiver.h
|
|
@@ -30,9 +30,11 @@ class Clock;
|
|
|
|
class FlexfecReceiver {
|
|
public:
|
|
+ /* Mozilla: Avoid this since it could use GetRealTimeClock().
|
|
FlexfecReceiver(uint32_t ssrc,
|
|
uint32_t protected_media_ssrc,
|
|
RecoveredPacketReceiver* recovered_packet_receiver);
|
|
+ */
|
|
FlexfecReceiver(Clock* clock,
|
|
uint32_t ssrc,
|
|
uint32_t protected_media_ssrc,
|
|
diff --git a/modules/rtp_rtcp/source/flexfec_receiver.cc b/modules/rtp_rtcp/source/flexfec_receiver.cc
|
|
index 7f2cc0cb3c..2ba85a2157 100644
|
|
--- a/modules/rtp_rtcp/source/flexfec_receiver.cc
|
|
+++ b/modules/rtp_rtcp/source/flexfec_receiver.cc
|
|
@@ -31,6 +31,7 @@ constexpr TimeDelta kPacketLogInterval = TimeDelta::Seconds(10);
|
|
|
|
} // namespace
|
|
|
|
+/* Mozilla: Avoid this since it could use GetRealTimeClock().
|
|
FlexfecReceiver::FlexfecReceiver(
|
|
uint32_t ssrc,
|
|
uint32_t protected_media_ssrc,
|
|
@@ -39,6 +40,7 @@ FlexfecReceiver::FlexfecReceiver(
|
|
ssrc,
|
|
protected_media_ssrc,
|
|
recovered_packet_receiver) {}
|
|
+ */
|
|
|
|
FlexfecReceiver::FlexfecReceiver(
|
|
Clock* clock,
|
|
diff --git a/rtc_base/task_utils/repeating_task.h b/rtc_base/task_utils/repeating_task.h
|
|
index c45de95ecc..28c691c3de 100644
|
|
--- a/rtc_base/task_utils/repeating_task.h
|
|
+++ b/rtc_base/task_utils/repeating_task.h
|
|
@@ -57,7 +57,7 @@ class RepeatingTaskHandle {
|
|
absl::AnyInvocable<TimeDelta()> closure,
|
|
TaskQueueBase::DelayPrecision precision =
|
|
TaskQueueBase::DelayPrecision::kLow,
|
|
- Clock* clock = Clock::GetRealTimeClock(),
|
|
+ Clock* clock = Clock::GetRealTimeClockRaw(),
|
|
const Location& location = Location::Current());
|
|
|
|
// DelayedStart is equivalent to Start except that the first invocation of the
|
|
@@ -68,7 +68,7 @@ class RepeatingTaskHandle {
|
|
absl::AnyInvocable<TimeDelta()> closure,
|
|
TaskQueueBase::DelayPrecision precision =
|
|
TaskQueueBase::DelayPrecision::kLow,
|
|
- Clock* clock = Clock::GetRealTimeClock(),
|
|
+ Clock* clock = Clock::GetRealTimeClockRaw(),
|
|
const Location& location = Location::Current());
|
|
|
|
// Stops future invocations of the repeating task closure. Can only be called
|
|
diff --git a/system_wrappers/include/clock.h b/system_wrappers/include/clock.h
|
|
index ec4bae0aed..70b6e3aa16 100644
|
|
--- a/system_wrappers/include/clock.h
|
|
+++ b/system_wrappers/include/clock.h
|
|
@@ -66,7 +66,7 @@ class RTC_EXPORT Clock {
|
|
}
|
|
|
|
// Returns an instance of the real-time system clock implementation.
|
|
- static Clock* GetRealTimeClock();
|
|
+ static Clock* GetRealTimeClockRaw();
|
|
};
|
|
|
|
class SimulatedClock : public Clock {
|
|
diff --git a/system_wrappers/source/clock.cc b/system_wrappers/source/clock.cc
|
|
index 88c99d6a68..f7460b831c 100644
|
|
--- a/system_wrappers/source/clock.cc
|
|
+++ b/system_wrappers/source/clock.cc
|
|
@@ -57,7 +57,7 @@ class RealTimeClock : public Clock {
|
|
}
|
|
};
|
|
|
|
-Clock* Clock::GetRealTimeClock() {
|
|
+Clock* Clock::GetRealTimeClockRaw() {
|
|
static Clock* const clock = new RealTimeClock();
|
|
return clock;
|
|
}
|