diff options
Diffstat (limited to 'third_party/libwebrtc/moz-patch-stack/0030.patch')
-rw-r--r-- | third_party/libwebrtc/moz-patch-stack/0030.patch | 1417 |
1 files changed, 1417 insertions, 0 deletions
diff --git a/third_party/libwebrtc/moz-patch-stack/0030.patch b/third_party/libwebrtc/moz-patch-stack/0030.patch new file mode 100644 index 0000000000..c5c638459c --- /dev/null +++ b/third_party/libwebrtc/moz-patch-stack/0030.patch @@ -0,0 +1,1417 @@ +From: Dan Minor <dminor@mozilla.com> +Date: Thu, 5 Nov 2020 07:47:00 +0000 +Subject: Bug 1654112 - Tweak upstream gn files for Firefox build. r=ng + +Differential Revision: https://phabricator.services.mozilla.com/D130075 +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/127ace4d8887f11abb201d300a849772a2b519f8 + +Bug 1820869 - avoid building unreachable files. r=ng,webrtc-reviewers + +Differential Revision: https://phabricator.services.mozilla.com/D171922 +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/88b3cc6bbece7c53d00e124713330f3d34d2789d + +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 + +Bug 1828517 - (fix-794d599741) account for moved files in BUILD.gn that we don't want to build. + +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/4a969f6709183d4f55215adaffb8a52b790a8492 + +Bug 1839451 - (fix-186ebdc1b0) remove BUILD.gn refs to gone files delayable.h, media_channel.h + +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/d0f4d1733cb1a2d8189097af4b5537118ebc95a6 + +Bug 1839451 - (fix-f6eae959bf) s/rtc_encoder_simulcast_proxy/rtc_simulcast_encoder_adapter/ BUILD ref. + +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/876b3f5821cd5c30564a82c1da7d057d79d17b01 + +Bug 1828517 - (fix-a138c6c8a5) handle file moves in BUILD.gn + +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/cf7e333da17689b3c115a6ffd07fab042bc5f086 + +Bug 1817024 - (fix-0e2cf6cc01) Skip library create_peer_connection_quality_test_frame_generator. r?mjf! + +Differential Revision: https://phabricator.services.mozilla.com/D170887 +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/fbbc1bf963fda30bca26ae6aac0c3459b8ebea6f + +Bug 1826428 - remove libwebrtc's jvm_android.cc from build r=ng,webrtc-reviewers + +Based on info from John Lin and previous try runs, we're almost +certainly not using this. Let's try removing it from the build +and landing it. If no problems emerge, we'll be able to remove +our custom changes to upstream code in jvm_android.cc. + +Differential Revision: https://phabricator.services.mozilla.com/D174793 +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/dca1b97525487ae57d43ced1ebdb4a2d9c9dae89 + +Bug 1774628 - re-enable support for Windows.Graphics.Capture APIs in libwebrtc. r=pehrsons,webrtc-reviewers + +Differential Revision: https://phabricator.services.mozilla.com/D186862 +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/08567f4539a12b54202aecbf554ec6540fb99ab2 +--- + .gn | 2 + + BUILD.gn | 45 ++++++++++++++++++- + api/BUILD.gn | 34 +++++++++++++- + api/rtp_sender_interface.h | 4 +- + api/rtp_sender_setparameters_callback.cc | 27 +++++++++++ + api/rtp_sender_setparameters_callback.h | 28 ++++++++++++ + api/task_queue/BUILD.gn | 2 + + api/transport/BUILD.gn | 2 + + call/BUILD.gn | 14 +++++- + call/audio_send_stream.h | 2 +- + call/video_send_stream.h | 2 +- + common_audio/BUILD.gn | 4 -- + common_audio/fir_filter_avx2.cc | 2 + + common_audio/intrin.h | 8 ++++ + media/BUILD.gn | 35 ++++++++++++++- + media/base/media_channel.h | 4 -- + media/base/media_channel_impl.cc | 13 ------ + modules/audio_coding/BUILD.gn | 2 +- + modules/audio_device/BUILD.gn | 17 +++++-- + modules/audio_processing/aec3/BUILD.gn | 13 +++--- + .../aec3/adaptive_fir_filter_avx2.cc | 2 +- + .../audio_processing/agc2/rnn_vad/BUILD.gn | 2 +- + modules/desktop_capture/BUILD.gn | 29 +----------- + modules/portal/BUILD.gn | 24 ++++++++++ + modules/utility/BUILD.gn | 4 ++ + modules/video_capture/BUILD.gn | 11 +---- + rtc_base/BUILD.gn | 30 ++++++++++++- + rtc_base/system/BUILD.gn | 2 +- + test/BUILD.gn | 10 +++++ + video/BUILD.gn | 4 +- + webrtc.gni | 32 ++++++++----- + 31 files changed, 311 insertions(+), 99 deletions(-) + create mode 100644 api/rtp_sender_setparameters_callback.cc + create mode 100644 api/rtp_sender_setparameters_callback.h + create mode 100644 common_audio/intrin.h + +diff --git a/.gn b/.gn +index b9948d2fcd..77cfa94d8a 100644 +--- a/.gn ++++ b/.gn +@@ -69,6 +69,8 @@ default_args = { + # Prevent jsoncpp to pass -Wno-deprecated-declarations to users + jsoncpp_no_deprecated_declarations = false + ++ use_custom_libcxx = false ++ + # Fixes the abi-revision issue. + # TODO(https://bugs.webrtc.org/14437): Remove this section if general + # Chromium fix resolves the problem. +diff --git a/BUILD.gn b/BUILD.gn +index 7e8325e306..f61f8965b9 100644 +--- a/BUILD.gn ++++ b/BUILD.gn +@@ -33,7 +33,7 @@ if (is_android) { + import("//third_party/jni_zero/jni_zero.gni") + } + +-if (!build_with_chromium) { ++if (!build_with_chromium && !build_with_mozilla) { + # This target should (transitively) cause everything to be built; if you run + # 'ninja default' and then 'ninja all', the second build should do no work. + group("default") { +@@ -158,6 +158,10 @@ config("common_inherited_config") { + defines += [ "WEBRTC_ENABLE_OBJC_SYMBOL_EXPORT" ] + } + ++ if (build_with_mozilla) { ++ defines += [ "WEBRTC_MOZILLA_BUILD" ] ++ } ++ + if (!rtc_builtin_ssl_root_certificates) { + defines += [ "WEBRTC_EXCLUDE_BUILT_IN_SSL_ROOT_CERTS" ] + } +@@ -480,9 +484,11 @@ config("common_config") { + } + } + ++if (is_mac) { + config("common_objc") { + frameworks = [ "Foundation.framework" ] + } ++} + + if (!build_with_chromium) { + # Target to build all the WebRTC production code. +@@ -532,6 +538,33 @@ if (!build_with_chromium) { + "sdk", + "video", + ] ++ if (build_with_mozilla) { ++ deps -= [ ++ "api:create_peerconnection_factory", ++ "api:rtc_error", ++ "api:transport_api", ++ "api/crypto", ++ "api/rtc_event_log:rtc_event_log_factory", ++ "api/task_queue", ++ "api/task_queue:default_task_queue_factory", ++ "api/test/metrics", ++ "api/video_codecs:video_decoder_factory_template", ++ "api/video_codecs:video_decoder_factory_template_dav1d_adapter", ++ "api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter", ++ "api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter", ++ "api/video_codecs:video_decoder_factory_template_open_h264_adapter", ++ "api/video_codecs:video_encoder_factory_template", ++ "api/video_codecs:video_encoder_factory_template_libaom_av1_adapter", ++ "api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter", ++ "api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter", ++ "api/video_codecs:video_encoder_factory_template_open_h264_adapter", ++ "logging:rtc_event_log_api", ++ "p2p:rtc_p2p", ++ "pc:libjingle_peerconnection", ++ "pc:rtc_pc", ++ "sdk", ++ ] ++ } + + if (rtc_include_builtin_audio_codecs) { + deps += [ +@@ -544,6 +577,16 @@ if (!build_with_chromium) { + deps += [ + "api/video:video_frame", + "api/video:video_rtp_headers", ++ "test:rtp_test_utils", ++ ] ++ # Added when we removed deps in other places to avoid building ++ # unreachable sources. See Bug 1820869. ++ deps += [ ++ "api/video_codecs:video_codecs_api", ++ "api/video_codecs:rtc_software_fallback_wrappers", ++ "media:rtc_simulcast_encoder_adapter", ++ "modules/video_coding:webrtc_vp8", ++ "modules/video_coding:webrtc_vp9", + ] + } else { + deps += [ +diff --git a/api/BUILD.gn b/api/BUILD.gn +index 46703f93ce..d2b7f06c87 100644 +--- a/api/BUILD.gn ++++ b/api/BUILD.gn +@@ -35,7 +35,7 @@ rtc_source_set("callfactory_api") { + ] + } + +-if (!build_with_chromium) { ++if (!build_with_chromium && !build_with_mozilla) { + rtc_library("create_peerconnection_factory") { + visibility = [ "*" ] + allow_poison = [ "default_task_queue" ] +@@ -189,6 +189,10 @@ rtc_source_set("ice_transport_interface") { + } + + rtc_library("dtls_transport_interface") { ++# Previously, Mozilla has tried to limit including this dep, but as ++# upstream changes, it requires whack-a-mole. Making it an empty ++# definition has the same effect, but only requires one change. ++if (!build_with_mozilla) { + visibility = [ "*" ] + + sources = [ +@@ -205,6 +209,7 @@ rtc_library("dtls_transport_interface") { + ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + } ++} + + rtc_library("dtmf_sender_interface") { + visibility = [ "*" ] +@@ -217,6 +222,10 @@ rtc_library("dtmf_sender_interface") { + } + + rtc_library("rtp_sender_interface") { ++# Previously, Mozilla has tried to limit including this dep, but as ++# upstream changes, it requires whack-a-mole. Making it an empty ++# definition has the same effect, but only requires one change. ++if (!build_with_mozilla) { + visibility = [ "*" ] + + sources = [ +@@ -228,8 +237,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", +@@ -237,10 +246,24 @@ 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" ] + } + + rtc_library("libjingle_peerconnection_api") { ++if (!build_with_mozilla) { + visibility = [ "*" ] + cflags = [] + sources = [ +@@ -357,6 +380,7 @@ rtc_library("libjingle_peerconnection_api") { + "//third_party/abseil-cpp/absl/types:optional", + ] + } ++} + + rtc_source_set("frame_transformer_interface") { + visibility = [ "*" ] +@@ -548,6 +572,7 @@ rtc_source_set("peer_network_dependencies") { + } + + rtc_source_set("peer_connection_quality_test_fixture_api") { ++if (!build_with_mozilla) { + visibility = [ "*" ] + testonly = true + sources = [ "test/peerconnection_quality_test_fixture.h" ] +@@ -598,6 +623,7 @@ rtc_source_set("peer_connection_quality_test_fixture_api") { + "//third_party/abseil-cpp/absl/types:optional", + ] + } ++} + + rtc_source_set("frame_generator_api") { + visibility = [ "*" ] +@@ -716,6 +742,7 @@ rtc_library("create_frame_generator") { + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + } + ++if (!build_with_mozilla) { + rtc_library("create_peer_connection_quality_test_frame_generator") { + visibility = [ "*" ] + testonly = true +@@ -732,6 +759,7 @@ rtc_library("create_peer_connection_quality_test_frame_generator") { + ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + } ++} + + rtc_source_set("libjingle_logging_api") { + visibility = [ "*" ] +@@ -904,6 +932,7 @@ rtc_source_set("refcountedbase") { + ] + } + ++if (!build_with_mozilla) { + rtc_library("ice_transport_factory") { + visibility = [ "*" ] + sources = [ +@@ -922,6 +951,7 @@ rtc_library("ice_transport_factory") { + "rtc_event_log:rtc_event_log", + ] + } ++} + + rtc_library("neteq_simulator_api") { + visibility = [ "*" ] +diff --git a/api/rtp_sender_interface.h b/api/rtp_sender_interface.h +index 41d35bc287..619b601f1f 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/api/task_queue/BUILD.gn b/api/task_queue/BUILD.gn +index e0e2e50514..8d845e2735 100644 +--- a/api/task_queue/BUILD.gn ++++ b/api/task_queue/BUILD.gn +@@ -31,6 +31,7 @@ rtc_library("task_queue") { + ] + } + ++if (rtc_include_tests) { + rtc_library("task_queue_test") { + visibility = [ "*" ] + testonly = true +@@ -79,6 +80,7 @@ rtc_library("task_queue_test") { + ] + } + } ++} + + rtc_library("default_task_queue_factory") { + visibility = [ "*" ] +diff --git a/api/transport/BUILD.gn b/api/transport/BUILD.gn +index 84a0968ee9..c0209bf0d0 100644 +--- a/api/transport/BUILD.gn ++++ b/api/transport/BUILD.gn +@@ -91,6 +91,7 @@ rtc_source_set("sctp_transport_factory_interface") { + } + + rtc_source_set("stun_types") { ++if (!build_with_mozilla) { + visibility = [ "*" ] + sources = [ + "stun.cc", +@@ -111,6 +112,7 @@ rtc_source_set("stun_types") { + ] + absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] + } ++} + + if (rtc_include_tests) { + rtc_source_set("test_feedback_generator_interface") { +diff --git a/call/BUILD.gn b/call/BUILD.gn +index 58473dc1ea..825097e8d4 100644 +--- a/call/BUILD.gn ++++ b/call/BUILD.gn +@@ -46,7 +46,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", +@@ -346,6 +346,16 @@ rtc_library("call") { + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", + ] ++ if (build_with_mozilla) { # See Bug 1820869. ++ sources -= [ ++ "call_factory.cc", ++ "degraded_call.cc", ++ ] ++ deps -= [ ++ ":fake_network", ++ ":simulated_network", ++ ] ++ } + } + + rtc_source_set("receive_stream_interface") { +@@ -373,7 +383,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 9c2fad652f..f9e49db574 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 5fde44a719..1a0261be1b 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/common_audio/BUILD.gn b/common_audio/BUILD.gn +index 2ae6d32710..a45214f754 100644 +--- a/common_audio/BUILD.gn ++++ b/common_audio/BUILD.gn +@@ -267,14 +267,10 @@ if (current_cpu == "x86" || current_cpu == "x64") { + "resampler/sinc_resampler_avx2.cc", + ] + +- if (is_win) { +- cflags = [ "/arch:AVX2" ] +- } else { + cflags = [ + "-mavx2", + "-mfma", + ] +- } + + deps = [ + ":fir_filter", +diff --git a/common_audio/fir_filter_avx2.cc b/common_audio/fir_filter_avx2.cc +index 9cb0f770ca..0031392f8a 100644 +--- a/common_audio/fir_filter_avx2.cc ++++ b/common_audio/fir_filter_avx2.cc +@@ -15,6 +15,8 @@ + #include <string.h> + #include <xmmintrin.h> + ++#include "common_audio/intrin.h" ++ + #include "rtc_base/checks.h" + #include "rtc_base/memory/aligned_malloc.h" + +diff --git a/common_audio/intrin.h b/common_audio/intrin.h +new file mode 100644 +index 0000000000..f6ff7f218f +--- /dev/null ++++ b/common_audio/intrin.h +@@ -0,0 +1,8 @@ ++#if defined (__SSE__) ++ #include <immintrin.h> ++ #if defined (__clang__) ++ #include <avxintrin.h> ++ #include <avx2intrin.h> ++ #include <fmaintrin.h> ++ #endif ++#endif +diff --git a/media/BUILD.gn b/media/BUILD.gn +index cf7c523201..97ad4a889a 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", +@@ -139,9 +139,19 @@ rtc_library("rtc_media_base") { + "base/video_source_base.cc", + "base/video_source_base.h", + ] ++ if (build_with_mozilla) { ++ sources -= [ ++ "base/adapted_video_track_source.cc", ++ "base/adapted_video_track_source.h", ++ "base/audio_source.h", ++ "base/media_engine.cc", ++ "base/media_engine.h", ++ ] ++ } + } + + rtc_library("media_channel_impl") { ++if (!build_with_mozilla) { + sources = [ + "base/media_channel_impl.cc", + "base/media_channel_impl.h", +@@ -191,6 +201,7 @@ rtc_library("media_channel_impl") { + "//third_party/abseil-cpp/absl/types:optional", + ] + } ++} + + rtc_source_set("media_channel") { + sources = [ "base/media_channel.h" ] +@@ -269,6 +280,7 @@ rtc_library("codec") { + } + + rtc_library("rtp_utils") { ++if (!build_with_mozilla) { + sources = [ + "base/rtp_utils.cc", + "base/rtp_utils.h", +@@ -285,8 +297,10 @@ rtc_library("rtp_utils") { + ] + absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] + } ++} + + rtc_library("stream_params") { ++if (!build_with_mozilla) { + sources = [ + "base/stream_params.cc", + "base/stream_params.h", +@@ -299,6 +313,7 @@ rtc_library("stream_params") { + ] + absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ] + } ++} + + rtc_library("media_constants") { + sources = [ +@@ -309,6 +324,7 @@ rtc_library("media_constants") { + } + + rtc_library("turn_utils") { ++if (!build_with_mozilla) { + sources = [ + "base/turn_utils.cc", + "base/turn_utils.h", +@@ -319,14 +335,17 @@ rtc_library("turn_utils") { + "../rtc_base/system:rtc_export", + ] + } ++} + + rtc_library("rid_description") { ++if (!build_with_mozilla) { + sources = [ + "base/rid_description.cc", + "base/rid_description.h", + ] + deps = [] + } ++} + + rtc_library("rtc_simulcast_encoder_adapter") { + visibility = [ "*" ] +@@ -400,6 +419,12 @@ rtc_library("rtc_internal_video_codecs") { + "../system_wrappers:field_trial", + "../test:fake_video_codecs", + ] ++ if (build_with_mozilla) { ++ deps -= [ ++ "../modules/video_coding:webrtc_multiplex", # See Bug 1820869. ++ "../test:fake_video_codecs", ++ ] ++ } + + if (enable_libaom) { + defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ] +@@ -425,6 +450,14 @@ rtc_library("rtc_internal_video_codecs") { + "engine/multiplex_codec_factory.cc", + "engine/multiplex_codec_factory.h", + ] ++ if (build_with_mozilla) { ++ sources -= [ ++ "engine/fake_video_codec_factory.cc", ++ "engine/fake_video_codec_factory.h", ++ "engine/internal_encoder_factory.cc", # See Bug 1820869. ++ "engine/multiplex_codec_factory.cc", # See Bug 1820869. ++ ] ++ } + } + + rtc_library("rtc_audio_video") { +diff --git a/media/base/media_channel.h b/media/base/media_channel.h +index f941823323..1fe86f9588 100644 +--- a/media/base/media_channel.h ++++ b/media/base/media_channel.h +@@ -65,10 +65,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 e7e84c781c..5b41a9ccda 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/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn +index 61fecea691..3e4d7e0c25 100644 +--- a/modules/audio_coding/BUILD.gn ++++ b/modules/audio_coding/BUILD.gn +@@ -553,7 +553,7 @@ rtc_library("webrtc_opus_wrapper") { + deps += [ rtc_opus_dir ] + public_configs = [ "//third_party/opus:opus_config" ] + } else if (build_with_mozilla) { +- include_dirs = [ getenv("DIST") + "/include/opus" ] ++ public_configs = [ "//third_party/opus:opus_config" ] + } + } + +diff --git a/modules/audio_device/BUILD.gn b/modules/audio_device/BUILD.gn +index f1ab09d154..4726f93279 100644 +--- a/modules/audio_device/BUILD.gn ++++ b/modules/audio_device/BUILD.gn +@@ -30,6 +30,7 @@ rtc_source_set("audio_device_default") { + } + + rtc_source_set("audio_device") { ++if (!build_with_mozilla) { # See Bug 1820869. + visibility = [ "*" ] + public_deps += [ # no-presubmit-check TODO(webrtc:8603) + ":audio_device_api", +@@ -40,6 +41,7 @@ rtc_source_set("audio_device") { + ":audio_device_impl", + ] + } ++} + + rtc_source_set("audio_device_api") { + visibility = [ "*" ] +@@ -62,6 +64,7 @@ rtc_library("audio_device_config") { + } + + rtc_library("audio_device_buffer") { ++if (!build_with_mozilla) { # See Bug 1820869. + sources = [ + "audio_device_buffer.cc", + "audio_device_buffer.h", +@@ -88,6 +91,7 @@ rtc_library("audio_device_buffer") { + "../../system_wrappers:metrics", + ] + } ++} + + rtc_library("audio_device_generic") { + sources = [ +@@ -265,6 +269,7 @@ if (!build_with_chromium) { + # Contains default implementations of webrtc::AudioDeviceModule for Windows, + # Linux, Mac, iOS and Android. + rtc_library("audio_device_impl") { ++if (!build_with_mozilla) { # See Bug 1820869. + visibility = [ "*" ] + deps = [ + ":audio_device_api", +@@ -314,9 +319,9 @@ rtc_library("audio_device_impl") { + sources = [ "include/fake_audio_device.h" ] + + if (build_with_mozilla) { +- sources += [ +- "opensl/single_rw_fifo.cc", +- "opensl/single_rw_fifo.h", ++ sources -= [ ++ "include/test_audio_device.cc", ++ "include/test_audio_device.h", + ] + } + +@@ -421,6 +426,7 @@ rtc_library("audio_device_impl") { + sources += [ "dummy/file_audio_device_factory.h" ] + } + } ++} + + if (is_mac) { + rtc_source_set("audio_device_impl_frameworks") { +@@ -438,6 +444,7 @@ if (is_mac) { + } + } + ++if (!build_with_mozilla) { # See Bug 1820869. + rtc_source_set("mock_audio_device") { + visibility = [ "*" ] + testonly = true +@@ -454,8 +461,10 @@ rtc_source_set("mock_audio_device") { + "../../test:test_support", + ] + } ++} + +-if (rtc_include_tests && !build_with_chromium) { ++# See Bug 1820869 for !build_with_mozilla. ++if (rtc_include_tests && !build_with_chromium && !build_with_mozilla) { + rtc_library("audio_device_unittests") { + testonly = true + +diff --git a/modules/audio_processing/aec3/BUILD.gn b/modules/audio_processing/aec3/BUILD.gn +index f5eb5d5951..3e11a245a1 100644 +--- a/modules/audio_processing/aec3/BUILD.gn ++++ b/modules/audio_processing/aec3/BUILD.gn +@@ -264,14 +264,11 @@ if (current_cpu == "x86" || current_cpu == "x64") { + "vector_math_avx2.cc", + ] + +- if (is_win) { +- cflags = [ "/arch:AVX2" ] +- } else { +- cflags = [ +- "-mavx2", +- "-mfma", +- ] +- } ++ cflags = [ ++ "-mavx", ++ "-mavx2", ++ "-mfma", ++ ] + + deps = [ + ":adaptive_fir_filter", +diff --git a/modules/audio_processing/aec3/adaptive_fir_filter_avx2.cc b/modules/audio_processing/aec3/adaptive_fir_filter_avx2.cc +index b6eda9f117..8d6e1cf3d7 100644 +--- a/modules/audio_processing/aec3/adaptive_fir_filter_avx2.cc ++++ b/modules/audio_processing/aec3/adaptive_fir_filter_avx2.cc +@@ -8,7 +8,7 @@ + * be found in the AUTHORS file in the root of the source tree. + */ + +-#include <immintrin.h> ++#include "common_audio/intrin.h" + + #include "modules/audio_processing/aec3/adaptive_fir_filter.h" + #include "rtc_base/checks.h" +diff --git a/modules/audio_processing/agc2/rnn_vad/BUILD.gn b/modules/audio_processing/agc2/rnn_vad/BUILD.gn +index 9093a68cf3..3003a585bd 100644 +--- a/modules/audio_processing/agc2/rnn_vad/BUILD.gn ++++ b/modules/audio_processing/agc2/rnn_vad/BUILD.gn +@@ -122,7 +122,7 @@ rtc_source_set("vector_math") { + if (current_cpu == "x86" || current_cpu == "x64") { + rtc_library("vector_math_avx2") { + sources = [ "vector_math_avx2.cc" ] +- if (is_win) { ++ if (is_win && !build_with_mozilla) { + cflags = [ "/arch:AVX2" ] + } else { + cflags = [ +diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn +index fcf1836930..344c8a1531 100644 +--- a/modules/desktop_capture/BUILD.gn ++++ b/modules/desktop_capture/BUILD.gn +@@ -343,37 +343,12 @@ rtc_library("desktop_capture") { + ] + deps += [ ":desktop_capture_objc" ] + } +- +- if (build_with_mozilla) { +- sources += [ +- "desktop_device_info.cc", +- "desktop_device_info.h", +- ] +- if (is_win) { +- sources += [ +- "app_capturer_win.cc", +- "win/desktop_device_info_win.cc", +- "win/win_shared.cc", +- ] +- } +- } + if (rtc_use_x11_extensions || rtc_use_pipewire) { + sources += [ + "mouse_cursor_monitor_linux.cc", + "screen_capturer_linux.cc", + "window_capturer_linux.cc", + ] +- +- if (build_with_mozilla && (is_linux || is_chromeos)) { +- sources += [ +- "app_capturer_linux.cc", +- "linux/x11/app_capturer_x11.cc", +- "linux/x11/desktop_device_info_linux.cc", +- "linux/x11/desktop_device_info_linux.h", +- "linux/x11/shared_x_util.cc", +- "linux/x11/shared_x_util.h", +- ] +- } + } + + if (rtc_use_x11_extensions) { +@@ -539,9 +514,7 @@ rtc_library("desktop_capture") { + deps += [ "../../rtc_base:sanitizer" ] + } + +- if (!build_with_mozilla) { +- deps += [ "//third_party/libyuv" ] +- } ++ deps += [ "//third_party/libyuv" ] + + if (use_desktop_capture_differ_sse2) { + deps += [ ":desktop_capture_differ_sse2" ] +diff --git a/modules/portal/BUILD.gn b/modules/portal/BUILD.gn +index d0756f269b..d7768b2323 100644 +--- a/modules/portal/BUILD.gn ++++ b/modules/portal/BUILD.gn +@@ -11,6 +11,7 @@ import("//tools/generate_stubs/rules.gni") + import("../../webrtc.gni") + + if ((is_linux || is_chromeos) && rtc_use_pipewire) { ++if (!build_with_mozilla) { + pkg_config("gio") { + packages = [ + "gio-2.0", +@@ -88,6 +89,12 @@ if ((is_linux || is_chromeos) && rtc_use_pipewire) { + defines += [ "WEBRTC_USE_GIO" ] + } + } ++} else { ++ config("pipewire_all") { ++ } ++ config("pipewire_config") { ++ } ++} + + rtc_library("portal") { + sources = [ +@@ -120,5 +127,22 @@ if ((is_linux || is_chromeos) && rtc_use_pipewire) { + + deps += [ ":pipewire_stubs" ] + } ++ ++ if (build_with_mozilla) { ++ configs -= [ ++ ":gio", ++ ":pipewire", ++ ":pipewire_config", ++ ] ++ deps -= [ ":pipewire_stubs" ] ++ defines -= [ "WEBRTC_DLOPEN_PIPEWIRE" ] ++ public_deps = [ ++ "//third_party/pipewire", ++ "//third_party/drm", ++ "//third_party/gbm", ++ "//third_party/libepoxy" ++ ] ++ } + } + } ++ +diff --git a/modules/utility/BUILD.gn b/modules/utility/BUILD.gn +index 8cefe5653c..b8d75865f7 100644 +--- a/modules/utility/BUILD.gn ++++ b/modules/utility/BUILD.gn +@@ -25,5 +25,9 @@ rtc_source_set("utility") { + "../../rtc_base:platform_thread", + "../../rtc_base/system:arch", + ] ++ ++ if (build_with_mozilla) { ++ sources -= [ "source/jvm_android.cc" ] ++ } + } + } +diff --git a/modules/video_capture/BUILD.gn b/modules/video_capture/BUILD.gn +index 730ec9bfdd..d473dbb74c 100644 +--- a/modules/video_capture/BUILD.gn ++++ b/modules/video_capture/BUILD.gn +@@ -125,21 +125,12 @@ if (!build_with_chromium || is_linux || is_chromeos) { + "strmiids.lib", + "user32.lib", + ] +- +- if (build_with_mozilla) { +- sources += [ +- "windows/BaseFilter.cpp", +- "windows/BaseInputPin.cpp", +- "windows/BasePin.cpp", +- "windows/MediaType.cpp", +- ] +- } + } + if (is_fuchsia) { + sources += [ "video_capture_factory_null.cc" ] + } + +- if (build_with_mozilla && is_android) { ++ if (!build_with_mozilla && is_android) { + include_dirs = [ + "/config/external/nspr", + "/nsprpub/lib/ds", +diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn +index 99d8e48e39..b411811b70 100644 +--- a/rtc_base/BUILD.gn ++++ b/rtc_base/BUILD.gn +@@ -323,6 +323,7 @@ rtc_library("sample_counter") { + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + } + ++if (!build_with_mozilla) { # See Bug 1820869. + rtc_library("timestamp_aligner") { + visibility = [ "*" ] + sources = [ +@@ -336,6 +337,7 @@ rtc_library("timestamp_aligner") { + "system:rtc_export", + ] + } ++} + + rtc_library("zero_memory") { + visibility = [ "*" ] +@@ -869,7 +871,9 @@ rtc_library("rtc_json") { + "strings/json.h", + ] + deps = [ ":stringutils" ] ++if (!build_with_mozilla) { + all_dependent_configs = [ "//third_party/jsoncpp:jsoncpp_config" ] ++} + if (rtc_build_json) { + deps += [ "//third_party/jsoncpp" ] + } else { +@@ -1234,6 +1238,7 @@ if (!build_with_chromium) { + } + + rtc_library("network") { ++if (!build_with_mozilla) { + visibility = [ "*" ] + sources = [ + "network.cc", +@@ -1272,16 +1277,20 @@ rtc_library("network") { + deps += [ ":win32" ] + } + } ++} + + rtc_library("socket_address_pair") { ++if (!build_with_mozilla) { + sources = [ + "socket_address_pair.cc", + "socket_address_pair.h", + ] + deps = [ ":socket_address" ] + } ++} + + rtc_library("net_helper") { ++if (!build_with_mozilla) { + visibility = [ "*" ] + sources = [ + "net_helper.cc", +@@ -1290,8 +1299,10 @@ rtc_library("net_helper") { + absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] + deps = [ "system:rtc_export" ] + } ++} + + rtc_library("socket_adapters") { ++if (!build_with_mozilla) { + visibility = [ "*" ] + sources = [ + "socket_adapters.cc", +@@ -1311,6 +1322,7 @@ rtc_library("socket_adapters") { + ] + absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] + } ++} + + rtc_library("network_route") { + sources = [ +@@ -1325,6 +1337,7 @@ rtc_library("network_route") { + } + + rtc_library("async_tcp_socket") { ++if (!build_with_mozilla) { + sources = [ + "async_tcp_socket.cc", + "async_tcp_socket.h", +@@ -1342,8 +1355,10 @@ rtc_library("async_tcp_socket") { + "network:sent_packet", + ] + } ++} + + rtc_library("async_udp_socket") { ++if (!build_with_mozilla) { + visibility = [ "*" ] + sources = [ + "async_udp_socket.cc", +@@ -1365,8 +1380,10 @@ rtc_library("async_udp_socket") { + ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + } ++} + + rtc_library("async_packet_socket") { ++if (!build_with_mozilla) { + visibility = [ "*" ] + sources = [ + "async_packet_socket.cc", +@@ -1384,6 +1401,7 @@ rtc_library("async_packet_socket") { + "third_party/sigslot", + ] + } ++} + + rtc_library("mdns_responder_interface") { + sources = [ "mdns_responder_interface.h" ] +@@ -1396,6 +1414,7 @@ rtc_library("dscp") { + } + + rtc_library("proxy_info") { ++if (!build_with_mozilla) { + visibility = [ "*" ] + sources = [ + "proxy_info.cc", +@@ -1406,6 +1425,7 @@ rtc_library("proxy_info") { + ":socket_address", + ] + } ++} + + rtc_library("file_rotating_stream") { + sources = [ +@@ -1434,6 +1454,7 @@ rtc_library("data_rate_limiter") { + } + + rtc_library("unique_id_generator") { ++if (!build_with_mozilla) { + sources = [ + "unique_id_generator.cc", + "unique_id_generator.h", +@@ -1448,6 +1469,7 @@ rtc_library("unique_id_generator") { + ] + absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] + } ++} + + rtc_library("crc32") { + sources = [ +@@ -1475,6 +1497,7 @@ rtc_library("stream") { + } + + rtc_library("rtc_certificate_generator") { ++if (!build_with_mozilla) { + visibility = [ "*" ] + sources = [ + "rtc_certificate_generator.cc", +@@ -1492,8 +1515,10 @@ rtc_library("rtc_certificate_generator") { + "//third_party/abseil-cpp/absl/types:optional", + ] + } ++} + + rtc_library("ssl") { ++if (!build_with_mozilla) { + visibility = [ "*" ] + sources = [ + "helpers.cc", +@@ -1594,6 +1619,7 @@ rtc_library("ssl") { + deps += [ ":win32" ] + } + } ++} + + rtc_library("crypt_string") { + sources = [ +@@ -1603,6 +1629,7 @@ rtc_library("crypt_string") { + } + + rtc_library("http_common") { ++if (!build_with_mozilla) { + sources = [ + "http_common.cc", + "http_common.h", +@@ -1619,6 +1646,7 @@ rtc_library("http_common") { + + absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] + } ++} + + rtc_source_set("gtest_prod") { + sources = [ "gtest_prod_util.h" ] +@@ -2176,7 +2204,7 @@ if (rtc_include_tests) { + } + } + +-if (is_android) { ++if (is_android && !build_with_mozilla) { + rtc_android_library("base_java") { + visibility = [ "*" ] + sources = [ +diff --git a/rtc_base/system/BUILD.gn b/rtc_base/system/BUILD.gn +index 77f5139a2f..486b37590c 100644 +--- a/rtc_base/system/BUILD.gn ++++ b/rtc_base/system/BUILD.gn +@@ -101,7 +101,7 @@ if (is_mac || is_ios) { + rtc_source_set("warn_current_thread_is_deadlocked") { + sources = [ "warn_current_thread_is_deadlocked.h" ] + deps = [] +- if (is_android && !build_with_chromium) { ++ if (is_android && (!build_with_chromium && !build_with_mozilla)) { + sources += [ "warn_current_thread_is_deadlocked.cc" ] + deps += [ + "..:logging", +diff --git a/test/BUILD.gn b/test/BUILD.gn +index be8ee1684e..f7980f941d 100644 +--- a/test/BUILD.gn ++++ b/test/BUILD.gn +@@ -241,6 +241,7 @@ rtc_library("audio_test_common") { + absl_deps = [ "//third_party/abseil-cpp/absl/memory" ] + } + ++if (!build_with_mozilla) { + if (!build_with_chromium) { + if (is_mac || is_ios) { + rtc_library("video_test_mac") { +@@ -294,8 +295,12 @@ if (!build_with_chromium) { + } + } + } ++} + + rtc_library("rtp_test_utils") { ++ if (build_with_mozilla) { ++ sources = [] ++ } else { + testonly = true + sources = [ + "rtcp_packet_parser.cc", +@@ -305,6 +310,7 @@ rtc_library("rtp_test_utils") { + "rtp_file_writer.cc", + "rtp_file_writer.h", + ] ++ } + + deps = [ + "../api:array_view", +@@ -560,7 +566,9 @@ rtc_library("video_test_support") { + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + + if (!is_ios) { ++ if (!build_with_mozilla) { + deps += [ "//third_party:jpeg" ] ++ } + sources += [ "testsupport/jpeg_frame_writer.cc" ] + } else { + sources += [ "testsupport/jpeg_frame_writer_ios.cc" ] +@@ -1322,6 +1330,7 @@ if (!build_with_chromium) { + } + } + ++if (!build_with_mozilla) { + if (!build_with_chromium && is_android) { + rtc_android_library("native_test_java") { + testonly = true +@@ -1335,6 +1344,7 @@ if (!build_with_chromium && is_android) { + ] + } + } ++} + + rtc_library("call_config_utils") { + testonly = true +diff --git a/video/BUILD.gn b/video/BUILD.gn +index 1722ad4f6e..e84b73a352 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", +@@ -404,7 +404,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", +diff --git a/webrtc.gni b/webrtc.gni +index 912b9b4ef0..1ee647b69d 100644 +--- a/webrtc.gni ++++ b/webrtc.gni +@@ -35,6 +35,11 @@ if (is_mac) { + import("//build/config/mac/rules.gni") + } + ++if (is_android) { ++ import("//build/config/android/config.gni") ++ import("//build/config/android/rules.gni") ++} ++ + if (is_fuchsia) { + import("//build/config/fuchsia/config.gni") + } +@@ -42,6 +47,11 @@ if (is_fuchsia) { + # This declare_args is separated from the next one because args declared + # in this one, can be read from the next one (args defined in the same + # declare_args cannot be referenced in that scope). ++declare_args() { ++ # Enable to use the Mozilla internal settings. ++ build_with_mozilla = true ++} ++ + declare_args() { + # Setting this to true will make RTC_EXPORT (see rtc_base/system/rtc_export.h) + # expand to code that will manage symbols visibility. +@@ -92,7 +102,7 @@ declare_args() { + # will tell the pre-processor to remove the default definition of the + # SystemTimeNanos() which is defined in rtc_base/system_time.cc. In + # that case a new implementation needs to be provided. +- rtc_exclude_system_time = build_with_chromium ++ rtc_exclude_system_time = build_with_chromium || build_with_mozilla + + # Setting this to false will require the API user to pass in their own + # SSLCertificateVerifier to verify the certificates presented from a +@@ -118,7 +128,7 @@ declare_args() { + + # Used to specify an external OpenSSL include path when not compiling the + # library that comes with WebRTC (i.e. rtc_build_ssl == 0). +- rtc_ssl_root = "" ++ rtc_ssl_root = "unused" + + # Enable when an external authentication mechanism is used for performing + # packet authentication for RTP packets instead of libsrtp. +@@ -135,13 +145,13 @@ declare_args() { + rtc_enable_bwe_test_logging = false + + # Set this to false to skip building examples. +- rtc_build_examples = true ++ rtc_build_examples = false + + # Set this to false to skip building tools. +- rtc_build_tools = true ++ rtc_build_tools = false + + # Set this to false to skip building code that requires X11. +- rtc_use_x11 = ozone_platform_x11 ++ rtc_use_x11 = use_x11 + + # Set this to use PipeWire on the Wayland display server. + # By default it's only enabled on desktop Linux (excludes ChromeOS) and +@@ -152,9 +162,6 @@ declare_args() { + # Set this to link PipeWire and required libraries directly instead of using the dlopen. + rtc_link_pipewire = false + +- # Enable to use the Mozilla internal settings. +- build_with_mozilla = false +- + # Experimental: enable use of Android AAudio which requires Android SDK 26 or above + # and NDK r16 or above. + rtc_enable_android_aaudio = false +@@ -280,7 +287,7 @@ declare_args() { + rtc_build_json = !build_with_mozilla + rtc_build_libsrtp = !build_with_mozilla + rtc_build_libvpx = !build_with_mozilla +- rtc_libvpx_build_vp9 = !build_with_mozilla ++ rtc_libvpx_build_vp9 = true + rtc_build_opus = !build_with_mozilla + rtc_build_ssl = !build_with_mozilla + +@@ -299,7 +306,7 @@ declare_args() { + + # Chromium uses its own IO handling, so the internal ADM is only built for + # standalone WebRTC. +- rtc_include_internal_audio_device = !build_with_chromium ++ rtc_include_internal_audio_device = !build_with_chromium && !build_with_mozilla + + # Set this to true to enable the avx2 support in webrtc. + # TODO: Make sure that AVX2 works also for non-clang compilers. +@@ -343,6 +350,9 @@ declare_args() { + rtc_enable_grpc = rtc_enable_protobuf && (is_linux || is_mac) + } + ++# Enable liboam only on non-mozilla builds. ++enable_libaom = !build_with_mozilla ++ + # Make it possible to provide custom locations for some libraries (move these + # up into declare_args should we need to actually use them for the GN build). + rtc_libvpx_dir = "//third_party/libvpx" +@@ -1144,7 +1154,7 @@ if (is_mac || is_ios) { + } + } + +-if (is_android) { ++if (is_android && !build_with_mozilla) { + template("rtc_android_library") { + android_library(target_name) { + forward_variables_from(invoker, |