From: Dan Minor 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 Bug 1876843 - (fix-082cb56ee7) remove mozilla dependency on pc:media_factory. Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/136b3fc0377be6dcaa302469d27968f445e0355e Bug 1876843 - (fix-b29ff000da) remove mozilla dependency on api:enable_media Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/7f403ee038e9797a1aff6161fc70a2d92769851f Bug 1883116 - (fix-3d9c3687a4) Supporting change of call_factory.cc to create_call.cc. Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/b86cb7278bc4e557104cec0313d83511b9c8f40d --- .gn | 2 + BUILD.gn | 45 ++++++++++++++++++- api/BUILD.gn | 37 ++++++++++++++- 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 | 2 +- call/audio_send_stream.h | 2 +- call/video_send_stream.h | 2 +- common_audio/BUILD.gn | 4 -- common_audio/fir_filter_avx2.cc | 2 + media/BUILD.gn | 39 +++++++++++++++- media/base/media_channel.h | 3 -- media/base/media_channel_impl.cc | 9 ---- 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 | 26 ++++++++++- rtc_base/system/BUILD.gn | 2 +- test/BUILD.gn | 10 +++++ video/BUILD.gn | 4 +- webrtc.gni | 32 ++++++++----- 30 files changed, 296 insertions(+), 92 deletions(-) create mode 100644 api/rtp_sender_setparameters_callback.cc create mode 100644 api/rtp_sender_setparameters_callback.h diff --git a/.gn b/.gn index e8484bfad5..ffafaf0a4a 100644 --- a/.gn +++ b/.gn @@ -71,6 +71,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 5bbc5b79a2..8312d006c9 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") { @@ -160,6 +160,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" ] } @@ -502,9 +506,11 @@ config("common_config") { } } +if (is_mac) { config("common_objc") { frameworks = [ "Foundation.framework" ] } +} if (!rtc_build_ssl) { config("external_ssl_library") { @@ -568,6 +574,33 @@ if (!build_with_chromium) { "sdk", "video", ] + if (build_with_mozilla) { + deps -= [ + "api:create_modular_peer_connection_factory", + "api:create_peerconnection_factory", + "api:enable_media", + "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/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", + "pc:libjingle_peerconnection", + "pc:rtc_pc", + "sdk", + ] + } if (rtc_include_builtin_audio_codecs) { deps += [ @@ -580,6 +613,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", ] } diff --git a/api/BUILD.gn b/api/BUILD.gn index 3f74fad8b4..9b9128ae66 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn @@ -44,6 +44,9 @@ rtc_library("enable_media") { "environment", "//third_party/abseil-cpp/absl/base:nullability", ] + if (build_with_mozilla) { + deps -= [ "../pc:media_factory" ] + } } rtc_library("enable_media_with_defaults") { @@ -89,7 +92,7 @@ rtc_library("create_modular_peer_connection_factory") { ] } -if (!build_with_chromium) { +if (!build_with_chromium && !build_with_mozilla) { rtc_library("create_peerconnection_factory") { visibility = [ "*" ] allow_poison = [ "environment_construction" ] @@ -246,6 +249,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 = [ @@ -262,6 +269,7 @@ rtc_library("dtls_transport_interface") { "//third_party/abseil-cpp/absl/base:core_headers", ] } +} rtc_library("dtmf_sender_interface") { visibility = [ "*" ] @@ -274,6 +282,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 = [ @@ -288,6 +300,7 @@ rtc_library("rtp_sender_interface") { ":ref_count", ":rtc_error", ":rtp_parameters", + ":rtp_sender_setparameters_callback", ":scoped_refptr", "../rtc_base:checks", "../rtc_base/system:rtc_export", @@ -296,6 +309,20 @@ rtc_library("rtp_sender_interface") { "//third_party/abseil-cpp/absl/functional:any_invocable", ] } +} + +rtc_library("rtp_sender_setparameters_callback") { + visibility = [ "*" ] + + sources = [ + "rtp_sender_setparameters_callback.cc", + "rtp_sender_setparameters_callback.h", + ] + deps = [ + ":rtc_error", + "//third_party/abseil-cpp/absl/functional:any_invocable", + ] +} rtc_library("sctp_transport_interface") { visibility = [ "*" ] @@ -366,6 +393,7 @@ rtc_library("jsep") { } rtc_library("libjingle_peerconnection_api") { +if (!build_with_mozilla) { visibility = [ "*" ] cflags = [] sources = [ @@ -489,6 +517,7 @@ rtc_library("libjingle_peerconnection_api") { "../rtc_base/system:rtc_export", ] } +} rtc_library("frame_transformer_interface") { visibility = [ "*" ] @@ -712,6 +741,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" ] @@ -756,6 +786,7 @@ rtc_source_set("peer_connection_quality_test_fixture_api") { "//third_party/abseil-cpp/absl/strings:string_view", ] } +} rtc_library("frame_generator_api") { visibility = [ "*" ] @@ -863,6 +894,7 @@ rtc_library("create_frame_generator") { ] } +if (!build_with_mozilla) { rtc_library("create_peer_connection_quality_test_frame_generator") { visibility = [ "*" ] testonly = true @@ -880,6 +912,7 @@ rtc_library("create_peer_connection_quality_test_frame_generator") { "units:time_delta", ] } +} rtc_source_set("data_channel_event_observer_interface") { visibility = [ "*" ] @@ -1073,6 +1106,7 @@ rtc_source_set("refcountedbase") { } rtc_library("ice_transport_factory") { +if (!build_with_mozilla) { visibility = [ "*" ] sources = [ "ice_transport_factory.cc", @@ -1095,6 +1129,7 @@ rtc_library("ice_transport_factory") { "rtc_event_log", ] } +} rtc_library("neteq_simulator_api") { visibility = [ "*" ] diff --git a/api/rtp_sender_interface.h b/api/rtp_sender_interface.h index db04b9580c..56030c1b33 100644 --- a/api/rtp_sender_interface.h +++ b/api/rtp_sender_interface.h @@ -34,6 +34,8 @@ #include "api/video_codecs/video_encoder_factory.h" #include "rtc_base/system/rtc_export.h" +#include "api/rtp_sender_setparameters_callback.h" + namespace webrtc { class RtpSenderObserverInterface { @@ -46,8 +48,6 @@ class RtpSenderObserverInterface { virtual ~RtpSenderObserverInterface() {} }; -using SetParametersCallback = absl::AnyInvocable; - class RTC_EXPORT RtpSenderInterface : public RefCountInterface, public FrameTransformerHost { 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; + +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 71778f52ec..7db75d5fd3 100644 --- a/api/task_queue/BUILD.gn +++ b/api/task_queue/BUILD.gn @@ -29,6 +29,7 @@ rtc_library("task_queue") { ] } +if (rtc_include_tests) { rtc_library("task_queue_test") { visibility = [ "*" ] testonly = true @@ -74,6 +75,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 6c1101931c..e6921d3385 100644 --- a/api/transport/BUILD.gn +++ b/api/transport/BUILD.gn @@ -96,6 +96,7 @@ rtc_source_set("sctp_transport_factory_interface") { } rtc_library("stun_types") { +if (!build_with_mozilla) { visibility = [ "*" ] sources = [ "stun.cc", @@ -118,6 +119,7 @@ rtc_library("stun_types") { "//third_party/abseil-cpp/absl/strings:string_view", ] } +} if (rtc_include_tests) { rtc_source_set("test_feedback_generator_interface") { diff --git a/call/BUILD.gn b/call/BUILD.gn index ea1630210b..29b1f4dcd7 100644 --- a/call/BUILD.gn +++ b/call/BUILD.gn @@ -48,7 +48,7 @@ rtc_library("call_interfaces") { "../api:ref_count", "../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 84341b5cb1..2ae1742f91 100644 --- a/call/audio_send_stream.h +++ b/call/audio_send_stream.h @@ -27,7 +27,7 @@ #include "api/frame_transformer_interface.h" #include "api/rtp_headers.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/units/time_delta.h" #include "call/audio_sender.h" diff --git a/call/video_send_stream.h b/call/video_send_stream.h index c5a24d2c48..6ae8932ca9 100644 --- a/call/video_send_stream.h +++ b/call/video_send_stream.h @@ -24,7 +24,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/units/data_rate.h" #include "api/video/encoded_image.h" diff --git a/common_audio/BUILD.gn b/common_audio/BUILD.gn index e9b469f258..9176dbcc47 100644 --- a/common_audio/BUILD.gn +++ b/common_audio/BUILD.gn @@ -266,14 +266,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 88890be798..c9aefc297b 100644 --- a/common_audio/fir_filter_avx2.cc +++ b/common_audio/fir_filter_avx2.cc @@ -16,6 +16,8 @@ #include #include +#include "common_audio/intrin.h" + #include "rtc_base/checks.h" #include "rtc_base/memory/aligned_malloc.h" diff --git a/media/BUILD.gn b/media/BUILD.gn index d8e6464ddb..1132b1ac3c 100644 --- a/media/BUILD.gn +++ b/media/BUILD.gn @@ -77,7 +77,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", @@ -129,6 +129,12 @@ rtc_library("rtc_media_base") { "../video/config:encoder_config", "//third_party/abseil-cpp/absl/base:core_headers", ] + if (build_with_mozilla) { + sources -= [ + "base/adapted_video_track_source.cc", + "base/adapted_video_track_source.h", + ] + } } rtc_library("adapted_video_track_source") { @@ -155,6 +161,9 @@ rtc_library("adapted_video_track_source") { rtc_source_set("audio_source") { sources = [ "base/audio_source.h" ] + if (build_with_mozilla) { + sources -= [ "base/audio_source.h" ] + } } rtc_library("video_adapter") { @@ -264,9 +273,16 @@ rtc_library("media_engine") { "../rtc_base/system:file_wrapper", "//third_party/abseil-cpp/absl/algorithm:container", ] + if (build_with_mozilla) { + sources -= [ + "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", @@ -314,6 +330,7 @@ rtc_library("media_channel_impl") { "//third_party/abseil-cpp/absl/strings:string_view", ] } +} rtc_source_set("media_channel") { sources = [ "base/media_channel.h" ] @@ -413,6 +430,7 @@ rtc_library("codec_list") { } rtc_library("rtp_utils") { +if (!build_with_mozilla) { sources = [ "base/rtp_utils.cc", "base/rtp_utils.h", @@ -429,8 +447,10 @@ rtc_library("rtp_utils") { "//third_party/abseil-cpp/absl/strings:string_view", ] } +} rtc_library("stream_params") { +if (!build_with_mozilla) { sources = [ "base/stream_params.cc", "base/stream_params.h", @@ -444,6 +464,7 @@ rtc_library("stream_params") { "//third_party/abseil-cpp/absl/algorithm:container", ] } +} rtc_library("media_constants") { sources = [ @@ -454,6 +475,7 @@ rtc_library("media_constants") { } rtc_library("turn_utils") { +if (!build_with_mozilla) { sources = [ "base/turn_utils.cc", "base/turn_utils.h", @@ -464,14 +486,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 = [ ":codec" ] } +} rtc_library("rtc_simulcast_encoder_adapter") { visibility = [ "*" ] @@ -552,6 +577,11 @@ rtc_library("rtc_internal_video_codecs") { "//third_party/abseil-cpp/absl/container:inlined_vector", "//third_party/abseil-cpp/absl/strings", ] + if (build_with_mozilla) { + deps -= [ + "../test:fake_video_codecs", + ] + } if (enable_libaom) { defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ] @@ -571,6 +601,13 @@ rtc_library("rtc_internal_video_codecs") { "engine/internal_encoder_factory.cc", "engine/internal_encoder_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. + ] + } } rtc_library("rtc_audio_video") { diff --git a/media/base/media_channel.h b/media/base/media_channel.h index ceb5c48256..1d331532f1 100644 --- a/media/base/media_channel.h +++ b/media/base/media_channel.h @@ -68,9 +68,6 @@ namespace webrtc { class VideoFrame; struct VideoFormat; -webrtc::RTCError InvokeSetParametersCallback(SetParametersCallback& callback, - RTCError error); - class VideoMediaSendChannelInterface; class VideoMediaReceiveChannelInterface; class VoiceMediaSendChannelInterface; diff --git a/media/base/media_channel_impl.cc b/media/base/media_channel_impl.cc index 2cb3560682..01fcd82dc8 100644 --- a/media/base/media_channel_impl.cc +++ b/media/base/media_channel_impl.cc @@ -35,15 +35,6 @@ namespace webrtc { -webrtc::RTCError InvokeSetParametersCallback(SetParametersCallback& callback, - RTCError error) { - if (callback) { - std::move(callback)(error); - callback = nullptr; - } - return error; -} - VideoOptions::VideoOptions() : content_hint(VideoTrackInterface::ContentHint::kNone) {} VideoOptions::~VideoOptions() = default; diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn index 02c3ccde22..cf992635fe 100644 --- a/modules/audio_coding/BUILD.gn +++ b/modules/audio_coding/BUILD.gn @@ -362,7 +362,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 c8b15e4040..7ace1135c8 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 = [ "*" ] @@ -51,6 +53,7 @@ rtc_source_set("audio_device_api") { } rtc_library("audio_device_buffer") { +if (!build_with_mozilla) { # See Bug 1820869. sources = [ "audio_device_buffer.cc", "audio_device_buffer.h", @@ -79,6 +82,7 @@ rtc_library("audio_device_buffer") { "../../system_wrappers:metrics", ] } +} rtc_library("audio_device_generic") { sources = [ @@ -257,6 +261,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_buffer", @@ -303,9 +308,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", ] } @@ -408,6 +413,7 @@ rtc_library("audio_device_impl") { sources += [ "dummy/file_audio_device_factory.h" ] } } +} if (is_mac) { rtc_source_set("audio_device_impl_frameworks") { @@ -425,6 +431,7 @@ if (is_mac) { } } +if (!build_with_mozilla) { # See Bug 1820869. rtc_source_set("mock_audio_device") { visibility = [ "*" ] testonly = true @@ -443,8 +450,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 9d17d51194..e64cf48c0b 100644 --- a/modules/audio_processing/aec3/BUILD.gn +++ b/modules/audio_processing/aec3/BUILD.gn @@ -267,14 +267,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 f7ba1fda86..121f13e79f 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 +#include "common_audio/intrin.h" #include #include diff --git a/modules/audio_processing/agc2/rnn_vad/BUILD.gn b/modules/audio_processing/agc2/rnn_vad/BUILD.gn index 075e2a8110..1f3a66667a 100644 --- a/modules/audio_processing/agc2/rnn_vad/BUILD.gn +++ b/modules/audio_processing/agc2/rnn_vad/BUILD.gn @@ -121,7 +121,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 82c10e4c5f..693e45ff8b 100644 --- a/modules/desktop_capture/BUILD.gn +++ b/modules/desktop_capture/BUILD.gn @@ -348,37 +348,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) { @@ -541,9 +516,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 de8a81be55..e8367393a3 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", @@ -89,6 +90,12 @@ if ((is_linux || is_chromeos) && rtc_use_pipewire) { defines += [ "WEBRTC_USE_GIO" ] } } +} else { + config("pipewire_all") { + } + config("pipewire_config") { + } +} rtc_library("portal") { sources = [ @@ -122,5 +129,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 167bce9157..89203fbcb4 100644 --- a/modules/utility/BUILD.gn +++ b/modules/utility/BUILD.gn @@ -26,5 +26,9 @@ rtc_library("utility") { "../../rtc_base:platform_thread_types", "../../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 39aa39a41c..b26e30e8bb 100644 --- a/modules/video_capture/BUILD.gn +++ b/modules/video_capture/BUILD.gn @@ -137,21 +137,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 fc768d490f..548cf9fc00 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -327,6 +327,7 @@ rtc_library("sample_counter") { ] } +if (!build_with_mozilla) { # See Bug 1820869. rtc_library("timestamp_aligner") { visibility = [ "*" ] sources = [ @@ -340,6 +341,7 @@ rtc_library("timestamp_aligner") { "system:rtc_export", ] } +} rtc_library("zero_memory") { visibility = [ "*" ] @@ -811,7 +813,9 @@ rtc_library("rtc_json") { "//third_party/abseil-cpp/absl/strings", "//third_party/abseil-cpp/absl/strings:string_view", ] +if (!build_with_mozilla) { all_dependent_configs = [ "//third_party/jsoncpp:jsoncpp_config" ] +} if (rtc_build_json) { deps += [ "//third_party/jsoncpp" ] } else { @@ -1204,6 +1208,7 @@ if (!build_with_chromium) { } rtc_library("network") { +if (!build_with_mozilla) { visibility = [ "*" ] sources = [ "network.cc", @@ -1248,6 +1253,7 @@ rtc_library("network") { deps += [ ":win32" ] } } +} rtc_source_set("sigslot_trampoline") { sources = [ "sigslot_trampoline.h" ] @@ -1270,14 +1276,17 @@ rtc_library("sigslot_trampoline_unittest") { } 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", @@ -1288,8 +1297,10 @@ rtc_library("net_helper") { "//third_party/abseil-cpp/absl/strings", ] } +} rtc_library("socket_adapters") { +if (!build_with_mozilla) { visibility = [ "*" ] sources = [ "socket_adapters.cc", @@ -1311,6 +1322,7 @@ rtc_library("socket_adapters") { "//third_party/abseil-cpp/absl/strings:string_view", ] } +} 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", @@ -1347,8 +1360,10 @@ rtc_library("async_tcp_socket") { "//third_party/abseil-cpp/absl/memory", ] } +} rtc_library("async_udp_socket") { +if (!build_with_mozilla) { visibility = [ "*" ] sources = [ "async_udp_socket.cc", @@ -1374,8 +1389,10 @@ rtc_library("async_udp_socket") { "//third_party/abseil-cpp/absl/base:nullability", ] } +} rtc_library("async_packet_socket") { +if (!build_with_mozilla) { visibility = [ "*" ] sources = [ "async_packet_socket.cc", @@ -1399,6 +1416,7 @@ rtc_library("async_packet_socket") { "//third_party/abseil-cpp/absl/functional:any_invocable", ] } +} if (rtc_include_tests) { rtc_library("async_packet_socket_unittest") { @@ -1491,6 +1509,7 @@ rtc_library("data_rate_limiter") { } rtc_library("unique_id_generator") { +if (!build_with_mozilla) { sources = [ "unique_id_generator.cc", "unique_id_generator.h", @@ -1508,6 +1527,7 @@ rtc_library("unique_id_generator") { "//third_party/abseil-cpp/absl/strings:string_view", ] } +} rtc_library("crc32") { sources = [ @@ -1539,6 +1559,7 @@ rtc_library("stream") { } rtc_library("rtc_certificate_generator") { +if (!build_with_mozilla) { visibility = [ "*" ] sources = [ "rtc_certificate_generator.cc", @@ -1553,6 +1574,7 @@ rtc_library("rtc_certificate_generator") { "//third_party/abseil-cpp/absl/functional:any_invocable", ] } +} rtc_source_set("ssl_header") { visibility = [ "*" ] @@ -1609,6 +1631,7 @@ rtc_library("crypto_random") { } rtc_library("ssl") { +if (!build_with_mozilla) { visibility = [ "*" ] sources = [ "openssl_key_pair.cc", @@ -1681,6 +1704,7 @@ rtc_library("ssl") { deps += [ ":win32" ] } } +} rtc_library("ssl_adapter") { visibility = [ "*" ] @@ -2423,7 +2447,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 c1181618e9..4a772795ed 100644 --- a/rtc_base/system/BUILD.gn +++ b/rtc_base/system/BUILD.gn @@ -101,7 +101,7 @@ if (is_mac || is_ios) { rtc_library("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 be755675ca..4a44792e11 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -279,6 +279,7 @@ rtc_library("audio_test_common") { ] } +if (!build_with_mozilla) { if (!build_with_chromium) { if (is_mac || is_ios) { rtc_library("video_test_mac") { @@ -333,8 +334,12 @@ if (!build_with_chromium) { } } } +} rtc_library("rtp_test_utils") { + if (build_with_mozilla) { + sources = [] + } else { testonly = true sources = [ "rtcp_packet_parser.cc", @@ -344,6 +349,7 @@ rtc_library("rtp_test_utils") { "rtp_file_writer.cc", "rtp_file_writer.h", ] + } deps = [ "../api:array_view", @@ -523,7 +529,9 @@ rtc_library("video_frame_writer") { ] 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" ] @@ -1371,6 +1379,7 @@ if (!build_with_chromium) { } } +if (!build_with_mozilla) { if (!build_with_chromium && is_android) { rtc_android_library("native_test_java") { testonly = true @@ -1413,6 +1422,7 @@ if (!build_with_chromium && is_android) { sources = [ "android/org/webrtc/native_test/NativeTestWebrtc.java" ] } } +} rtc_library("call_config_utils") { testonly = true diff --git a/video/BUILD.gn b/video/BUILD.gn index 9973cdfa4d..4bd70867d5 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", @@ -443,7 +443,7 @@ rtc_library("video_stream_encoder_impl") { "../api:rtc_error", "../api:rtp_packet_info", "../api:rtp_parameters", - "../api:rtp_sender_interface", + "../api:rtp_sender_setparameters_callback", "../api:scoped_refptr", "../api:sequence_checker", "../api/adaptation:resource_adaptation_api", diff --git a/webrtc.gni b/webrtc.gni index 0a291ff95c..63f36cc466 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") } @@ -46,6 +51,11 @@ if (build_with_chromium) { # 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. @@ -79,7 +89,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 @@ -102,7 +112,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. @@ -116,13 +126,13 @@ declare_args() { rtc_exclude_audio_processing_module = 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 @@ -133,9 +143,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 @@ -277,7 +284,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 @@ -286,7 +293,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. @@ -332,6 +339,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" @@ -1212,7 +1222,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,