commit 78a51aeb9ef1cc0f57180b68397bd36a38f6fb3a
parent ea97a21ba3cdf08aeb606abd13d7e51849231e7c
Author: Dan Baker <dbaker@mozilla.com>
Date: Thu, 23 Oct 2025 15:03:54 -0600
Bug 1995393 - Vendor libwebrtc from f4453c3711
Essentially a no-op since we're going to see this change
reverted when we vendor in ac2597e9ce.
Upstream commit: https://webrtc.googlesource.com/src/+/f4453c3711eff9e8851364687cc55a31de5c059f
Use field clock instead of global clock where available
Bug: webrtc:42223992
Change-Id: Ia0eb6a5f9ebfe4031fc72026f31767b2ce7dcc2d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/404280
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Auto-Submit: Evan Shrubsole <eshr@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45333}
Diffstat:
5 files changed, 273 insertions(+), 139 deletions(-)
diff --git a/third_party/libwebrtc/README.mozilla.last-vendor b/third_party/libwebrtc/README.mozilla.last-vendor
@@ -1,4 +1,4 @@
# ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc
-libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-23T21:01:34.518731+00:00.
+libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-23T21:03:40.602795+00:00.
# base of lastest vendoring
-aa6d2dcebc
+f4453c3711
diff --git a/third_party/libwebrtc/moz-patch-stack/ac2597e9ce.no-op-cherry-pick-msg b/third_party/libwebrtc/moz-patch-stack/ac2597e9ce.no-op-cherry-pick-msg
@@ -0,0 +1 @@
+We already cherry-picked this when we vendored f4453c3711.
diff --git a/third_party/libwebrtc/moz-patch-stack/p0001.patch b/third_party/libwebrtc/moz-patch-stack/p0001.patch
@@ -1,44 +1,242 @@
-From: Philipp Hancke <phancke@meta.com>
-Date: Sat, 16 Aug 2025 12:15:50 -0700
-Subject: (cherry-pick-branch-heads/7339) [M140] sdp munging: do not misdetect
- rtp attributes on datachannel
+From: Daniel Baker <dbaker@mozilla.com>
+Date: Thu, 23 Oct 2025 15:03:13 -0600
+Subject: (tmp-cherry-pick) Revert "Use field clock instead of global clock
+ where available" (ac2597e9ce)
-rtcp-mux and rtcp-rsize are unconditionally set for datachannel
-but since they are not serialized in the SDP they are not parsed.
-This leads the munging detector to misclassify this.
+This reverts commit f4453c3711eff9e8851364687cc55a31de5c059f.
-a unit test is added as a separate CL for easier backmerging.
+Reason for revert: Broken downstream
-(cherry picked from commit 602b06b1125ea4d107fbfbda7d314b4157c4c74b)
+Bug: webrtc:42223992
+Original change's description:
+> Use field clock instead of global clock where available
+>
+> Bug: webrtc:42223992
+> Change-Id: Ia0eb6a5f9ebfe4031fc72026f31767b2ce7dcc2d
+> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/404280
+> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
+> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
+> Auto-Submit: Evan Shrubsole <eshr@webrtc.org>
+> Commit-Queue: Harald Alvestrand <hta@webrtc.org>
+> Cr-Commit-Position: refs/heads/main@{#45333}
-Bug: webrtc:414284082,chromium:40567530
-Fixed: chromium:439807581
-Change-Id: I4ebb2ad5062ea42fc47a314ed929de42f91bbea7
-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/404740
-Commit-Queue: Philipp Hancke <phancke@meta.com>
-Reviewed-by: Harald Alvestrand <hta@webrtc.org>
-Cr-Original-Commit-Position: refs/heads/main@{#45357}
-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/405281
-Cr-Commit-Position: refs/branch-heads/7339@{#1}
-Cr-Branched-From: 9bd64751d9b3b35a820cb72c9029993e218146a1-refs/heads/main@{#45270}
+Bug: webrtc:42223992
+Change-Id: I5c496d744b977edcda80a1877f9bae1f5864af2a
+Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/404581
+Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
+Owners-Override: Ilya Nikolaevskiy <ilnik@webrtc.org>
+Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
+Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
+Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
+Cr-Commit-Position: refs/heads/main@{#45352}
---
- pc/sdp_munging_detector.cc | 6 ++++++
- 1 file changed, 6 insertions(+)
+ api/units/timestamp.h | 4 ----
+ api/units/timestamp_unittest.cc | 1 -
+ audio/channel_receive.cc | 5 +++--
+ audio/voip/voip_core.cc | 3 ++-
+ modules/audio_device/test_audio_device_impl.cc | 3 ++-
+ p2p/base/port.cc | 6 +++---
+ pc/rtc_stats_collector.cc | 2 +-
+ video/adaptation/overuse_frame_detector.cc | 2 +-
+ video/encoder_bitrate_adjuster.cc | 3 ++-
+ video/video_receive_stream2.cc | 3 ++-
+ 10 files changed, 16 insertions(+), 16 deletions(-)
-diff --git a/pc/sdp_munging_detector.cc b/pc/sdp_munging_detector.cc
-index 58e580baa3..7b126d9b26 100644
---- a/pc/sdp_munging_detector.cc
-+++ b/pc/sdp_munging_detector.cc
-@@ -427,6 +427,12 @@ SdpMungingType DetermineSdpMungingType(
+diff --git a/api/units/timestamp.h b/api/units/timestamp.h
+index 0317e9faef..7831bba2d0 100644
+--- a/api/units/timestamp.h
++++ b/api/units/timestamp.h
+@@ -60,10 +60,6 @@ class Timestamp final : public rtc_units_impl::UnitBase<Timestamp> {
+ constexpr T us() const {
+ return ToValue<T>();
+ }
+- template <typename T = int64_t>
+- constexpr T ns() const {
+- return ToMultiple<1000, T>();
+- }
+
+ constexpr int64_t seconds_or(int64_t fallback_value) const {
+ return ToFractionOr<1000000>(fallback_value);
+diff --git a/api/units/timestamp_unittest.cc b/api/units/timestamp_unittest.cc
+index c9254c25f0..1b88cb7f42 100644
+--- a/api/units/timestamp_unittest.cc
++++ b/api/units/timestamp_unittest.cc
+@@ -37,7 +37,6 @@ TEST(TimestampTest, ConstExpr) {
+ EXPECT_EQ(kTimestampSeconds.seconds(), kValue);
+ EXPECT_EQ(kTimestampMs.ms(), kValue);
+ EXPECT_EQ(kTimestampUs.us(), kValue);
+- EXPECT_EQ(kTimestampUs.ns(), kValue * 1000);
+ }
+
+ TEST(TimestampTest, GetBackSameValues) {
+diff --git a/audio/channel_receive.cc b/audio/channel_receive.cc
+index adecc36079..3e119fc562 100644
+--- a/audio/channel_receive.cc
++++ b/audio/channel_receive.cc
+@@ -78,6 +78,7 @@
+ #include "rtc_base/synchronization/mutex.h"
+ #include "rtc_base/system/no_unique_address.h"
+ #include "rtc_base/thread_annotations.h"
++#include "rtc_base/time_utils.h"
+ #include "rtc_base/trace_event.h"
+ #include "system_wrappers/include/metrics.h"
+ #include "system_wrappers/include/ntp_time.h"
+@@ -657,7 +658,7 @@ void ChannelReceive::SetReceiveCodecs(
+
+ void ChannelReceive::OnRtpPacket(const RtpPacketReceived& packet) {
+ RTC_DCHECK_RUN_ON(&worker_thread_checker_);
+- Timestamp now = env_.clock().CurrentTime();
++ Timestamp now = Timestamp::Millis(TimeMillis());
+
+ last_received_rtp_timestamp_ = packet.Timestamp();
+ last_received_rtp_system_time_ = now;
+@@ -754,7 +755,7 @@ void ChannelReceive::ReceivedRTCPPacket(const uint8_t* data, size_t length) {
+ RTC_DCHECK_RUN_ON(&worker_thread_checker_);
+
+ // Store playout timestamp for the received RTCP packet
+- UpdatePlayoutTimestamp(true, env_.clock().CurrentTime());
++ UpdatePlayoutTimestamp(true, Timestamp::Millis(TimeMillis()));
+
+ // Deliver RTCP packet to RTP/RTCP module for parsing
+ rtp_rtcp_->IncomingRtcpPacket(MakeArrayView(data, length));
+diff --git a/audio/voip/voip_core.cc b/audio/voip/voip_core.cc
+index d3ce340ac9..7676811698 100644
+--- a/audio/voip/voip_core.cc
++++ b/audio/voip/voip_core.cc
+@@ -40,6 +40,7 @@
+ #include "rtc_base/logging.h"
+ #include "rtc_base/random.h"
+ #include "rtc_base/synchronization/mutex.h"
++#include "rtc_base/time_utils.h"
+
+ namespace webrtc {
+
+@@ -151,7 +152,7 @@ ChannelId VoipCore::CreateChannel(Transport* transport,
+
+ // Set local ssrc to random if not set by caller.
+ if (!local_ssrc) {
+- Random random(env_.clock().TimeInMicroseconds());
++ Random random(TimeMicros());
+ local_ssrc = random.Rand<uint32_t>();
+ }
+
+diff --git a/modules/audio_device/test_audio_device_impl.cc b/modules/audio_device/test_audio_device_impl.cc
+index 80402d3ea3..fe3d10dcf3 100644
+--- a/modules/audio_device/test_audio_device_impl.cc
++++ b/modules/audio_device/test_audio_device_impl.cc
+@@ -25,6 +25,7 @@
+ #include "rtc_base/checks.h"
+ #include "rtc_base/synchronization/mutex.h"
+ #include "rtc_base/task_utils/repeating_task.h"
++#include "rtc_base/time_utils.h"
+
+ namespace webrtc {
+ namespace {
+@@ -174,7 +175,7 @@ void TestAudioDevice::ProcessAudio() {
+ audio_buffer_->SetRecordedBuffer(
+ recording_buffer_.data(),
+ recording_buffer_.size() / capturer_->NumChannels(),
+- std::make_optional(env_.clock().CurrentTime().ns()));
++ std::make_optional(TimeNanos()));
+ audio_buffer_->DeliverRecordedData();
}
- // Validate video and audio contents.
- MediaType media_type = last_created_media_description->type();
-+ bool is_rtp =
-+ media_type == MediaType::AUDIO || media_type == MediaType::VIDEO;
-+ if (!is_rtp) {
-+ // The checks that follow only apply for RTP-based contents.
-+ continue;
-+ }
- if (media_type == MediaType::VIDEO) {
- type = DetermineVideoSdpMungingType(last_created_media_description,
- media_description_to_set);
+ if (!keep_capturing) {
+diff --git a/p2p/base/port.cc b/p2p/base/port.cc
+index cce75157e2..d91143db2f 100644
+--- a/p2p/base/port.cc
++++ b/p2p/base/port.cc
+@@ -53,6 +53,7 @@
+ #include "rtc_base/string_encode.h"
+ #include "rtc_base/string_utils.h"
+ #include "rtc_base/strings/string_builder.h"
++#include "rtc_base/time_utils.h"
+ #include "rtc_base/trace_event.h"
+ #include "rtc_base/weak_ptr.h"
+
+@@ -829,8 +830,7 @@ void Port::DestroyIfDead() {
+ bool dead =
+ (state_ == State::INIT || state_ == State::PRUNED) &&
+ connections_.empty() &&
+- env_.clock().TimeInMilliseconds() - last_time_all_connections_removed_ >=
+- timeout_delay_;
++ TimeMillis() - last_time_all_connections_removed_ >= timeout_delay_;
+ if (dead) {
+ Destroy();
+ }
+@@ -899,7 +899,7 @@ bool Port::OnConnectionDestroyed(Connection* conn) {
+ // fails and is removed before kPortTimeoutDelay, then this message will
+ // not cause the Port to be destroyed.
+ if (connections_.empty()) {
+- last_time_all_connections_removed_ = env_.clock().TimeInMilliseconds();
++ last_time_all_connections_removed_ = TimeMillis();
+ PostDestroyIfDead(/*delayed=*/true);
+ }
+
+diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc
+index ce0954a7b3..be90539f93 100644
+--- a/pc/rtc_stats_collector.cc
++++ b/pc/rtc_stats_collector.cc
+@@ -1207,7 +1207,7 @@ void RTCStatsCollector::GetStatsReportInternal(
+ requests_.push_back(std::move(request));
+
+ // "Now" using a monotonically increasing timer.
+- int64_t cache_now_us = env_.clock().TimeInMicroseconds();
++ int64_t cache_now_us = TimeMicros();
+ if (cached_report_ &&
+ cache_now_us - cache_timestamp_us_ <= cache_lifetime_us_) {
+ // We have a fresh cached report to deliver. Deliver asynchronously, since
+diff --git a/video/adaptation/overuse_frame_detector.cc b/video/adaptation/overuse_frame_detector.cc
+index 704c94c85f..5aed5ed3c0 100644
+--- a/video/adaptation/overuse_frame_detector.cc
++++ b/video/adaptation/overuse_frame_detector.cc
+@@ -597,7 +597,7 @@ void OveruseFrameDetector::CheckForOveruse(
+ !encode_usage_percent_)
+ return;
+
+- int64_t now_ms = env_.clock().TimeInMilliseconds();
++ int64_t now_ms = TimeMillis();
+ const char* action = "NoAction";
+
+ if (IsOverusing(*encode_usage_percent_)) {
+diff --git a/video/encoder_bitrate_adjuster.cc b/video/encoder_bitrate_adjuster.cc
+index 1d17e10b87..d9d64e4f0c 100644
+--- a/video/encoder_bitrate_adjuster.cc
++++ b/video/encoder_bitrate_adjuster.cc
+@@ -31,6 +31,7 @@
+ #include "rtc_base/checks.h"
+ #include "rtc_base/experiments/rate_control_settings.h"
+ #include "rtc_base/logging.h"
++#include "rtc_base/time_utils.h"
+ #include "system_wrappers/include/clock.h"
+ #include "video/encoder_overshoot_detector.h"
+ #include "video/rate_utilization_tracker.h"
+@@ -385,7 +386,7 @@ void EncoderBitrateAdjuster::OnEncodedFrame(DataSize size,
+ // Detectors may not exist, for instance if ScreenshareLayers is used.
+ auto& detector = overshoot_detectors_[stream_index][temporal_index];
+ if (detector) {
+- detector->OnEncodedFrame(size.bytes(), clock_.TimeInMilliseconds());
++ detector->OnEncodedFrame(size.bytes(), TimeMillis());
+ }
+ if (media_rate_trackers_[stream_index]) {
+ media_rate_trackers_[stream_index]->OnDataProduced(size,
+diff --git a/video/video_receive_stream2.cc b/video/video_receive_stream2.cc
+index 170600c2b4..5df80d049a 100644
+--- a/video/video_receive_stream2.cc
++++ b/video/video_receive_stream2.cc
+@@ -81,6 +81,7 @@
+ #include "rtc_base/strings/string_builder.h"
+ #include "rtc_base/synchronization/mutex.h"
+ #include "rtc_base/system/file_wrapper.h"
++#include "rtc_base/time_utils.h"
+ #include "rtc_base/trace_event.h"
+ #include "system_wrappers/include/clock.h"
+ #include "system_wrappers/include/ntp_time.h"
+@@ -586,7 +587,7 @@ void VideoReceiveStream2::CreateAndRegisterExternalDecoder(
+ char filename_buffer[256];
+ SimpleStringBuilder ssb(filename_buffer);
+ ssb << decoded_output_file << "/webrtc_receive_stream_" << remote_ssrc()
+- << "-" << env_.clock().TimeInMicroseconds() << ".ivf";
++ << "-" << TimeMicros() << ".ivf";
+ video_decoder = CreateFrameDumpingDecoderWrapper(
+ std::move(video_decoder), FileWrapper::OpenWriteOnly(ssb.str()));
+ }
diff --git a/third_party/libwebrtc/moz-patch-stack/p0002.patch b/third_party/libwebrtc/moz-patch-stack/p0002.patch
@@ -1,109 +1,44 @@
-From: Jonas Oreland <jonaso@webrtc.org>
-Date: Tue, 26 Aug 2025 15:57:29 +0200
-Subject: (cherry-pick-branch-heads/7339) [M140] DTLS1.3: Fix missing
- retransmission due to failure to set timer.
+From: Philipp Hancke <phancke@meta.com>
+Date: Sat, 16 Aug 2025 12:15:50 -0700
+Subject: (cherry-pick-branch-heads/7339) [M140] sdp munging: do not misdetect
+ rtp attributes on datachannel
-DTLS 1.3 considers itself connected earlier than DTLS 1.2 did - when
-second flight reaches the client. This CL fixes a bug that when
-client is connected (state_ != SSL_CONNECTING), it would not
-continue retransmitting. Continuous retransmission is needed
-when the third flight is lost multiple times. Or really anytime that DTLS request it :)
+rtcp-mux and rtcp-rsize are unconditionally set for datachannel
+but since they are not serialized in the SDP they are not parsed.
+This leads the munging detector to misclassify this.
-This fixes the TODO in dtls_ice_integrationtest.cc in which dtls1.3
-spuriously failed with certain (packet loss intensive) configurations.
+a unit test is added as a separate CL for easier backmerging.
-CREDITS: sergeysu@ that found and fixed the problem!
+(cherry picked from commit 602b06b1125ea4d107fbfbda7d314b4157c4c74b)
-(cherry picked from commit 4221e1bc2fc360448c1663f0bbae058ff9f65a48)
-
-No-Try: true
-Bug: chromium:441245658, chromium:441486101
-Change-Id: I3302f6f384d7e4cda090184094a6fadaf7e4f129
-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/406320
-Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
+Bug: webrtc:414284082,chromium:40567530
+Fixed: chromium:439807581
+Change-Id: I4ebb2ad5062ea42fc47a314ed929de42f91bbea7
+Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/404740
+Commit-Queue: Philipp Hancke <phancke@meta.com>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
-Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
-Cr-Original-Commit-Position: refs/heads/main@{#45439}
-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/407780
-Commit-Queue: Guido Urdaneta <guidou@webrtc.org>
-Cr-Commit-Position: refs/branch-heads/7339@{#2}
+Cr-Original-Commit-Position: refs/heads/main@{#45357}
+Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/405281
+Cr-Commit-Position: refs/branch-heads/7339@{#1}
Cr-Branched-From: 9bd64751d9b3b35a820cb72c9029993e218146a1-refs/heads/main@{#45270}
---
- p2p/dtls/dtls_ice_integrationtest.cc | 6 +-----
- rtc_base/openssl_stream_adapter.cc | 15 ++++++++++++---
- rtc_base/openssl_stream_adapter.h | 2 ++
- 3 files changed, 15 insertions(+), 8 deletions(-)
+ pc/sdp_munging_detector.cc | 6 ++++++
+ 1 file changed, 6 insertions(+)
-diff --git a/p2p/dtls/dtls_ice_integrationtest.cc b/p2p/dtls/dtls_ice_integrationtest.cc
-index 2d539e2e22..1e42998d4f 100644
---- a/p2p/dtls/dtls_ice_integrationtest.cc
-+++ b/p2p/dtls/dtls_ice_integrationtest.cc
-@@ -127,11 +127,7 @@ class DtlsIceIntegrationTest : public ::testing::TestWithParam<std::tuple<
-
- BuiltInNetworkBehaviorConfig networkBehavior;
- networkBehavior.link_capacity = DataRate::KilobitsPerSec(220);
-- // TODO (webrtc:383141571) : Investigate why this testcase fails for
-- // DTLS 1.3 delay if networkBehavior.queue_delay_ms = 100ms.
-- // - unless both peers support dtls in stun, in which case it passes.
-- // - note: only for dtls1.3, it works for dtls1.2!
-- networkBehavior.queue_delay_ms = 50;
-+ networkBehavior.queue_delay_ms = 100;
- networkBehavior.queue_length_packets = 30;
- networkBehavior.loss_percent = 50;
-
-diff --git a/rtc_base/openssl_stream_adapter.cc b/rtc_base/openssl_stream_adapter.cc
-index 50be6b5c26..8c952cd3a2 100644
---- a/rtc_base/openssl_stream_adapter.cc
-+++ b/rtc_base/openssl_stream_adapter.cc
-@@ -852,10 +852,15 @@ void OpenSSLStreamAdapter::SetTimeout(int delay_ms) {
- // We check the timer even after SSL_CONNECTED,
- // but ContinueSSL() is only needed when SSL_CONNECTING
- if (state_ == SSL_CONNECTING) {
-+ // Note: timeout is set inside ContinueSSL()
- ContinueSSL();
-+ } else if (state_ == SSL_CONNECTED) {
-+ MaybeSetTimeout();
-+ } else {
-+ RTC_DCHECK_NOTREACHED() << "state_: " << state_;
- }
- } else {
-- RTC_DCHECK_NOTREACHED();
-+ RTC_DCHECK_NOTREACHED() << "flag->alive() == false";
- }
- // This callback will never run again (stopped above).
- return TimeDelta::PlusInfinity();
-@@ -970,6 +975,12 @@ int OpenSSLStreamAdapter::ContinueSSL() {
- }
- }
-
-+ MaybeSetTimeout();
-+
-+ return 0;
-+}
-+
-+void OpenSSLStreamAdapter::MaybeSetTimeout() {
- if (ssl_ != nullptr) {
- struct timeval timeout;
- if (DTLSv1_get_timeout(ssl_, &timeout)) {
-@@ -977,8 +988,6 @@ int OpenSSLStreamAdapter::ContinueSSL() {
- SetTimeout(delay);
+diff --git a/pc/sdp_munging_detector.cc b/pc/sdp_munging_detector.cc
+index 58e580baa3..7b126d9b26 100644
+--- a/pc/sdp_munging_detector.cc
++++ b/pc/sdp_munging_detector.cc
+@@ -427,6 +427,12 @@ SdpMungingType DetermineSdpMungingType(
}
- }
--
-- return 0;
- }
-
- void OpenSSLStreamAdapter::Error(absl::string_view context,
-diff --git a/rtc_base/openssl_stream_adapter.h b/rtc_base/openssl_stream_adapter.h
-index 856d37c156..c10e93e3d4 100644
---- a/rtc_base/openssl_stream_adapter.h
-+++ b/rtc_base/openssl_stream_adapter.h
-@@ -210,6 +210,8 @@ class OpenSSLStreamAdapter final : public SSLStreamAdapter {
- !peer_certificate_digest_value_.empty();
- }
-
-+ void MaybeSetTimeout();
-+
- const std::unique_ptr<StreamInterface> stream_;
- absl::AnyInvocable<void(SSLHandshakeError)> handshake_error_;
-
+ // Validate video and audio contents.
+ MediaType media_type = last_created_media_description->type();
++ bool is_rtp =
++ media_type == MediaType::AUDIO || media_type == MediaType::VIDEO;
++ if (!is_rtp) {
++ // The checks that follow only apply for RTP-based contents.
++ continue;
++ }
+ if (media_type == MediaType::VIDEO) {
+ type = DetermineVideoSdpMungingType(last_created_media_description,
+ media_description_to_set);
diff --git a/third_party/libwebrtc/moz-patch-stack/p0002.patch b/third_party/libwebrtc/moz-patch-stack/p0003.patch