tor-browser

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

commit 738c62b9f1d059d20d88b2720a43c4b68d0c12d0
parent a657b0a7bc90fb21fba0d86a8b4d009e7852c41a
Author: Dan Baker <dbaker@mozilla.com>
Date:   Mon,  1 Dec 2025 23:00:46 -0700

Bug 2000941 - Vendor libwebrtc from b596ae51dc

Upstream commit: https://webrtc.googlesource.com/src/+/b596ae51dc4a2d88553535232fb50224225d8db1
    Move construction of state in WebRtcVoiceEngine from Init to ctor

    This allows us to make a few member variables const and remove two. This
    also clarifies the split between construction and Init(). A minor change
    in this CL is to also rename the legacy send and receive vectors so that
    they can't as easily be confused with the other member variables in the
    same files that previously had the same name.

    Bug: webrtc:42224720
    Change-Id: Iab5eb331e6570fb7219653e705fb9791051f1e91
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/410921
    Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
    Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45704}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/media/engine/webrtc_voice_engine.cc | 98+++++++++++++++++++++++++++++++++++++------------------------------------------
Mthird_party/libwebrtc/media/engine/webrtc_voice_engine.h | 16+++++++---------
3 files changed, 55 insertions(+), 63 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-12-02T05:58:10.216528+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-12-02T06:00:32.162482+00:00. # base of lastest vendoring -3ff8b4e5f7 +b596ae51dc diff --git a/third_party/libwebrtc/media/engine/webrtc_voice_engine.cc b/third_party/libwebrtc/media/engine/webrtc_voice_engine.cc @@ -451,6 +451,19 @@ std::vector<Codec> LegacyCollectCodecs(const std::vector<AudioCodecSpec>& specs, return out; } +scoped_refptr<AudioDeviceModule> EnsureAudioDeviceModule( + const Environment& env, + scoped_refptr<AudioDeviceModule>& adm) { +#if defined(WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE) + // No ADM supplied? Create a default one. + if (!adm) { + return CreateAudioDeviceModule(env, + AudioDeviceModule::kPlatformDefaultAudio); + } +#endif // WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE + return std::move(adm); +} + } // namespace WebRtcVoiceEngine::WebRtcVoiceEngine( @@ -462,20 +475,44 @@ WebRtcVoiceEngine::WebRtcVoiceEngine( scoped_refptr<AudioProcessing> audio_processing, std::unique_ptr<AudioFrameProcessor> audio_frame_processor) : env_(env), - adm_(std::move(adm)), - encoder_factory_(std::move(encoder_factory)), - decoder_factory_(std::move(decoder_factory)), - audio_mixer_(std::move(audio_mixer)), - apm_(std::move(audio_processing)), - audio_frame_processor_(std::move(audio_frame_processor)), minimized_remsampling_on_mobile_trial_enabled_( env_.field_trials().IsEnabled( "WebRTC-Audio-MinimizeResamplingOnMobile")), payload_types_in_transport_trial_enabled_( - env_.field_trials().IsEnabled("WebRTC-PayloadTypesInTransport")) { + env_.field_trials().IsEnabled("WebRTC-PayloadTypesInTransport")), + adm_(EnsureAudioDeviceModule(env, adm)), + encoder_factory_(std::move(encoder_factory)), + decoder_factory_(std::move(decoder_factory)), + apm_(std::move(audio_processing)), + legacy_send_codecs_( + LegacyCollectCodecs(encoder_factory_->GetSupportedEncoders(), + !payload_types_in_transport_trial_enabled_)), + legacy_recv_codecs_( + LegacyCollectCodecs(decoder_factory_->GetSupportedDecoders(), + !payload_types_in_transport_trial_enabled_)) { RTC_LOG(LS_INFO) << "WebRtcVoiceEngine::WebRtcVoiceEngine"; + RTC_CHECK(adm_); RTC_DCHECK(decoder_factory_); RTC_DCHECK(encoder_factory_); + + // Set up AudioState. + { + AudioState::Config config; + if (audio_mixer) { + config.audio_mixer = std::move(audio_mixer); + } else { + config.audio_mixer = AudioMixerImpl::Create(); + } + config.audio_processing = apm_; + config.audio_device_module = adm_; + if (audio_frame_processor) { + config.async_audio_processing_factory = + make_ref_counted<AsyncAudioProcessing::Factory>( + std::move(audio_frame_processor), env_.task_queue_factory()); + } + audio_state_ = AudioState::Create(config); + } + // The rest of our initialization will happen in Init. } @@ -502,51 +539,8 @@ void WebRtcVoiceEngine::Init() { low_priority_worker_queue_ = env_.task_queue_factory().CreateTaskQueue( "rtc-low-prio", TaskQueueFactory::Priority::LOW); - // Load our audio codec lists. - RTC_LOG(LS_VERBOSE) << "Supported send codecs in order of preference:"; - send_codecs_ = - LegacyCollectCodecs(encoder_factory_->GetSupportedEncoders(), - !payload_types_in_transport_trial_enabled_); - for (const Codec& codec : send_codecs_) { - RTC_LOG(LS_VERBOSE) << ToString(codec); - } - - RTC_LOG(LS_VERBOSE) << "Supported recv codecs in order of preference:"; - recv_codecs_ = - LegacyCollectCodecs(decoder_factory_->GetSupportedDecoders(), - !payload_types_in_transport_trial_enabled_); - for (const Codec& codec : recv_codecs_) { - RTC_LOG(LS_VERBOSE) << ToString(codec); - } - -#if defined(WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE) - // No ADM supplied? Create a default one. - if (!adm_) { - adm_ = - CreateAudioDeviceModule(env_, AudioDeviceModule::kPlatformDefaultAudio); - } -#endif // WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE - RTC_CHECK(adm()); adm_helpers::Init(adm()); - // Set up AudioState. - { - AudioState::Config config; - if (audio_mixer_) { - config.audio_mixer = audio_mixer_; - } else { - config.audio_mixer = AudioMixerImpl::Create(); - } - config.audio_processing = apm_; - config.audio_device_module = adm_; - if (audio_frame_processor_) { - config.async_audio_processing_factory = - make_ref_counted<AsyncAudioProcessing::Factory>( - std::move(audio_frame_processor_), env_.task_queue_factory()); - } - audio_state_ = AudioState::Create(config); - } - // Connect the ADM to our audio path. adm()->RegisterAudioCallback(audio_state()->audio_transport()); @@ -749,12 +743,12 @@ void WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) { const std::vector<Codec>& WebRtcVoiceEngine::LegacySendCodecs() const { RTC_DCHECK(signal_thread_checker_.IsCurrent()); - return send_codecs_; + return legacy_send_codecs_; } const std::vector<Codec>& WebRtcVoiceEngine::LegacyRecvCodecs() const { RTC_DCHECK(signal_thread_checker_.IsCurrent()); - return recv_codecs_; + return legacy_recv_codecs_; } std::vector<RtpHeaderExtensionCapability> diff --git a/third_party/libwebrtc/media/engine/webrtc_voice_engine.h b/third_party/libwebrtc/media/engine/webrtc_voice_engine.h @@ -151,19 +151,20 @@ class WebRtcVoiceEngine final : public VoiceEngineInterface { SequenceChecker signal_thread_checker_{SequenceChecker::kDetached}; SequenceChecker worker_thread_checker_{SequenceChecker::kDetached}; + // Field trial flags. + const bool minimized_remsampling_on_mobile_trial_enabled_; + const bool payload_types_in_transport_trial_enabled_; + // The audio device module. - scoped_refptr<AudioDeviceModule> adm_; + const scoped_refptr<AudioDeviceModule> adm_; scoped_refptr<AudioEncoderFactory> encoder_factory_; scoped_refptr<AudioDecoderFactory> decoder_factory_; - scoped_refptr<AudioMixer> audio_mixer_; // The audio processing module. scoped_refptr<AudioProcessing> apm_; - // Asynchronous audio processing. - std::unique_ptr<AudioFrameProcessor> audio_frame_processor_; // The primary instance of WebRtc VoiceEngine. scoped_refptr<AudioState> audio_state_; - std::vector<Codec> send_codecs_; - std::vector<Codec> recv_codecs_; + const std::vector<Codec> legacy_send_codecs_; + const std::vector<Codec> legacy_recv_codecs_; bool is_dumping_aec_ = false; bool initialized_ = false; @@ -171,9 +172,6 @@ class WebRtcVoiceEngine final : public VoiceEngineInterface { size_t audio_jitter_buffer_max_packets_ = 200; bool audio_jitter_buffer_fast_accelerate_ = false; int audio_jitter_buffer_min_delay_ms_ = 0; - - const bool minimized_remsampling_on_mobile_trial_enabled_; - const bool payload_types_in_transport_trial_enabled_; }; class WebRtcVoiceSendChannel final : public MediaChannelUtil,