summaryrefslogtreecommitdiff
path: root/chromium/services/audio
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-09-29 16:16:15 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-11-09 10:04:06 +0000
commita95a7417ad456115a1ef2da4bb8320531c0821f1 (patch)
treeedcd59279e486d2fd4a8f88a7ed025bcf925c6e6 /chromium/services/audio
parent33fc33aa94d4add0878ec30dc818e34e1dd3cc2a (diff)
downloadqtwebengine-chromium-a95a7417ad456115a1ef2da4bb8320531c0821f1.tar.gz
BASELINE: Update Chromium to 106.0.5249.126
Change-Id: Ib0bb21c437a7d1686e21c33f2d329f2ac425b7ab Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/438936 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/services/audio')
-rw-r--r--chromium/services/audio/BUILD.gn2
-rw-r--r--chromium/services/audio/device_listener_output_stream.cc4
-rw-r--r--chromium/services/audio/device_listener_output_stream.h2
-rw-r--r--chromium/services/audio/loopback_stream.cc6
-rw-r--r--chromium/services/audio/loopback_stream.h2
-rw-r--r--chromium/services/audio/output_controller_unittest.cc7
-rw-r--r--chromium/services/audio/output_device_mixer_impl.cc7
-rw-r--r--chromium/services/audio/owning_audio_manager_accessor.cc2
-rw-r--r--chromium/services/audio/processing_audio_fifo.cc6
-rw-r--r--chromium/services/audio/public/cpp/input_ipc.cc1
-rw-r--r--chromium/services/audio/public/cpp/output_device.cc2
-rw-r--r--chromium/services/audio/realtime_audio_thread_test.cc4
-rw-r--r--chromium/services/audio/stream_factory.cc7
-rw-r--r--chromium/services/audio/sync_reader.cc4
14 files changed, 32 insertions, 24 deletions
diff --git a/chromium/services/audio/BUILD.gn b/chromium/services/audio/BUILD.gn
index 80db1c465bb..6427c7ecc50 100644
--- a/chromium/services/audio/BUILD.gn
+++ b/chromium/services/audio/BUILD.gn
@@ -204,7 +204,7 @@ source_set("tests") {
"//testing/gtest",
]
- if (is_chromeos_ash || is_chromecast) {
+ if (is_chromeos_ash || is_castos || is_cast_android) {
sources += [
"public/cpp/sounds/audio_stream_handler_unittest.cc",
"public/cpp/sounds/sounds_manager_unittest.cc",
diff --git a/chromium/services/audio/device_listener_output_stream.cc b/chromium/services/audio/device_listener_output_stream.cc
index 834ede001da..47bbb34fcea 100644
--- a/chromium/services/audio/device_listener_output_stream.cc
+++ b/chromium/services/audio/device_listener_output_stream.cc
@@ -61,7 +61,9 @@ void DeviceListenerOutputStream::GetVolume(double* volume) {
void DeviceListenerOutputStream::Close() {
DCHECK(task_runner_->BelongsToCurrentThread());
DCHECK(!source_callback_);
- stream_->Close();
+ // ExtractAsDangling clears the underlying pointer and returns another raw_ptr
+ // instance that is allowed to dangle.
+ stream_.ExtractAsDangling()->Close();
// To match a typical AudioOutputStream usage pattern.
delete this;
}
diff --git a/chromium/services/audio/device_listener_output_stream.h b/chromium/services/audio/device_listener_output_stream.h
index b99c152ef6b..e91d467f592 100644
--- a/chromium/services/audio/device_listener_output_stream.h
+++ b/chromium/services/audio/device_listener_output_stream.h
@@ -65,7 +65,7 @@ class DeviceListenerOutputStream final
const raw_ptr<media::AudioManager> audio_manager_;
- const raw_ptr<media::AudioOutputStream> stream_;
+ raw_ptr<media::AudioOutputStream> stream_;
// Callback to process the device change.
base::OnceClosure on_device_change_callback_;
diff --git a/chromium/services/audio/loopback_stream.cc b/chromium/services/audio/loopback_stream.cc
index f3d7242b1ab..f6959d9bde9 100644
--- a/chromium/services/audio/loopback_stream.cc
+++ b/chromium/services/audio/loopback_stream.cc
@@ -276,7 +276,7 @@ void LoopbackStream::FlowNetwork::Start() {
DCHECK_CALLED_ON_VALID_SEQUENCE(control_sequence_);
DCHECK(!is_started());
- timer_.emplace(clock_);
+ timer_.emplace();
// Note: GenerateMoreAudio() will schedule the timer.
first_generate_time_ = clock_->NowTicks();
@@ -401,8 +401,8 @@ void LoopbackStream::FlowNetwork::GenerateMoreAudio() {
// due to integer truncation behaviors in the math above. The timer task
// started below will just run immediately and there will be no harmful
// effects in the next GenerateMoreAudio() call. http://crbug.com/847487
- timer_->Start(FROM_HERE, next_generate_time_ - now, this,
- &FlowNetwork::GenerateMoreAudio);
+ timer_->Start(FROM_HERE, next_generate_time_, this,
+ &FlowNetwork::GenerateMoreAudio, base::ExactDeadline(true));
}
} // namespace audio
diff --git a/chromium/services/audio/loopback_stream.h b/chromium/services/audio/loopback_stream.h
index dcbacb96391..21af2d2230c 100644
--- a/chromium/services/audio/loopback_stream.h
+++ b/chromium/services/audio/loopback_stream.h
@@ -188,7 +188,7 @@ class LoopbackStream final : public media::mojom::AudioInputStream,
// This is set once Start() is called, and lives until this FlowNetwork is
// destroyed. It is used to schedule cancelable tasks run by the
// |flow_task_runner_|.
- absl::optional<base::OneShotTimer> timer_;
+ absl::optional<base::DeadlineTimer> timer_;
// These are used to compute when the |timer_| fires and calls
// GenerateMoreAudio(). They ensure that each timer task is scheduled to
diff --git a/chromium/services/audio/output_controller_unittest.cc b/chromium/services/audio/output_controller_unittest.cc
index 48b5ce1d8f4..7369e7adf91 100644
--- a/chromium/services/audio/output_controller_unittest.cc
+++ b/chromium/services/audio/output_controller_unittest.cc
@@ -326,8 +326,11 @@ class AudioManagerForControllerTest final : public media::FakeAudioManager {
}
media::FakeAudioLogFactory fake_audio_log_factory_;
- raw_ptr<MockAudioOutputStream> last_created_stream_ = nullptr;
- raw_ptr<MockAudioOutputStream> last_closed_stream_ = nullptr;
+ // TODO(crbug.com/1298696): Breaks services_unittests.
+ raw_ptr<MockAudioOutputStream, DegradeToNoOpWhenMTE> last_created_stream_ =
+ nullptr;
+ raw_ptr<MockAudioOutputStream, DegradeToNoOpWhenMTE> last_closed_stream_ =
+ nullptr;
};
ACTION(PopulateBuffer) {
diff --git a/chromium/services/audio/output_device_mixer_impl.cc b/chromium/services/audio/output_device_mixer_impl.cc
index c3b41d2baa0..205390bcdb6 100644
--- a/chromium/services/audio/output_device_mixer_impl.cc
+++ b/chromium/services/audio/output_device_mixer_impl.cc
@@ -345,7 +345,10 @@ class OutputDeviceMixerImpl::MixableOutputStream final
void Close() final {
DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_);
if (mixer_) {
- mixer_->CloseStream(mix_track_);
+ // `CloseStream` destroys `mix_track_`. Use `ExtractAsDangling` to clear
+ // the underlying pointer and return another raw_ptr instance that is
+ // allowed to dangle.
+ mixer_->CloseStream(mix_track_.ExtractAsDangling());
}
// To match the typical usage pattern of AudioOutputStream.
@@ -361,7 +364,7 @@ class OutputDeviceMixerImpl::MixableOutputStream final
// MixableOutputStream becomes a no-op.
base::WeakPtr<OutputDeviceMixerImpl> const mixer_
GUARDED_BY_CONTEXT(owning_sequence_);
- const raw_ptr<MixTrack> mix_track_; // Valid only when |mixer_| is valid.
+ raw_ptr<MixTrack> mix_track_; // Valid only when |mixer_| is valid.
};
// Logs mixing statistics upon the destruction. Should be created when mixing
diff --git a/chromium/services/audio/owning_audio_manager_accessor.cc b/chromium/services/audio/owning_audio_manager_accessor.cc
index 7d35d29b561..f35d58cbe80 100644
--- a/chromium/services/audio/owning_audio_manager_accessor.cc
+++ b/chromium/services/audio/owning_audio_manager_accessor.cc
@@ -127,7 +127,7 @@ base::SingleThreadTaskRunner* MainThread::GetWorkerTaskRunner() {
if (!worker_task_runner_) {
base::Thread::Options options;
options.timer_slack = base::TIMER_SLACK_NONE;
- options.priority = base::ThreadPriority::REALTIME_AUDIO;
+ options.thread_type = base::ThreadType::kRealtimeAudio;
CHECK(worker_thread_.StartWithOptions(std::move(options)));
worker_task_runner_ = worker_thread_.task_runner();
}
diff --git a/chromium/services/audio/processing_audio_fifo.cc b/chromium/services/audio/processing_audio_fifo.cc
index 61be9735f74..9be73f62862 100644
--- a/chromium/services/audio/processing_audio_fifo.cc
+++ b/chromium/services/audio/processing_audio_fifo.cc
@@ -139,10 +139,8 @@ void ProcessingAudioFifo::StartInternal(
// Start should only be called once.
DCHECK(!audio_processing_thread_.IsRunning());
- base::Thread::Options options;
- options.priority = base::ThreadPriority::REALTIME_AUDIO;
-
- audio_processing_thread_.StartWithOptions(std::move(options));
+ audio_processing_thread_.StartWithOptions(
+ base::Thread::Options(base::ThreadType::kRealtimeAudio));
audio_processing_thread_.task_runner()->PostTask(
FROM_HERE, base::BindOnce(&ProcessingAudioFifo::ProcessAudioLoop,
diff --git a/chromium/services/audio/public/cpp/input_ipc.cc b/chromium/services/audio/public/cpp/input_ipc.cc
index 8262c0ecc63..946b0ac1a5b 100644
--- a/chromium/services/audio/public/cpp/input_ipc.cc
+++ b/chromium/services/audio/public/cpp/input_ipc.cc
@@ -55,7 +55,6 @@ void InputIPC::CreateStream(media::AudioInputIPCDelegate* delegate,
if (log_)
log = log_.Unbind();
- // TODO(crbug.com/1284652): Pass a real |processing_config|.
stream_factory_->CreateInputStream(
stream_.BindNewPipeAndPassReceiver(), std::move(client), {},
std::move(log), device_id_, params, total_segments,
diff --git a/chromium/services/audio/public/cpp/output_device.cc b/chromium/services/audio/public/cpp/output_device.cc
index 9f35ff25d42..91b5a0a734e 100644
--- a/chromium/services/audio/public/cpp/output_device.cc
+++ b/chromium/services/audio/public/cpp/output_device.cc
@@ -73,7 +73,7 @@ void OutputDevice::StreamCreated(
audio_parameters_, std::move(shared_memory_region), render_callback_);
audio_thread_ = std::make_unique<media::AudioDeviceThread>(
audio_callback_.get(), std::move(socket_handle), "audio::OutputDevice",
- base::ThreadPriority::REALTIME_AUDIO);
+ base::ThreadType::kRealtimeAudio);
}
void OutputDevice::OnConnectionError() {
diff --git a/chromium/services/audio/realtime_audio_thread_test.cc b/chromium/services/audio/realtime_audio_thread_test.cc
index 23790ca50c6..85d5541dd80 100644
--- a/chromium/services/audio/realtime_audio_thread_test.cc
+++ b/chromium/services/audio/realtime_audio_thread_test.cc
@@ -38,7 +38,7 @@ TEST_F(RealtimeAudioThreadTest, StartStop) {
base::Thread::Options options;
options.timer_slack = base::TIMER_SLACK_NONE;
- options.priority = base::ThreadPriority::REALTIME_AUDIO;
+ options.thread_type = base::ThreadType::kRealtimeAudio;
EXPECT_TRUE(thread.StartWithOptions(std::move(options)));
thread.Stop();
@@ -51,7 +51,7 @@ TEST_F(RealtimeAudioThreadTest, StartDestroy) {
base::Thread::Options options;
options.timer_slack = base::TIMER_SLACK_NONE;
- options.priority = base::ThreadPriority::REALTIME_AUDIO;
+ options.thread_type = base::ThreadType::kRealtimeAudio;
EXPECT_TRUE(thread.StartWithOptions(std::move(options)));
// ~RealtimeAudioThread() will be called without Stop() here.
diff --git a/chromium/services/audio/stream_factory.cc b/chromium/services/audio/stream_factory.cc
index 48152cb6476..98fc82b48ff 100644
--- a/chromium/services/audio/stream_factory.cc
+++ b/chromium/services/audio/stream_factory.cc
@@ -133,8 +133,11 @@ void StreamFactory::CreateOutputStream(
// This is required for multizone audio playback on Cast devices.
// See //chromecast/media/cast_audio_manager.h for more information.
+ //
+ // TODO(crbug.com/1336055): Determine if this condition should instead be
+ // ENABLE_CAST_RECEIVER && !IS_FUCHSIA.
const std::string device_id_or_group_id =
-#if BUILDFLAG(IS_CHROMECAST)
+#if BUILDFLAG(IS_CASTOS) || BUILDFLAG(IS_CAST_ANDROID)
(::media::AudioDeviceDescription::IsCommunicationsDevice(
output_device_id) ||
group_id.is_empty())
@@ -218,7 +221,7 @@ void StreamFactory::CreateLoopbackStream(
TRACE_EVENT_BEGIN0("audio", "Start Loopback Worker");
base::Thread::Options options;
options.timer_slack = base::TIMER_SLACK_NONE;
- options.priority = base::ThreadPriority::REALTIME_AUDIO;
+ options.thread_type = base::ThreadType::kRealtimeAudio;
if (loopback_worker_thread_.StartWithOptions(std::move(options))) {
task_runner = loopback_worker_thread_.task_runner();
TRACE_EVENT_END1("audio", "Start Loopback Worker", "success", true);
diff --git a/chromium/services/audio/sync_reader.cc b/chromium/services/audio/sync_reader.cc
index 44be1c5191b..958c9c37c29 100644
--- a/chromium/services/audio/sync_reader.cc
+++ b/chromium/services/audio/sync_reader.cc
@@ -101,10 +101,10 @@ namespace audio {
#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
!BUILDFLAG(IS_CHROMEOS_LACROS)
const base::Feature kDynamicAudioTimeout{"DynamicAudioTimeout",
- base::FEATURE_DISABLED_BY_DEFAULT};
+ base::FEATURE_ENABLED_BY_DEFAULT};
const base::FeatureParam<double> kBufferDurationPercent{
- &kDynamicAudioTimeout, "buffer_duration_percent", 0.5};
+ &kDynamicAudioTimeout, "buffer_duration_percent", 0.95};
#endif
SyncReader::SyncReader(