diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-09-29 16:16:15 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-11-09 10:04:06 +0000 |
commit | a95a7417ad456115a1ef2da4bb8320531c0821f1 (patch) | |
tree | edcd59279e486d2fd4a8f88a7ed025bcf925c6e6 /chromium/services/audio | |
parent | 33fc33aa94d4add0878ec30dc818e34e1dd3cc2a (diff) | |
download | qtwebengine-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.gn | 2 | ||||
-rw-r--r-- | chromium/services/audio/device_listener_output_stream.cc | 4 | ||||
-rw-r--r-- | chromium/services/audio/device_listener_output_stream.h | 2 | ||||
-rw-r--r-- | chromium/services/audio/loopback_stream.cc | 6 | ||||
-rw-r--r-- | chromium/services/audio/loopback_stream.h | 2 | ||||
-rw-r--r-- | chromium/services/audio/output_controller_unittest.cc | 7 | ||||
-rw-r--r-- | chromium/services/audio/output_device_mixer_impl.cc | 7 | ||||
-rw-r--r-- | chromium/services/audio/owning_audio_manager_accessor.cc | 2 | ||||
-rw-r--r-- | chromium/services/audio/processing_audio_fifo.cc | 6 | ||||
-rw-r--r-- | chromium/services/audio/public/cpp/input_ipc.cc | 1 | ||||
-rw-r--r-- | chromium/services/audio/public/cpp/output_device.cc | 2 | ||||
-rw-r--r-- | chromium/services/audio/realtime_audio_thread_test.cc | 4 | ||||
-rw-r--r-- | chromium/services/audio/stream_factory.cc | 7 | ||||
-rw-r--r-- | chromium/services/audio/sync_reader.cc | 4 |
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( |