tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit e80418de9b3e06015752b2773bf6252a9d50781e
parent 424bbaa05a8a810469abf9bd93dc441a6ceb407d
Author: Dan Baker <dbaker@mozilla.com>
Date:   Thu, 23 Oct 2025 15:40:40 -0600

Bug 1995393 - Vendor libwebrtc from 7d159d47a1

Upstream commit: https://webrtc.googlesource.com/src/+/7d159d47a193d1048a63e6cc12cae4039853c7ff
    Save Environment in the AudioEncoderOpus

    This allows to simplify AudioEncoder api as it doesn't need to pass
    RtcEventLog that is already available for the encoder implementation.

    It would also would allow to rely on propagated rather than global clock.

    Bug: webrtc:42223992
    Change-Id: Ic42938e62938acf3cd6a11b616364809c63d69d9
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/404520
    Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
    Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45348}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/api/audio_codecs/audio_encoder.cc | 10+++++++---
Mthird_party/libwebrtc/api/audio_codecs/audio_encoder.h | 3+++
Mthird_party/libwebrtc/audio/audio_send_stream.cc | 12++++++++++++
Mthird_party/libwebrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc | 27++++++++++++---------------
Mthird_party/libwebrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h | 13++++---------
Mthird_party/libwebrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc | 19+++++++++----------
Mthird_party/libwebrtc/modules/audio_coding/codecs/red/audio_encoder_copy_red.cc | 6++----
Mthird_party/libwebrtc/modules/audio_coding/codecs/red/audio_encoder_copy_red.h | 5++---
Mthird_party/libwebrtc/moz-patch-stack/s0007.patch | 2+-
Mthird_party/libwebrtc/moz-patch-stack/s0029.patch | 2+-
11 files changed, 55 insertions(+), 48 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:38:29.549154+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-23T21:40:28.858947+00:00. # base of lastest vendoring -36616fbc84 +7d159d47a1 diff --git a/third_party/libwebrtc/api/audio_codecs/audio_encoder.cc b/third_party/libwebrtc/api/audio_codecs/audio_encoder.cc @@ -16,6 +16,7 @@ #include <optional> #include <string> +#include "absl/strings/string_view.h" #include "api/array_view.h" #include "api/call/bitrate_allocation.h" #include "rtc_base/buffer.h" @@ -82,9 +83,12 @@ AudioEncoder::ReclaimContainedEncoders() { return nullptr; } -bool AudioEncoder::EnableAudioNetworkAdaptor( - const std::string& /* config_string */, - RtcEventLog* /* event_log */) { +bool AudioEncoder::EnableAudioNetworkAdaptor(const std::string& config_string, + RtcEventLog* /* event_log */) { + return EnableAudioNetworkAdaptor(config_string); +} + +bool AudioEncoder::EnableAudioNetworkAdaptor(absl::string_view /*config*/) { return false; } diff --git a/third_party/libwebrtc/api/audio_codecs/audio_encoder.h b/third_party/libwebrtc/api/audio_codecs/audio_encoder.h @@ -21,6 +21,7 @@ #include <vector> #include "absl/base/attributes.h" +#include "absl/strings/string_view.h" #include "api/array_view.h" #include "api/audio/audio_view.h" #include "api/call/bitrate_allocation.h" @@ -201,8 +202,10 @@ class AudioEncoder { virtual ArrayView<std::unique_ptr<AudioEncoder>> ReclaimContainedEncoders(); // Enables audio network adaptor. Returns true if successful. + [[deprecated]] virtual bool EnableAudioNetworkAdaptor(const std::string& config_string, RtcEventLog* event_log); + virtual bool EnableAudioNetworkAdaptor(absl::string_view config); // Disables audio network adaptor. virtual void DisableAudioNetworkAdaptor(); diff --git a/third_party/libwebrtc/audio/audio_send_stream.cc b/third_party/libwebrtc/audio/audio_send_stream.cc @@ -606,8 +606,14 @@ bool AudioSendStream::SetupSendCodec(const Config& new_config) { // Enable ANA if configured (currently only used by Opus). if (new_config.audio_network_adaptor_config) { +// TODO: bugs.webrtc.org/42223992 - call non-deprecated variant of the +// `EnableAudioNetworkAdaptor` when deprecated one is removed from the +// interface. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" if (encoder->EnableAudioNetworkAdaptor( *new_config.audio_network_adaptor_config, &env_.event_log())) { +#pragma clang diagnostic pop RTC_LOG(LS_INFO) << "Audio network adaptor enabled on SSRC " << new_config.rtp.ssrc; } else { @@ -707,8 +713,14 @@ void AudioSendStream::ReconfigureANA(const Config& new_config) { if (new_config.audio_network_adaptor_config) { channel_send_->CallEncoder([&](AudioEncoder* encoder) { RTC_DCHECK_RUN_ON(&worker_thread_checker_); +// TODO: bugs.webrtc.org/42223992 - call non-deprecated variant of the +// `EnableAudioNetworkAdaptor` when deprecated one is removed from the +// interface. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" if (encoder->EnableAudioNetworkAdaptor( *new_config.audio_network_adaptor_config, &env_.event_log())) { +#pragma clang diagnostic pop RTC_LOG(LS_INFO) << "Audio network adaptor enabled on SSRC " << new_config.rtp.ssrc; if (overhead_per_packet_ > 0) { diff --git a/third_party/libwebrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/third_party/libwebrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc @@ -369,8 +369,8 @@ AudioEncoderOpusImpl::AudioEncoderOpusImpl(const Environment& env, env, config, payload_type, - [this](absl::string_view config_string, RtcEventLog* event_log) { - return DefaultAudioNetworkAdaptorCreator(config_string, event_log); + [this](absl::string_view config) { + return DefaultAudioNetworkAdaptorCreator(config); }, // We choose 5sec as initial time constant due to empirical data. std::make_unique<SmoothingFilterImpl>(5'000)) {} @@ -381,11 +381,12 @@ AudioEncoderOpusImpl::AudioEncoderOpusImpl( int payload_type, const AudioNetworkAdaptorCreator& audio_network_adaptor_creator, std::unique_ptr<SmoothingFilter> bitrate_smoother) - : payload_type_(payload_type), + : env_(env), + payload_type_(payload_type), adjust_bandwidth_( - env.field_trials().IsEnabled("WebRTC-AdjustOpusBandwidth")), + env_.field_trials().IsEnabled("WebRTC-AdjustOpusBandwidth")), bitrate_changed_(true), - bitrate_multipliers_(GetBitrateMultipliers(env.field_trials())), + bitrate_multipliers_(GetBitrateMultipliers(env_.field_trials())), packet_loss_rate_(0.0), inst_(nullptr), packet_loss_fraction_smoother_(new PacketLossFractionSmoother()), @@ -477,11 +478,8 @@ void AudioEncoderOpusImpl::SetMaxPlaybackRate(int frequency_hz) { RTC_CHECK(RecreateEncoderInstance(conf)); } -bool AudioEncoderOpusImpl::EnableAudioNetworkAdaptor( - const std::string& config_string, - RtcEventLog* event_log) { - audio_network_adaptor_ = - audio_network_adaptor_creator_(config_string, event_log); +bool AudioEncoderOpusImpl::EnableAudioNetworkAdaptor(absl::string_view config) { + audio_network_adaptor_ = audio_network_adaptor_creator_(config); return audio_network_adaptor_ != nullptr; } @@ -772,16 +770,15 @@ void AudioEncoderOpusImpl::ApplyAudioNetworkAdaptor() { std::unique_ptr<AudioNetworkAdaptor> AudioEncoderOpusImpl::DefaultAudioNetworkAdaptorCreator( - absl::string_view config_string, - RtcEventLog* event_log) const { + absl::string_view config_string) const { AudioNetworkAdaptorImpl::Config config; - config.event_log = event_log; - return std::unique_ptr<AudioNetworkAdaptor>(new AudioNetworkAdaptorImpl( + config.event_log = &env_.event_log(); + return std::make_unique<AudioNetworkAdaptorImpl>( config, ControllerManagerImpl::Create( config_string, NumChannels(), supported_frame_lengths_ms(), AudioEncoderOpusConfig::kMinBitrateBps, num_channels_to_encode_, next_frame_length_ms_, - GetTargetBitrate(), config_.fec_enabled, GetDtx()))); + GetTargetBitrate(), config_.fec_enabled, GetDtx())); } void AudioEncoderOpusImpl::MaybeUpdateUplinkBandwidth() { diff --git a/third_party/libwebrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h b/third_party/libwebrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h @@ -16,7 +16,6 @@ #include <functional> #include <memory> #include <optional> -#include <string> #include <utility> #include <vector> @@ -35,8 +34,6 @@ namespace webrtc { -class RtcEventLog; - class AudioEncoderOpusImpl final : public AudioEncoder { public: // Returns empty if the current bitrate falls within the hysteresis window, @@ -54,8 +51,7 @@ class AudioEncoderOpusImpl final : public AudioEncoder { OpusEncInst* inst); using AudioNetworkAdaptorCreator = - std::function<std::unique_ptr<AudioNetworkAdaptor>(absl::string_view, - RtcEventLog*)>; + std::function<std::unique_ptr<AudioNetworkAdaptor>(absl::string_view)>; static std::unique_ptr<AudioEncoderOpusImpl> CreateForTesting( const Environment& env, @@ -91,8 +87,7 @@ class AudioEncoderOpusImpl final : public AudioEncoder { bool SetApplication(Application application) override; void SetMaxPlaybackRate(int frequency_hz) override; - bool EnableAudioNetworkAdaptor(const std::string& config_string, - RtcEventLog* event_log) override; + bool EnableAudioNetworkAdaptor(absl::string_view config) override; void DisableAudioNetworkAdaptor() override; void OnReceivedUplinkPacketLossFraction( float uplink_packet_loss_fraction) override; @@ -156,11 +151,11 @@ class AudioEncoderOpusImpl final : public AudioEncoder { void ApplyAudioNetworkAdaptor(); std::unique_ptr<AudioNetworkAdaptor> DefaultAudioNetworkAdaptorCreator( - absl::string_view config_string, - RtcEventLog* event_log) const; + absl::string_view config_string) const; void MaybeUpdateUplinkBandwidth(); + const Environment env_; AudioEncoderOpusConfig config_; const int payload_type_; const bool adjust_bandwidth_; diff --git a/third_party/libwebrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc b/third_party/libwebrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc @@ -81,9 +81,8 @@ std::unique_ptr<AudioEncoderOpusStates> CreateCodec( MockAudioNetworkAdaptor** mock_ptr = &states->mock_audio_network_adaptor; AudioEncoderOpusImpl::AudioNetworkAdaptorCreator creator = - [mock_ptr](absl::string_view, RtcEventLog* /* event_log */) { - std::unique_ptr<MockAudioNetworkAdaptor> adaptor( - new NiceMock<MockAudioNetworkAdaptor>()); + [mock_ptr](absl::string_view) { + auto adaptor = std::make_unique<NiceMock<MockAudioNetworkAdaptor>>(); EXPECT_CALL(*adaptor, Die()); *mock_ptr = adaptor.get(); return adaptor; @@ -265,7 +264,7 @@ TEST_P(AudioEncoderOpusTest, SetReceiverFrameLengthRange) { TEST_P(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedUplinkPacketLossFraction) { auto states = CreateCodec(sample_rate_hz_, 2); - states->encoder->EnableAudioNetworkAdaptor("", nullptr); + states->encoder->EnableAudioNetworkAdaptor(""); auto config = CreateEncoderRuntimeConfig(); EXPECT_CALL(*states->mock_audio_network_adaptor, GetEncoderRuntimeConfig()) @@ -284,7 +283,7 @@ TEST_P(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedUplinkBandwidth) { FieldTrials field_trials = CreateTestFieldTrials(""); auto states = CreateCodec(sample_rate_hz_, 2, &field_trials); - states->encoder->EnableAudioNetworkAdaptor("", nullptr); + states->encoder->EnableAudioNetworkAdaptor(""); auto config = CreateEncoderRuntimeConfig(); EXPECT_CALL(*states->mock_audio_network_adaptor, GetEncoderRuntimeConfig()) @@ -307,7 +306,7 @@ TEST_P(AudioEncoderOpusTest, TEST_P(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedUplinkAllocation) { auto states = CreateCodec(sample_rate_hz_, 2); - states->encoder->EnableAudioNetworkAdaptor("", nullptr); + states->encoder->EnableAudioNetworkAdaptor(""); auto config = CreateEncoderRuntimeConfig(); EXPECT_CALL(*states->mock_audio_network_adaptor, GetEncoderRuntimeConfig()) @@ -326,7 +325,7 @@ TEST_P(AudioEncoderOpusTest, TEST_P(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedRtt) { auto states = CreateCodec(sample_rate_hz_, 2); - states->encoder->EnableAudioNetworkAdaptor("", nullptr); + states->encoder->EnableAudioNetworkAdaptor(""); auto config = CreateEncoderRuntimeConfig(); EXPECT_CALL(*states->mock_audio_network_adaptor, GetEncoderRuntimeConfig()) @@ -342,7 +341,7 @@ TEST_P(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedRtt) { TEST_P(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedOverhead) { auto states = CreateCodec(sample_rate_hz_, 2); - states->encoder->EnableAudioNetworkAdaptor("", nullptr); + states->encoder->EnableAudioNetworkAdaptor(""); auto config = CreateEncoderRuntimeConfig(); EXPECT_CALL(*states->mock_audio_network_adaptor, GetEncoderRuntimeConfig()) @@ -481,7 +480,7 @@ TEST_P(AudioEncoderOpusTest, ConfigBandwidthAdaptation) { TEST_P(AudioEncoderOpusTest, EmptyConfigDoesNotAffectEncoderSettings) { auto states = CreateCodec(sample_rate_hz_, 2); - states->encoder->EnableAudioNetworkAdaptor("", nullptr); + states->encoder->EnableAudioNetworkAdaptor(""); auto config = CreateEncoderRuntimeConfig(); AudioEncoderRuntimeConfig empty_config; @@ -502,7 +501,7 @@ TEST_P(AudioEncoderOpusTest, EmptyConfigDoesNotAffectEncoderSettings) { TEST_P(AudioEncoderOpusTest, UpdateUplinkBandwidthInAudioNetworkAdaptor) { FieldTrials field_trials = CreateTestFieldTrials(""); auto states = CreateCodec(sample_rate_hz_, 2, &field_trials); - states->encoder->EnableAudioNetworkAdaptor("", nullptr); + states->encoder->EnableAudioNetworkAdaptor(""); const size_t opus_rate_khz = CheckedDivExact(sample_rate_hz_, 1000); const std::vector<int16_t> audio(opus_rate_khz * 10 * 2, 0); Buffer encoded; diff --git a/third_party/libwebrtc/modules/audio_coding/codecs/red/audio_encoder_copy_red.cc b/third_party/libwebrtc/modules/audio_coding/codecs/red/audio_encoder_copy_red.cc @@ -229,10 +229,8 @@ void AudioEncoderCopyRed::SetMaxPlaybackRate(int frequency_hz) { speech_encoder_->SetMaxPlaybackRate(frequency_hz); } -bool AudioEncoderCopyRed::EnableAudioNetworkAdaptor( - const std::string& config_string, - RtcEventLog* event_log) { - return speech_encoder_->EnableAudioNetworkAdaptor(config_string, event_log); +bool AudioEncoderCopyRed::EnableAudioNetworkAdaptor(absl::string_view config) { + return speech_encoder_->EnableAudioNetworkAdaptor(config); } void AudioEncoderCopyRed::DisableAudioNetworkAdaptor() { diff --git a/third_party/libwebrtc/modules/audio_coding/codecs/red/audio_encoder_copy_red.h b/third_party/libwebrtc/modules/audio_coding/codecs/red/audio_encoder_copy_red.h @@ -17,9 +17,9 @@ #include <list> #include <memory> #include <optional> -#include <string> #include <utility> +#include "absl/strings/string_view.h" #include "api/array_view.h" #include "api/audio_codecs/audio_encoder.h" #include "api/call/bitrate_allocation.h" @@ -67,8 +67,7 @@ class AudioEncoderCopyRed final : public AudioEncoder { bool SetApplication(Application application) override; void SetMaxPlaybackRate(int frequency_hz) override; - bool EnableAudioNetworkAdaptor(const std::string& config_string, - RtcEventLog* event_log) override; + bool EnableAudioNetworkAdaptor(absl::string_view config) override; void DisableAudioNetworkAdaptor() override; void OnReceivedUplinkPacketLossFraction( float uplink_packet_loss_fraction) override; diff --git a/third_party/libwebrtc/moz-patch-stack/s0007.patch b/third_party/libwebrtc/moz-patch-stack/s0007.patch @@ -9,7 +9,7 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/92a7c3eee9f0c80ff 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc -index 73a6ea5b64..3b52e4f3f3 100644 +index 549b14fb12..8e50531e5a 100644 --- a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc +++ b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc @@ -245,7 +245,7 @@ AudioCodecInfo AudioEncoderOpusImpl::QueryAudioEncoder( diff --git a/third_party/libwebrtc/moz-patch-stack/s0029.patch b/third_party/libwebrtc/moz-patch-stack/s0029.patch @@ -15,7 +15,7 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/d380a43d59f4f7cbc 4 files changed, 36 insertions(+) diff --git a/audio/audio_send_stream.cc b/audio/audio_send_stream.cc -index 024d6171cc..8100775eb7 100644 +index fc923a8733..11b6ac6e08 100644 --- a/audio/audio_send_stream.cc +++ b/audio/audio_send_stream.cc @@ -436,6 +436,7 @@ webrtc::AudioSendStream::Stats AudioSendStream::GetStats(