summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/moz-patch-stack/0089.patch
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/moz-patch-stack/0089.patch')
-rw-r--r--third_party/libwebrtc/moz-patch-stack/0089.patch269
1 files changed, 269 insertions, 0 deletions
diff --git a/third_party/libwebrtc/moz-patch-stack/0089.patch b/third_party/libwebrtc/moz-patch-stack/0089.patch
new file mode 100644
index 0000000000..409649736b
--- /dev/null
+++ b/third_party/libwebrtc/moz-patch-stack/0089.patch
@@ -0,0 +1,269 @@
+From: Byron Campen <docfaraday@gmail.com>
+Date: Fri, 31 Mar 2023 16:21:00 -0500
+Subject: Bug 1822194 - (fix-acabb3641b) Break the new SetParametersCallback
+ stuff into stand-alone files.
+
+acabb3641b from upstream added a callback mechanism to allow failures to be
+propagated back to RTCRtpSender.setParameters. Unfortunately, this callback
+mechanism was (needlessly) tightly coupled to libwebrtc's implementation of
+RTCRtpSender, and also their media channel code. This introduced a lot of
+unnecessary dependencies throughout libwebrtc, that spilled into our code as
+well.
+Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/59232687efa00e5f7b7bd3d6befca129149e2bf5
+---
+ api/BUILD.gn | 14 +++++++++++-
+ api/rtp_sender_interface.h | 4 ++--
+ api/rtp_sender_setparameters_callback.cc | 27 +++++++++++++++++++++++
+ api/rtp_sender_setparameters_callback.h | 28 ++++++++++++++++++++++++
+ call/BUILD.gn | 4 ++--
+ call/audio_send_stream.h | 2 +-
+ call/video_send_stream.h | 2 +-
+ media/BUILD.gn | 2 +-
+ media/base/media_channel.h | 4 ----
+ media/base/media_channel_impl.cc | 13 -----------
+ video/BUILD.gn | 4 ++--
+ 11 files changed, 77 insertions(+), 27 deletions(-)
+ create mode 100644 api/rtp_sender_setparameters_callback.cc
+ create mode 100644 api/rtp_sender_setparameters_callback.h
+
+diff --git a/api/BUILD.gn b/api/BUILD.gn
+index 3f313e2743..56afc5efce 100644
+--- a/api/BUILD.gn
++++ b/api/BUILD.gn
+@@ -214,8 +214,8 @@ rtc_library("rtp_sender_interface") {
+ ":dtmf_sender_interface",
+ ":frame_transformer_interface",
+ ":media_stream_interface",
+- ":rtc_error",
+ ":rtp_parameters",
++ ":rtp_sender_setparameters_callback",
+ ":scoped_refptr",
+ "../rtc_base:checks",
+ "../rtc_base:refcount",
+@@ -223,6 +223,18 @@ rtc_library("rtp_sender_interface") {
+ "crypto:frame_encryptor_interface",
+ "video_codecs:video_codecs_api",
+ ]
++}
++
++rtc_library("rtp_sender_setparameters_callback") {
++ visibility = [ "*" ]
++
++ sources = [
++ "rtp_sender_setparameters_callback.cc",
++ "rtp_sender_setparameters_callback.h",
++ ]
++ deps = [
++ ":rtc_error",
++ ]
+ absl_deps = [ "//third_party/abseil-cpp/absl/functional:any_invocable" ]
+ }
+
+diff --git a/api/rtp_sender_interface.h b/api/rtp_sender_interface.h
+index 2786a2ac19..98ee91b1cc 100644
+--- a/api/rtp_sender_interface.h
++++ b/api/rtp_sender_interface.h
+@@ -32,9 +32,9 @@
+ #include "rtc_base/ref_count.h"
+ #include "rtc_base/system/rtc_export.h"
+
+-namespace webrtc {
++#include "api/rtp_sender_setparameters_callback.h"
+
+-using SetParametersCallback = absl::AnyInvocable<void(RTCError) &&>;
++namespace webrtc {
+
+ class RTC_EXPORT RtpSenderInterface : public rtc::RefCountInterface {
+ public:
+diff --git a/api/rtp_sender_setparameters_callback.cc b/api/rtp_sender_setparameters_callback.cc
+new file mode 100644
+index 0000000000..99728ef95e
+--- /dev/null
++++ b/api/rtp_sender_setparameters_callback.cc
+@@ -0,0 +1,27 @@
++/*
++ * Copyright 2015 The WebRTC project authors. All Rights Reserved.
++ *
++ * Use of this source code is governed by a BSD-style license
++ * that can be found in the LICENSE file in the root of the source
++ * tree. An additional intellectual property rights grant can be found
++ * in the file PATENTS. All contributing project authors may
++ * be found in the AUTHORS file in the root of the source tree.
++ */
++
++// File added by mozilla, to decouple this from libwebrtc's implementation of
++// RTCRtpSender.
++
++#include "api/rtp_sender_setparameters_callback.h"
++
++namespace webrtc {
++
++webrtc::RTCError InvokeSetParametersCallback(SetParametersCallback& callback,
++ RTCError error) {
++ if (callback) {
++ std::move(callback)(error);
++ callback = nullptr;
++ }
++ return error;
++}
++
++} // namespace webrtc
+diff --git a/api/rtp_sender_setparameters_callback.h b/api/rtp_sender_setparameters_callback.h
+new file mode 100644
+index 0000000000..45194f5ace
+--- /dev/null
++++ b/api/rtp_sender_setparameters_callback.h
+@@ -0,0 +1,28 @@
++/*
++ * Copyright 2015 The WebRTC project authors. All Rights Reserved.
++ *
++ * Use of this source code is governed by a BSD-style license
++ * that can be found in the LICENSE file in the root of the source
++ * tree. An additional intellectual property rights grant can be found
++ * in the file PATENTS. All contributing project authors may
++ * be found in the AUTHORS file in the root of the source tree.
++ */
++
++// File added by mozilla, to decouple this from libwebrtc's implementation of
++// RTCRtpSender.
++
++#ifndef API_RTP_SENDER_SETPARAMETERS_CALLBACK_H_
++#define API_RTP_SENDER_SETPARAMETERS_CALLBACK_H_
++
++#include "api/rtc_error.h"
++#include "absl/functional/any_invocable.h"
++
++namespace webrtc {
++
++using SetParametersCallback = absl::AnyInvocable<void(RTCError) &&>;
++
++webrtc::RTCError InvokeSetParametersCallback(SetParametersCallback& callback,
++ RTCError error);
++} // namespace webrtc
++
++#endif // API_RTP_SENDER_SETPARAMETERS_CALLBACK_H_
+diff --git a/call/BUILD.gn b/call/BUILD.gn
+index fb23b7ef39..2bc7aaec92 100644
+--- a/call/BUILD.gn
++++ b/call/BUILD.gn
+@@ -52,7 +52,7 @@ rtc_library("call_interfaces") {
+ "../api:rtc_error",
+ "../api:rtp_headers",
+ "../api:rtp_parameters",
+- "../api:rtp_sender_interface",
++ "../api:rtp_sender_setparameters_callback",
+ "../api:scoped_refptr",
+ "../api:transport_api",
+ "../api/adaptation:resource_adaptation_api",
+@@ -389,7 +389,7 @@ rtc_library("video_stream_api") {
+ "../api:frame_transformer_interface",
+ "../api:rtp_headers",
+ "../api:rtp_parameters",
+- "../api:rtp_sender_interface",
++ "../api:rtp_sender_setparameters_callback",
+ "../api:scoped_refptr",
+ "../api:transport_api",
+ "../api/adaptation:resource_adaptation_api",
+diff --git a/call/audio_send_stream.h b/call/audio_send_stream.h
+index bafa22d312..187ec65ed8 100644
+--- a/call/audio_send_stream.h
++++ b/call/audio_send_stream.h
+@@ -25,7 +25,7 @@
+ #include "api/crypto/frame_encryptor_interface.h"
+ #include "api/frame_transformer_interface.h"
+ #include "api/rtp_parameters.h"
+-#include "api/rtp_sender_interface.h"
++#include "api/rtp_sender_setparameters_callback.h"
+ #include "api/scoped_refptr.h"
+ #include "call/audio_sender.h"
+ #include "call/rtp_config.h"
+diff --git a/call/video_send_stream.h b/call/video_send_stream.h
+index 431c267e1e..de18fc7b92 100644
+--- a/call/video_send_stream.h
++++ b/call/video_send_stream.h
+@@ -23,7 +23,7 @@
+ #include "api/crypto/crypto_options.h"
+ #include "api/frame_transformer_interface.h"
+ #include "api/rtp_parameters.h"
+-#include "api/rtp_sender_interface.h"
++#include "api/rtp_sender_setparameters_callback.h"
+ #include "api/scoped_refptr.h"
+ #include "api/video/video_content_type.h"
+ #include "api/video/video_frame.h"
+diff --git a/media/BUILD.gn b/media/BUILD.gn
+index daca67e033..80662563b0 100644
+--- a/media/BUILD.gn
++++ b/media/BUILD.gn
+@@ -64,7 +64,7 @@ rtc_library("rtc_media_base") {
+ "../api:media_stream_interface",
+ "../api:rtc_error",
+ "../api:rtp_parameters",
+- "../api:rtp_sender_interface",
++ "../api:rtp_sender_setparameters_callback",
+ "../api:scoped_refptr",
+ "../api:sequence_checker",
+ "../api:transport_api",
+diff --git a/media/base/media_channel.h b/media/base/media_channel.h
+index 43e09290bd..138d28ae4c 100644
+--- a/media/base/media_channel.h
++++ b/media/base/media_channel.h
+@@ -64,10 +64,6 @@ class Timing;
+
+ namespace webrtc {
+ class VideoFrame;
+-
+-webrtc::RTCError InvokeSetParametersCallback(SetParametersCallback& callback,
+- RTCError error);
+-
+ } // namespace webrtc
+
+ namespace cricket {
+diff --git a/media/base/media_channel_impl.cc b/media/base/media_channel_impl.cc
+index a72b97413d..0e72f47d6d 100644
+--- a/media/base/media_channel_impl.cc
++++ b/media/base/media_channel_impl.cc
+@@ -31,19 +31,6 @@
+ #include "modules/rtp_rtcp/include/report_block_data.h"
+ #include "rtc_base/checks.h"
+
+-namespace webrtc {
+-
+-webrtc::RTCError InvokeSetParametersCallback(SetParametersCallback& callback,
+- RTCError error) {
+- if (callback) {
+- std::move(callback)(error);
+- callback = nullptr;
+- }
+- return error;
+-}
+-
+-} // namespace webrtc
+-
+ namespace cricket {
+ using webrtc::FrameDecryptorInterface;
+ using webrtc::FrameEncryptorInterface;
+diff --git a/video/BUILD.gn b/video/BUILD.gn
+index e21e1c7ea8..2c0a411e35 100644
+--- a/video/BUILD.gn
++++ b/video/BUILD.gn
+@@ -17,7 +17,7 @@ rtc_library("video_stream_encoder_interface") {
+ "../api:fec_controller_api",
+ "../api:rtc_error",
+ "../api:rtp_parameters",
+- "../api:rtp_sender_interface",
++ "../api:rtp_sender_setparameters_callback",
+ "../api:scoped_refptr",
+ "../api/adaptation:resource_adaptation_api",
+ "../api/units:data_rate",
+@@ -410,7 +410,7 @@ rtc_library("video_stream_encoder_impl") {
+ ":video_stream_encoder_interface",
+ "../api:field_trials_view",
+ "../api:rtp_parameters",
+- "../api:rtp_sender_interface",
++ "../api:rtp_sender_setparameters_callback",
+ "../api:sequence_checker",
+ "../api/adaptation:resource_adaptation_api",
+ "../api/task_queue:pending_task_safety_flag",
+--
+2.34.1
+