commit 9aca7f9a13f2c51d6688889ba4b72912c336f10e
parent 9066c830c7a224c8fe4c495b0463ba11288e3113
Author: Dan Baker <dbaker@mozilla.com>
Date: Mon, 27 Oct 2025 12:32:10 -0600
Bug 1995393 - Vendor libwebrtc from bb7239ecea
Upstream commit: https://webrtc.googlesource.com/src/+/bb7239ecea3db0e41b8fa6eb26c3a749deb41076
Propagate Clock with Environment into win helper CoreAudioBase
Bug: webrtc:42223992
Change-Id: I81c0dad6e041a53a4d5f77ea70caa6e8dd55c5a3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/406102
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45431}
Diffstat:
11 files changed, 74 insertions(+), 28 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-27T18:29:28.908016+00:00.
+libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-27T18:31:52.993305+00:00.
# base of lastest vendoring
-e17369f41e
+bb7239ecea
diff --git a/third_party/libwebrtc/modules/audio_device/BUILD.gn b/third_party/libwebrtc/modules/audio_device/BUILD.gn
@@ -150,19 +150,23 @@ rtc_library("audio_device_module_from_input_and_output") {
deps = [
":audio_device_buffer",
+ ":audio_device_name",
":windows_core_audio_utility",
+ "../../api:array_view",
"../../api:make_ref_counted",
"../../api:scoped_refptr",
"../../api:sequence_checker",
"../../api/audio:audio_device",
"../../api/environment",
"../../api/task_queue",
+ "../../api/units:time_delta",
"../../rtc_base:checks",
"../../rtc_base:logging",
"../../rtc_base:platform_thread",
"../../rtc_base:safe_conversions",
"../../rtc_base:stringutils",
"../../rtc_base:timeutils",
+ "../../rtc_base:zero_memory",
"../../rtc_base/win:scoped_com_initializer",
"../../rtc_base/win:windows_version",
"//third_party/abseil-cpp/absl/strings",
diff --git a/third_party/libwebrtc/modules/audio_device/include/audio_device_factory.cc b/third_party/libwebrtc/modules/audio_device/include/audio_device_factory.cc
@@ -10,7 +10,11 @@
#include "modules/audio_device/include/audio_device_factory.h"
+#include <memory>
+
+#include "api/audio/audio_device.h"
#include "api/environment/environment.h"
+#include "api/scoped_refptr.h"
#include "rtc_base/logging.h"
#if defined(WEBRTC_WIN)
@@ -41,8 +45,8 @@ CreateWindowsCoreAudioAudioDeviceModuleForTest(const Environment& env,
return nullptr;
}
return CreateWindowsCoreAudioAudioDeviceModuleFromInputAndOutput(
- env, std::make_unique<webrtc_win::CoreAudioInput>(automatic_restart),
- std::make_unique<webrtc_win::CoreAudioOutput>(automatic_restart));
+ env, std::make_unique<webrtc_win::CoreAudioInput>(env, automatic_restart),
+ std::make_unique<webrtc_win::CoreAudioOutput>(env, automatic_restart));
}
} // namespace webrtc
diff --git a/third_party/libwebrtc/modules/audio_device/win/core_audio_base_win.cc b/third_party/libwebrtc/modules/audio_device/win/core_audio_base_win.cc
@@ -10,17 +10,20 @@
#include "modules/audio_device/win/core_audio_base_win.h"
+#include <cstdint>
#include <iterator>
-#include <memory>
#include <string>
#include "absl/strings/string_view.h"
-#include "modules/audio_device/audio_device_buffer.h"
+#include "api/audio/audio_device_defines.h"
+#include "api/environment/environment.h"
+#include "api/sequence_checker.h"
+#include "modules/audio_device/audio_device_name.h"
+#include "modules/audio_device/win/core_audio_utility_win.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
#include "rtc_base/numerics/safe_conversions.h"
#include "rtc_base/platform_thread.h"
-#include "rtc_base/time_utils.h"
#include "rtc_base/win/scoped_com_initializer.h"
#include "rtc_base/win/windows_version.h"
@@ -151,11 +154,13 @@ bool IsLowLatencySupported(IAudioClient3* client3,
} // namespace
-CoreAudioBase::CoreAudioBase(Direction direction,
+CoreAudioBase::CoreAudioBase(const Environment& env,
+ Direction direction,
bool automatic_restart,
OnDataCallback data_callback,
OnErrorCallback error_callback)
- : format_(),
+ : env_(env),
+ format_(),
direction_(direction),
automatic_restart_(automatic_restart),
on_data_callback_(data_callback),
@@ -195,8 +200,8 @@ bool CoreAudioBase::IsRestarting() const {
return is_restarting_;
}
-int64_t CoreAudioBase::TimeSinceStart() const {
- return webrtc::TimeSince(start_time_);
+int64_t CoreAudioBase::TimeSinceStartMs() const {
+ return env_.clock().TimeInMilliseconds() - start_time_;
}
int CoreAudioBase::NumberOfActiveDevices() const {
@@ -576,7 +581,7 @@ bool CoreAudioBase::Start() {
return false;
}
- start_time_ = webrtc::TimeMillis();
+ start_time_ = env_.clock().TimeInMilliseconds();
num_data_callbacks_ = 0;
return true;
@@ -585,7 +590,7 @@ bool CoreAudioBase::Start() {
bool CoreAudioBase::Stop() {
RTC_DLOG(LS_INFO) << __FUNCTION__ << "[" << DirectionToString(direction())
<< "]";
- RTC_DLOG(LS_INFO) << "total activity time: " << TimeSinceStart();
+ RTC_DLOG(LS_INFO) << "total activity time: " << TimeSinceStartMs();
// Stop audio streaming.
_com_error error = audio_client_->Stop();
diff --git a/third_party/libwebrtc/modules/audio_device/win/core_audio_base_win.h b/third_party/libwebrtc/modules/audio_device/win/core_audio_base_win.h
@@ -12,12 +12,14 @@
#define MODULES_AUDIO_DEVICE_WIN_CORE_AUDIO_BASE_WIN_H_
#include <atomic>
+#include <cstdint>
#include <functional>
-#include <memory>
#include <optional>
#include <string>
+#include <type_traits>
#include "absl/strings/string_view.h"
+#include "api/environment/environment.h"
#include "api/sequence_checker.h"
#include "modules/audio_device/win/core_audio_utility_win.h"
#include "rtc_base/platform_thread.h"
@@ -77,7 +79,8 @@ class CoreAudioBase : public IAudioSessionEvents {
CoreAudioBase& operator=(const CoreAudioBase&) = delete;
protected:
- explicit CoreAudioBase(Direction direction,
+ explicit CoreAudioBase(const Environment& env,
+ Direction direction,
bool automatic_restart,
OnDataCallback data_callback,
OnErrorCallback error_callback);
@@ -122,7 +125,9 @@ class CoreAudioBase : public IAudioSessionEvents {
bool IsDefaultCommunicationsDeviceId(absl::string_view device_id) const;
EDataFlow GetDataFlow() const;
bool IsRestarting() const;
- int64_t TimeSinceStart() const;
+ int64_t TimeSinceStartMs() const;
+
+ const Environment env_;
// TODO(henrika): is the existing thread checker in WindowsAudioDeviceModule
// sufficient? As is, we have one top-level protection and then a second
diff --git a/third_party/libwebrtc/modules/audio_device/win/core_audio_input_win.cc b/third_party/libwebrtc/modules/audio_device/win/core_audio_input_win.cc
@@ -10,13 +10,24 @@
#include "modules/audio_device/win/core_audio_input_win.h"
+#include <cstdint>
#include <memory>
-
+#include <optional>
+#include <string>
+
+#include "api/array_view.h"
+#include "api/audio/audio_device.h"
+#include "api/environment/environment.h"
+#include "api/sequence_checker.h"
+#include "api/units/time_delta.h"
#include "modules/audio_device/audio_device_buffer.h"
#include "modules/audio_device/fine_audio_buffer.h"
+#include "modules/audio_device/win/core_audio_base_win.h"
+#include "modules/audio_device/win/core_audio_utility_win.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
#include "rtc_base/numerics/safe_conversions.h"
+#include "rtc_base/zero_memory.h"
using Microsoft::WRL::ComPtr;
@@ -27,8 +38,9 @@ enum AudioDeviceMessageType : uint32_t {
kMessageInputStreamDisconnected,
};
-CoreAudioInput::CoreAudioInput(bool automatic_restart)
+CoreAudioInput::CoreAudioInput(const Environment& env, bool automatic_restart)
: CoreAudioBase(
+ env,
CoreAudioBase::Direction::kInput,
automatic_restart,
[this](uint64_t freq) { return OnDataCallback(freq); },
diff --git a/third_party/libwebrtc/modules/audio_device/win/core_audio_input_win.h b/third_party/libwebrtc/modules/audio_device/win/core_audio_input_win.h
@@ -11,10 +11,13 @@
#ifndef MODULES_AUDIO_DEVICE_WIN_CORE_AUDIO_INPUT_WIN_H_
#define MODULES_AUDIO_DEVICE_WIN_CORE_AUDIO_INPUT_WIN_H_
+#include <cstdint>
#include <memory>
#include <optional>
#include <string>
+#include "api/audio/audio_device.h"
+#include "api/environment/environment.h"
#include "modules/audio_device/win/audio_device_module_win.h"
#include "modules/audio_device/win/core_audio_base_win.h"
@@ -30,7 +33,7 @@ namespace webrtc_win {
// and streaming of captured audio to a WebRTC client.
class CoreAudioInput final : public CoreAudioBase, public AudioInput {
public:
- CoreAudioInput(bool automatic_restart);
+ CoreAudioInput(const Environment& env, bool automatic_restart);
~CoreAudioInput() override;
// AudioInput implementation.
diff --git a/third_party/libwebrtc/modules/audio_device/win/core_audio_output_win.cc b/third_party/libwebrtc/modules/audio_device/win/core_audio_output_win.cc
@@ -10,10 +10,19 @@
#include "modules/audio_device/win/core_audio_output_win.h"
+#include <cstdint>
#include <memory>
+#include <string>
+#include "api/array_view.h"
+#include "api/audio/audio_device.h"
+#include "api/environment/environment.h"
+#include "api/sequence_checker.h"
+#include "api/units/time_delta.h"
#include "modules/audio_device/audio_device_buffer.h"
#include "modules/audio_device/fine_audio_buffer.h"
+#include "modules/audio_device/win/core_audio_base_win.h"
+#include "modules/audio_device/win/core_audio_utility_win.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
#include "rtc_base/time_utils.h"
@@ -23,8 +32,9 @@ using Microsoft::WRL::ComPtr;
namespace webrtc {
namespace webrtc_win {
-CoreAudioOutput::CoreAudioOutput(bool automatic_restart)
+CoreAudioOutput::CoreAudioOutput(const Environment& env, bool automatic_restart)
: CoreAudioBase(
+ env,
CoreAudioBase::Direction::kOutput,
automatic_restart,
[this](uint64_t freq) { return OnDataCallback(freq); },
diff --git a/third_party/libwebrtc/modules/audio_device/win/core_audio_output_win.h b/third_party/libwebrtc/modules/audio_device/win/core_audio_output_win.h
@@ -11,9 +11,12 @@
#ifndef MODULES_AUDIO_DEVICE_WIN_CORE_AUDIO_OUTPUT_WIN_H_
#define MODULES_AUDIO_DEVICE_WIN_CORE_AUDIO_OUTPUT_WIN_H_
+#include <cstdint>
#include <memory>
#include <string>
+#include "api/audio/audio_device.h"
+#include "api/environment/environment.h"
#include "modules/audio_device/win/audio_device_module_win.h"
#include "modules/audio_device/win/core_audio_base_win.h"
@@ -30,7 +33,7 @@ namespace webrtc_win {
// layer.
class CoreAudioOutput final : public CoreAudioBase, public AudioOutput {
public:
- CoreAudioOutput(bool automatic_restart);
+ CoreAudioOutput(const Environment& env, bool automatic_restart);
~CoreAudioOutput() override;
// AudioOutput implementation.
diff --git a/third_party/libwebrtc/moz-patch-stack/s0027.patch b/third_party/libwebrtc/moz-patch-stack/s0027.patch
@@ -736,7 +736,7 @@ index 0c56427b29..13c9533524 100644
}
diff --git a/modules/audio_device/BUILD.gn b/modules/audio_device/BUILD.gn
-index 82e64086d1..29b1b11fae 100644
+index 8e8a4bff5f..e57e55882c 100644
--- a/modules/audio_device/BUILD.gn
+++ b/modules/audio_device/BUILD.gn
@@ -30,6 +30,7 @@ rtc_source_set("audio_device_default") {
@@ -771,7 +771,7 @@ index 82e64086d1..29b1b11fae 100644
rtc_library("audio_device_generic") {
sources = [
-@@ -252,6 +256,7 @@ if (!build_with_chromium) {
+@@ -256,6 +260,7 @@ if (!build_with_chromium) {
# Contains default implementations of webrtc::AudioDeviceModule for Windows,
# Linux, Mac, iOS and Android.
rtc_library("audio_device_impl") {
@@ -779,7 +779,7 @@ index 82e64086d1..29b1b11fae 100644
visibility = [ "*" ]
deps = [
":audio_device_buffer",
-@@ -298,9 +303,9 @@ rtc_library("audio_device_impl") {
+@@ -302,9 +307,9 @@ rtc_library("audio_device_impl") {
sources = [ "include/fake_audio_device.h" ]
if (build_with_mozilla) {
@@ -792,7 +792,7 @@ index 82e64086d1..29b1b11fae 100644
]
}
-@@ -403,6 +408,7 @@ rtc_library("audio_device_impl") {
+@@ -407,6 +412,7 @@ rtc_library("audio_device_impl") {
sources += [ "dummy/file_audio_device_factory.h" ]
}
}
@@ -800,7 +800,7 @@ index 82e64086d1..29b1b11fae 100644
if (is_mac) {
rtc_source_set("audio_device_impl_frameworks") {
-@@ -420,6 +426,7 @@ if (is_mac) {
+@@ -424,6 +430,7 @@ if (is_mac) {
}
}
@@ -808,7 +808,7 @@ index 82e64086d1..29b1b11fae 100644
rtc_source_set("mock_audio_device") {
visibility = [ "*" ]
testonly = true
-@@ -438,8 +445,10 @@ rtc_source_set("mock_audio_device") {
+@@ -442,8 +449,10 @@ rtc_source_set("mock_audio_device") {
"../../test:test_support",
]
}
diff --git a/third_party/libwebrtc/moz-patch-stack/s0102.patch b/third_party/libwebrtc/moz-patch-stack/s0102.patch
@@ -440,7 +440,7 @@ index 33d14980ea..12c65b29f3 100644
import("../webrtc.gni")
diff --git a/modules/audio_device/BUILD.gn b/modules/audio_device/BUILD.gn
-index 29b1b11fae..62dd9f56d1 100644
+index e57e55882c..80af18a5fa 100644
--- a/modules/audio_device/BUILD.gn
+++ b/modules/audio_device/BUILD.gn
@@ -9,8 +9,8 @@