Stop assuming the Media task runner is a thread.
Code generally assumes the Media task runner is a single thread. Issue
crbug.com/1144329 hints at there isn't a hard requirement that the Media
sequence is a thread, and additional motivation for changing has been
provided in crbug.com/1144329#c2 (power consumption).
This change should be NOP, but hoists build assumptions on Media being a
SingleThreadTaskRunner to being its super class, SequencedTaskRunner.
Future CLs will be landed to also fix runtime dependencies as the Media
thread switches to become sourced by CreateSequencedTaskRunner() inside
RenderThreadImpl.
Bug: 1144329
Change-Id: Id24ffd3c059a9e5da567861758500c171031fd36
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3928266
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Sergey Ulanov <sergeyu@chromium.org>
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Reviewed-by: Jordan Bayles <jophba@chromium.org>
Reviewed-by: Sean Topping <seantopping@chromium.org>
Commit-Queue: Markus Handell <handellm@google.com>
Reviewed-by: Avi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1059135}
diff --git a/chromecast/renderer/cast_content_renderer_client.cc b/chromecast/renderer/cast_content_renderer_client.cc
index ae3bd59..6ef3ff4a 100644
--- a/chromecast/renderer/cast_content_renderer_client.cc
+++ b/chromecast/renderer/cast_content_renderer_client.cc
@@ -297,7 +297,7 @@
CastContentRendererClient::OverrideDemuxerForUrl(
content::RenderFrame* render_frame,
const GURL& url,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
+ scoped_refptr<base::SequencedTaskRunner> task_runner) {
if (render_frame->GetRenderFrameMediaPlaybackOptions()
.is_remoting_renderer_enabled() &&
url.SchemeIs(::media::remoting::kRemotingScheme)) {
diff --git a/chromecast/renderer/cast_content_renderer_client.h b/chromecast/renderer/cast_content_renderer_client.h
index 42493fb..014aae33c 100644
--- a/chromecast/renderer/cast_content_renderer_client.h
+++ b/chromecast/renderer/cast_content_renderer_client.h
@@ -8,6 +8,7 @@
#include <memory>
#include <vector>
+#include "base/task/sequenced_task_runner.h"
#include "build/build_config.h"
#include "chromecast/chromecast_buildflags.h"
#include "chromecast/common/mojom/application_media_capabilities.mojom.h"
@@ -65,7 +66,7 @@
std::unique_ptr<::media::Demuxer> OverrideDemuxerForUrl(
content::RenderFrame* render_frame,
const GURL& url,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner) override;
+ scoped_refptr<base::SequencedTaskRunner> task_runner) override;
bool IsIdleMediaSuspendEnabled() override;
void SetRuntimeFeaturesDefaultsBeforeBlinkInitialization() override;
std::unique_ptr<blink::WebSocketHandshakeThrottleProvider>
diff --git a/components/cast_streaming/renderer/frame_injecting_demuxer.cc b/components/cast_streaming/renderer/frame_injecting_demuxer.cc
index 7d51434b..5ff5ded 100644
--- a/components/cast_streaming/renderer/frame_injecting_demuxer.cc
+++ b/components/cast_streaming/renderer/frame_injecting_demuxer.cc
@@ -264,7 +264,7 @@
FrameInjectingDemuxer::FrameInjectingDemuxer(
DemuxerConnector* demuxer_connector,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner)
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner)
: media_task_runner_(std::move(media_task_runner)),
original_task_runner_(base::SequencedTaskRunnerHandle::Get()),
demuxer_connector_(demuxer_connector),
@@ -287,7 +287,7 @@
mojom::AudioStreamInitializationInfoPtr audio_stream_info,
mojom::VideoStreamInitializationInfoPtr video_stream_info) {
DVLOG(1) << __func__;
- DCHECK(!media_task_runner_->BelongsToCurrentThread());
+ DCHECK(!media_task_runner_->RunsTasksInCurrentSequence());
media_task_runner_->PostTask(
FROM_HERE,
@@ -300,7 +300,7 @@
mojom::AudioStreamInitializationInfoPtr audio_stream_info,
mojom::VideoStreamInitializationInfoPtr video_stream_info) {
DVLOG(1) << __func__;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(initialized_cb_);
if (!audio_stream_info && !video_stream_info) {
@@ -342,7 +342,7 @@
std::vector<media::DemuxerStream*> FrameInjectingDemuxer::GetAllStreams() {
DVLOG(1) << __func__;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
std::vector<media::DemuxerStream*> streams;
if (video_stream_)
@@ -360,7 +360,7 @@
media::DemuxerHost* host,
media::PipelineStatusCallback status_cb) {
DVLOG(1) << __func__;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
host_ = host;
// Live streams have infinite duration.
@@ -375,7 +375,7 @@
void FrameInjectingDemuxer::AbortPendingReads() {
DVLOG(2) << __func__;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (audio_stream_)
audio_stream_->AbortPendingRead();
@@ -397,7 +397,7 @@
void FrameInjectingDemuxer::Stop() {
DVLOG(1) << __func__;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (audio_stream_)
audio_stream_.reset();
diff --git a/components/cast_streaming/renderer/frame_injecting_demuxer.h b/components/cast_streaming/renderer/frame_injecting_demuxer.h
index 2fdcee9..25f1ca9 100644
--- a/components/cast_streaming/renderer/frame_injecting_demuxer.h
+++ b/components/cast_streaming/renderer/frame_injecting_demuxer.h
@@ -11,10 +11,6 @@
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
-namespace base {
-class SingleThreadTaskRunner;
-}
-
namespace cast_streaming {
class FrameInjectingAudioDemuxerStream;
@@ -32,7 +28,7 @@
public:
FrameInjectingDemuxer(
DemuxerConnector* demuxer_connector,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner);
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner);
~FrameInjectingDemuxer() override;
FrameInjectingDemuxer(const FrameInjectingDemuxer&) = delete;
@@ -77,7 +73,7 @@
// OnStreamInitializationComplete().
int pending_stream_initialization_callbacks_ = 0;
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
scoped_refptr<base::SequencedTaskRunner> original_task_runner_;
media::DemuxerHost* host_ = nullptr;
std::unique_ptr<FrameInjectingAudioDemuxerStream> audio_stream_;
diff --git a/components/cast_streaming/renderer/playback_command_forwarding_renderer.cc b/components/cast_streaming/renderer/playback_command_forwarding_renderer.cc
index b276199..da36781 100644
--- a/components/cast_streaming/renderer/playback_command_forwarding_renderer.cc
+++ b/components/cast_streaming/renderer/playback_command_forwarding_renderer.cc
@@ -27,7 +27,7 @@
RendererCommandForwarder(
PlaybackCommandForwardingRenderer* owning_renderer,
mojo::PendingReceiver<media::mojom::Renderer> playback_controller,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner)
+ scoped_refptr<base::SequencedTaskRunner> task_runner)
: owning_renderer_(owning_renderer),
playback_controller_(this, std::move(playback_controller)) {
DCHECK(owning_renderer_);
@@ -81,7 +81,7 @@
PlaybackCommandForwardingRenderer::PlaybackCommandForwardingRenderer(
std::unique_ptr<media::Renderer> renderer,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ scoped_refptr<base::SequencedTaskRunner> task_runner,
mojo::PendingReceiver<media::mojom::Renderer> pending_renderer_controls)
: real_renderer_(std::move(renderer)),
pending_renderer_controls_(std::move(pending_renderer_controls)),
@@ -89,7 +89,6 @@
weak_factory_(this) {
DCHECK(real_renderer_);
DCHECK(pending_renderer_controls_);
-
InitializeSendTimestampUpdateCaller();
}
@@ -126,11 +125,11 @@
void PlaybackCommandForwardingRenderer::Flush(base::OnceClosure flush_cb) {}
void PlaybackCommandForwardingRenderer::StartPlayingFrom(base::TimeDelta time) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
}
void PlaybackCommandForwardingRenderer::SetPlaybackRate(double playback_rate) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
}
void PlaybackCommandForwardingRenderer::SetVolume(float volume) {}
@@ -171,7 +170,7 @@
// over the mojo pipe here
DCHECK(!streams || streams.value().empty());
- if (!task_runner_->BelongsToCurrentThread()) {
+ if (!task_runner_->RunsTasksInCurrentSequence()) {
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(
@@ -190,7 +189,7 @@
void PlaybackCommandForwardingRenderer::MojoRendererFlush(
media::mojom::Renderer::FlushCallback callback) {
- if (!task_runner_->BelongsToCurrentThread()) {
+ if (!task_runner_->RunsTasksInCurrentSequence()) {
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(&PlaybackCommandForwardingRenderer::MojoRendererFlush,
@@ -203,7 +202,7 @@
void PlaybackCommandForwardingRenderer::MojoRendererStartPlayingFrom(
::base::TimeDelta time) {
- if (!task_runner_->BelongsToCurrentThread()) {
+ if (!task_runner_->RunsTasksInCurrentSequence()) {
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(
@@ -217,7 +216,7 @@
void PlaybackCommandForwardingRenderer::MojoRendererSetPlaybackRate(
double playback_rate) {
- if (!task_runner_->BelongsToCurrentThread()) {
+ if (!task_runner_->RunsTasksInCurrentSequence()) {
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(
@@ -230,7 +229,7 @@
}
void PlaybackCommandForwardingRenderer::MojoRendererSetVolume(float volume) {
- if (!task_runner_->BelongsToCurrentThread()) {
+ if (!task_runner_->RunsTasksInCurrentSequence()) {
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(
@@ -261,7 +260,7 @@
}
void PlaybackCommandForwardingRenderer::OnEnded() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (remote_renderer_client_)
remote_renderer_client_->OnEnded();
@@ -271,7 +270,7 @@
void PlaybackCommandForwardingRenderer::OnStatisticsUpdate(
const media::PipelineStatistics& stats) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (remote_renderer_client_)
remote_renderer_client_->OnStatisticsUpdate(stats);
@@ -282,7 +281,7 @@
void PlaybackCommandForwardingRenderer::OnBufferingStateChange(
media::BufferingState state,
media::BufferingStateChangeReason reason) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (remote_renderer_client_)
remote_renderer_client_->OnBufferingStateChange(state, reason);
@@ -291,7 +290,7 @@
}
void PlaybackCommandForwardingRenderer::OnWaiting(media::WaitingReason reason) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (remote_renderer_client_)
remote_renderer_client_->OnWaiting(reason);
@@ -301,7 +300,7 @@
void PlaybackCommandForwardingRenderer::OnAudioConfigChange(
const media::AudioDecoderConfig& config) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (remote_renderer_client_)
remote_renderer_client_->OnAudioConfigChange(config);
@@ -311,7 +310,7 @@
void PlaybackCommandForwardingRenderer::OnVideoConfigChange(
const media::VideoDecoderConfig& config) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (remote_renderer_client_)
remote_renderer_client_->OnVideoConfigChange(config);
@@ -321,7 +320,7 @@
void PlaybackCommandForwardingRenderer::OnVideoNaturalSizeChange(
const gfx::Size& size) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (remote_renderer_client_)
remote_renderer_client_->OnVideoNaturalSizeChange(size);
@@ -330,7 +329,7 @@
}
void PlaybackCommandForwardingRenderer::OnVideoOpacityChange(bool opaque) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (remote_renderer_client_)
remote_renderer_client_->OnVideoOpacityChange(opaque);
@@ -340,7 +339,7 @@
void PlaybackCommandForwardingRenderer::OnVideoFrameRateChange(
absl::optional<int> fps) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// media::mojom::RendererClient does not support this call.
if (upstream_renderer_client_)
@@ -348,7 +347,7 @@
}
void PlaybackCommandForwardingRenderer::SendTimestampUpdate() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (!remote_renderer_client_) {
return;
@@ -362,7 +361,7 @@
}
void PlaybackCommandForwardingRenderer::InitializeSendTimestampUpdateCaller() {
- if (!task_runner_->BelongsToCurrentThread()) {
+ if (!task_runner_->RunsTasksInCurrentSequence()) {
task_runner_->PostTask(
FROM_HERE, base::BindOnce(&PlaybackCommandForwardingRenderer::
InitializeSendTimestampUpdateCaller,
@@ -380,7 +379,7 @@
}
void PlaybackCommandForwardingRenderer::OnMojoDisconnect() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
OnError(media::PIPELINE_ERROR_DISCONNECTED);
real_renderer_.reset();
diff --git a/components/cast_streaming/renderer/playback_command_forwarding_renderer.h b/components/cast_streaming/renderer/playback_command_forwarding_renderer.h
index eba2a17..c8d521cb 100644
--- a/components/cast_streaming/renderer/playback_command_forwarding_renderer.h
+++ b/components/cast_streaming/renderer/playback_command_forwarding_renderer.h
@@ -8,6 +8,7 @@
#include <memory>
#include "base/memory/weak_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "media/base/renderer.h"
#include "media/base/renderer_client.h"
#include "media/mojo/mojom/renderer.mojom.h"
@@ -29,7 +30,7 @@
// playback commands to this instance.
PlaybackCommandForwardingRenderer(
std::unique_ptr<media::Renderer> renderer,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ scoped_refptr<base::SequencedTaskRunner> task_runner,
mojo::PendingReceiver<media::mojom::Renderer> pending_rederer_controls);
PlaybackCommandForwardingRenderer(const PlaybackCommandForwardingRenderer&) =
delete;
@@ -125,7 +126,7 @@
mojo::PendingReceiver<media::mojom::Renderer> pending_renderer_controls_;
// Task runner on which all mojo callbacks will be run.
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> task_runner_;
// Created as part of OnRealRendererInitializationComplete().
std::unique_ptr<media::mojom::Renderer> playback_controller_;
diff --git a/components/cast_streaming/renderer/playback_command_forwarding_renderer_factory.cc b/components/cast_streaming/renderer/playback_command_forwarding_renderer_factory.cc
index 4439fb3..36cb1de 100644
--- a/components/cast_streaming/renderer/playback_command_forwarding_renderer_factory.cc
+++ b/components/cast_streaming/renderer/playback_command_forwarding_renderer_factory.cc
@@ -26,7 +26,7 @@
std::unique_ptr<media::Renderer>
PlaybackCommandForwardingRendererFactory::CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
media::AudioRendererSink* audio_renderer_sink,
media::VideoRendererSink* video_renderer_sink,
diff --git a/components/cast_streaming/renderer/playback_command_forwarding_renderer_factory.h b/components/cast_streaming/renderer/playback_command_forwarding_renderer_factory.h
index 9655acf..4b55d6e 100644
--- a/components/cast_streaming/renderer/playback_command_forwarding_renderer_factory.h
+++ b/components/cast_streaming/renderer/playback_command_forwarding_renderer_factory.h
@@ -69,7 +69,7 @@
// Wraps |real_renderer_factory_->CreateRenderer()|'s results with a
// PlaybackCommandForwardingRenderer instance.
std::unique_ptr<media::Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
media::AudioRendererSink* audio_renderer_sink,
media::VideoRendererSink* video_renderer_sink,
diff --git a/components/cast_streaming/renderer/public/resource_provider.h b/components/cast_streaming/renderer/public/resource_provider.h
index 2556a71..87d1a5d 100644
--- a/components/cast_streaming/renderer/public/resource_provider.h
+++ b/components/cast_streaming/renderer/public/resource_provider.h
@@ -16,10 +16,6 @@
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "url/gurl.h"
-namespace base {
-class SingleThreadTaskRunner;
-} // namespace base
-
namespace media {
class Demuxer;
} // namespace media
@@ -58,7 +54,7 @@
// CastStreamingDemuxer instance in the case of a match.
virtual std::unique_ptr<media::Demuxer> MaybeGetDemuxerOverride(
const GURL& url,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner) = 0;
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner) = 0;
// Gets the receiver for this instance. To be used by the renderer-process
// PlaybackCommandForwardingRenderer to receive playback commands from the
diff --git a/components/cast_streaming/renderer/resource_provider_impl.cc b/components/cast_streaming/renderer/resource_provider_impl.cc
index 6ee244b..d3ca1504 100644
--- a/components/cast_streaming/renderer/resource_provider_impl.cc
+++ b/components/cast_streaming/renderer/resource_provider_impl.cc
@@ -60,7 +60,7 @@
std::unique_ptr<media::Demuxer> ResourceProviderImpl::MaybeGetDemuxerOverride(
const GURL& url,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner) {
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner) {
// Do not create a FrameInjectingDemuxer if the Cast Streaming MessagePort
// was not set in the browser process. This will manifest as an unbound
// DemuxerConnector object in the renderer process.
diff --git a/components/cast_streaming/renderer/resource_provider_impl.h b/components/cast_streaming/renderer/resource_provider_impl.h
index 81a2bc5..dbbc8b81 100644
--- a/components/cast_streaming/renderer/resource_provider_impl.h
+++ b/components/cast_streaming/renderer/resource_provider_impl.h
@@ -12,6 +12,7 @@
#include "base/callback_forward.h"
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "components/cast_streaming/public/mojom/demuxer_connector.mojom.h"
#include "components/cast_streaming/public/mojom/renderer_controller.mojom.h"
#include "components/cast_streaming/renderer/demuxer_connector.h"
@@ -22,10 +23,6 @@
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "url/gurl.h"
-namespace base {
-class SingleThreadTaskRunner;
-}
-
namespace media {
class Demuxer;
} // namespace media
@@ -85,7 +82,7 @@
ReceiverBinder<mojom::DemuxerConnector> GetDemuxerConnectorBinder() override;
std::unique_ptr<media::Demuxer> MaybeGetDemuxerOverride(
const GURL& url,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner) override;
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner) override;
mojo::PendingReceiver<media::mojom::Renderer> GetRendererCommandReceiver()
override;
diff --git a/components/viz/common/gpu/context_cache_controller.cc b/components/viz/common/gpu/context_cache_controller.cc
index d9b92f6..0e9ce30 100644
--- a/components/viz/common/gpu/context_cache_controller.cc
+++ b/components/viz/common/gpu/context_cache_controller.cc
@@ -34,7 +34,7 @@
ContextCacheController::ContextCacheController(
gpu::ContextSupport* context_support,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner)
+ scoped_refptr<base::SequencedTaskRunner> task_runner)
: context_support_(context_support), task_runner_(std::move(task_runner)) {
// The |weak_factory_| can only be used from a single thread. We
// create/destroy this class and run callbacks on a single thread, but we
diff --git a/components/viz/common/gpu/context_cache_controller.h b/components/viz/common/gpu/context_cache_controller.h
index bb8971b..870ea40 100644
--- a/components/viz/common/gpu/context_cache_controller.h
+++ b/components/viz/common/gpu/context_cache_controller.h
@@ -11,6 +11,7 @@
#include "base/memory/raw_ptr.h"
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "components/viz/common/viz_common_export.h"
@@ -48,9 +49,8 @@
using ScopedVisibility = ScopedToken;
using ScopedBusy = ScopedToken;
- ContextCacheController(
- gpu::ContextSupport* context_support,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+ ContextCacheController(gpu::ContextSupport* context_support,
+ scoped_refptr<base::SequencedTaskRunner> task_runner);
virtual ~ContextCacheController();
void SetGrContext(GrDirectContext* gr_context);
@@ -88,7 +88,7 @@
void InvalidatePendingIdleCallbacks();
raw_ptr<gpu::ContextSupport> context_support_;
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> task_runner_;
raw_ptr<GrDirectContext> gr_context_ = nullptr;
std::unique_ptr<ScopedVisibility> held_visibility_;
diff --git a/components/viz/common/gpu/raster_context_provider.h b/components/viz/common/gpu/raster_context_provider.h
index 5f9719ed..7d77948 100644
--- a/components/viz/common/gpu/raster_context_provider.h
+++ b/components/viz/common/gpu/raster_context_provider.h
@@ -69,6 +69,7 @@
// from the same thread unless the function has some explicitly specified
// rules for access on a different thread. See SetupLockOnMainThread(), which
// can be used to provide access from multiple threads.
+ // TODO(crbug.com/1144329): rename method to indicate sequence affinity.
virtual gpu::ContextResult BindToCurrentThread() = 0;
// Adds/removes an observer to be called when the context is lost. AddObserver
diff --git a/content/public/renderer/content_renderer_client.cc b/content/public/renderer/content_renderer_client.cc
index 76c44e9..52aec85 100644
--- a/content/public/renderer/content_renderer_client.cc
+++ b/content/public/renderer/content_renderer_client.cc
@@ -74,7 +74,7 @@
std::unique_ptr<media::Demuxer> ContentRendererClient::OverrideDemuxerForUrl(
RenderFrame* render_frame,
const GURL& url,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
+ scoped_refptr<base::SequencedTaskRunner> task_runner) {
return nullptr;
}
diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h
index 69e9da01..72e0eb7 100644
--- a/content/public/renderer/content_renderer_client.h
+++ b/content/public/renderer/content_renderer_client.h
@@ -15,6 +15,7 @@
#include "base/callback_forward.h"
#include "base/files/file_path.h"
#include "base/memory/ref_counted.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/thread_pool/thread_pool_instance.h"
#include "build/build_config.h"
#include "content/common/content_export.h"
@@ -180,7 +181,7 @@
virtual std::unique_ptr<media::Demuxer> OverrideDemuxerForUrl(
RenderFrame* render_frame,
const GURL& url,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+ scoped_refptr<base::SequencedTaskRunner> task_runner);
// Allows the embedder to provide a WebSocketHandshakeThrottleProvider. If it
// returns NULL then none will be used.
diff --git a/content/renderer/media/android/flinging_renderer_client.cc b/content/renderer/media/android/flinging_renderer_client.cc
index 75db1c5..b82184f 100644
--- a/content/renderer/media/android/flinging_renderer_client.cc
+++ b/content/renderer/media/android/flinging_renderer_client.cc
@@ -13,7 +13,7 @@
FlingingRendererClient::FlingingRendererClient(
ClientExtentionPendingReceiver client_extension_receiver,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
std::unique_ptr<media::MojoRenderer> mojo_renderer,
media::RemotePlayStateChangeCB remote_play_state_change_cb)
: MojoRendererWrapper(std::move(mojo_renderer)),
@@ -27,7 +27,7 @@
void FlingingRendererClient::Initialize(media::MediaResource* media_resource,
media::RendererClient* client,
media::PipelineStatusCallback init_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
client_ = client;
@@ -39,7 +39,7 @@
void FlingingRendererClient::OnRemotePlayStateChange(
media::MediaStatus::State state) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
remote_play_state_change_cb_.Run(state);
}
diff --git a/content/renderer/media/android/flinging_renderer_client.h b/content/renderer/media/android/flinging_renderer_client.h
index e304f60d..3ce4f2b 100644
--- a/content/renderer/media/android/flinging_renderer_client.h
+++ b/content/renderer/media/android/flinging_renderer_client.h
@@ -9,6 +9,7 @@
#include "base/callback.h"
#include "base/memory/weak_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "content/common/content_export.h"
#include "media/base/media_resource.h"
@@ -34,7 +35,7 @@
FlingingRendererClient(
ClientExtentionPendingReceiver client_extension_receiver,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
std::unique_ptr<media::MojoRenderer> mojo_renderer,
media::RemotePlayStateChangeCB remote_play_state_change_cb);
@@ -52,7 +53,7 @@
void OnRemotePlayStateChange(media::MediaStatus::State state) override;
private:
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
media::RendererClient* client_;
diff --git a/content/renderer/media/android/flinging_renderer_client_factory.cc b/content/renderer/media/android/flinging_renderer_client_factory.cc
index 57341ab..6298f1b 100644
--- a/content/renderer/media/android/flinging_renderer_client_factory.cc
+++ b/content/renderer/media/android/flinging_renderer_client_factory.cc
@@ -26,7 +26,7 @@
FlingingRendererClientFactory::~FlingingRendererClientFactory() = default;
std::unique_ptr<media::Renderer> FlingingRendererClientFactory::CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
media::AudioRendererSink* audio_renderer_sink,
media::VideoRendererSink* video_renderer_sink,
diff --git a/content/renderer/media/android/flinging_renderer_client_factory.h b/content/renderer/media/android/flinging_renderer_client_factory.h
index 596dc0d8..aead4dc 100644
--- a/content/renderer/media/android/flinging_renderer_client_factory.h
+++ b/content/renderer/media/android/flinging_renderer_client_factory.h
@@ -42,7 +42,7 @@
void SetRemotePlayStateChangeCB(media::RemotePlayStateChangeCB callback);
std::unique_ptr<media::Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
media::AudioRendererSink* audio_renderer_sink,
media::VideoRendererSink* video_renderer_sink,
diff --git a/content/renderer/media/android/media_player_renderer_client.cc b/content/renderer/media/android/media_player_renderer_client.cc
index 7ef2f6b..6b84a40 100644
--- a/content/renderer/media/android/media_player_renderer_client.cc
+++ b/content/renderer/media/android/media_player_renderer_client.cc
@@ -13,7 +13,7 @@
MediaPlayerRendererClient::MediaPlayerRendererClient(
mojo::PendingRemote<RendererExtention> renderer_extension_remote,
mojo::PendingReceiver<ClientExtention> client_extension_receiver,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner,
std::unique_ptr<media::MojoRenderer> mojo_renderer,
media::ScopedStreamTextureWrapper stream_texture_wrapper,
@@ -41,7 +41,7 @@
media::MediaResource* media_resource,
media::RendererClient* client,
media::PipelineStatusCallback init_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(!init_cb_);
// Consume and bind the delayed PendingRemote and PendingReceiver now that we
@@ -70,7 +70,7 @@
void MediaPlayerRendererClient::OnStreamTextureWrapperInitialized(
media::MediaResource* media_resource,
bool success) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (!success) {
std::move(init_cb_).Run(
media::PipelineStatus::Codes::PIPELINE_ERROR_INITIALIZATION_FAILED);
@@ -95,7 +95,7 @@
void MediaPlayerRendererClient::OnRemoteRendererInitialized(
media::PipelineStatus status) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(!init_cb_.is_null());
if (status == media::PIPELINE_OK) {
@@ -136,7 +136,7 @@
}
void MediaPlayerRendererClient::OnDurationChange(base::TimeDelta duration) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
media_resource_->ForwardDurationChangeToDemuxerHost(duration);
}
diff --git a/content/renderer/media/android/media_player_renderer_client.h b/content/renderer/media/android/media_player_renderer_client.h
index 5a3d9622..8d91c0e 100644
--- a/content/renderer/media/android/media_player_renderer_client.h
+++ b/content/renderer/media/android/media_player_renderer_client.h
@@ -46,7 +46,7 @@
MediaPlayerRendererClient(
mojo::PendingRemote<RendererExtention> renderer_extension_remote,
mojo::PendingReceiver<ClientExtention> client_extension_receiver,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner,
std::unique_ptr<media::MojoRenderer> mojo_renderer,
media::ScopedStreamTextureWrapper stream_texture_wrapper,
@@ -92,8 +92,7 @@
media::VideoRendererSink* sink_;
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
-
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
// Used by |stream_texture_wrapper_| to signal OnFrameAvailable() and to send
// VideoFrames to |sink_| on the right thread.
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_;
diff --git a/content/renderer/media/android/media_player_renderer_client_factory.cc b/content/renderer/media/android/media_player_renderer_client_factory.cc
index 09447ba..898c4c0 100644
--- a/content/renderer/media/android/media_player_renderer_client_factory.cc
+++ b/content/renderer/media/android/media_player_renderer_client_factory.cc
@@ -23,7 +23,7 @@
std::unique_ptr<media::Renderer>
MediaPlayerRendererClientFactory::CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
media::AudioRendererSink* audio_renderer_sink,
media::VideoRendererSink* video_renderer_sink,
diff --git a/content/renderer/media/android/media_player_renderer_client_factory.h b/content/renderer/media/android/media_player_renderer_client_factory.h
index 7d6bb55..0f1b1c7 100644
--- a/content/renderer/media/android/media_player_renderer_client_factory.h
+++ b/content/renderer/media/android/media_player_renderer_client_factory.h
@@ -35,7 +35,7 @@
~MediaPlayerRendererClientFactory() override;
std::unique_ptr<media::Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
media::AudioRendererSink* audio_renderer_sink,
media::VideoRendererSink* video_renderer_sink,
diff --git a/content/renderer/media/cast_renderer_client_factory.cc b/content/renderer/media/cast_renderer_client_factory.cc
index a13f879..9678eee9 100644
--- a/content/renderer/media/cast_renderer_client_factory.cc
+++ b/content/renderer/media/cast_renderer_client_factory.cc
@@ -19,7 +19,7 @@
CastRendererClientFactory::~CastRendererClientFactory() = default;
std::unique_ptr<media::Renderer> CastRendererClientFactory::CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
media::AudioRendererSink* audio_renderer_sink,
media::VideoRendererSink* video_renderer_sink,
diff --git a/content/renderer/media/cast_renderer_client_factory.h b/content/renderer/media/cast_renderer_client_factory.h
index 5ce0902..70f19f5 100644
--- a/content/renderer/media/cast_renderer_client_factory.h
+++ b/content/renderer/media/cast_renderer_client_factory.h
@@ -36,7 +36,7 @@
~CastRendererClientFactory() override;
std::unique_ptr<media::Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
media::AudioRendererSink* audio_renderer_sink,
media::VideoRendererSink* video_renderer_sink,
diff --git a/content/renderer/media/media_factory.cc b/content/renderer/media/media_factory.cc
index fc6f9b8..9c21a263 100644
--- a/content/renderer/media/media_factory.cc
+++ b/content/renderer/media/media_factory.cc
@@ -15,6 +15,7 @@
#include "base/metrics/field_trial_params.h"
#include "base/metrics/histogram_functions.h"
#include "base/strings/string_number_conversions.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/threading/thread_task_runner_handle.h"
#include "build/build_config.h"
#include "build/buildflag.h"
@@ -332,7 +333,7 @@
// this time and subsequently a media thread. To fail, the media thread must
// be dead/dying (which only happens at ~RenderThreadImpl), in which case
// the process is about to die anyways.
- RenderThreadImpl::current()->GetMediaThreadTaskRunner()->DeleteSoon(
+ RenderThreadImpl::current()->GetMediaSequencedTaskRunner()->DeleteSoon(
FROM_HERE, std::move(decoder_factory_));
}
}
@@ -474,8 +475,8 @@
media_log.get(), render_frame_)
: nullptr;
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner =
- render_thread->GetMediaThreadTaskRunner();
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner =
+ render_thread->GetMediaSequencedTaskRunner();
if (!media_task_runner) {
// If the media thread failed to start, we will receive a null task runner.
@@ -680,7 +681,7 @@
auto dcomp_texture_creation_cb =
base::BindRepeating(&DCOMPTextureWrapperImpl::Create,
render_thread->GetDCOMPTextureFactory(),
- render_thread->GetMediaThreadTaskRunner());
+ render_thread->GetMediaSequencedTaskRunner());
mojo::Remote<media::mojom::MediaFoundationRendererNotifier>
media_foundation_renderer_notifier;
@@ -726,7 +727,7 @@
auto remoting_renderer_factory =
std::make_unique<media::remoting::RemotingRendererFactory>(
std::move(remotee), std::move(default_factory_remoting),
- render_thread->GetMediaThreadTaskRunner());
+ render_thread->GetMediaSequencedTaskRunner());
auto is_remoting_media = base::BindRepeating(
[](const GURL& url) -> bool {
return url.SchemeIs(media::remoting::kRemotingScheme);
@@ -788,7 +789,7 @@
render_frame_->GetTaskRunner(blink::TaskType::kInternalMedia),
render_thread->GetIOTaskRunner(),
GetOrCreateVideoFrameCompositorTaskRunner(render_frame_),
- render_thread->GetMediaThreadTaskRunner(),
+ render_thread->GetMediaSequencedTaskRunner(),
std::move(compositor_worker_task_runner),
render_thread->GetGpuFactories(), sink_id,
base::BindOnce(&blink::WebSurfaceLayerBridge::Create,
diff --git a/content/renderer/media/win/dcomp_texture_factory.cc b/content/renderer/media/win/dcomp_texture_factory.cc
index f43b5b5b..5b9f0ae 100644
--- a/content/renderer/media/win/dcomp_texture_factory.cc
+++ b/content/renderer/media/win/dcomp_texture_factory.cc
@@ -15,7 +15,7 @@
// static
scoped_refptr<DCOMPTextureFactory> DCOMPTextureFactory::Create(
scoped_refptr<gpu::GpuChannelHost> channel,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner) {
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner) {
DVLOG(1) << __func__;
return WrapRefCounted(
new DCOMPTextureFactory(std::move(channel), media_task_runner));
@@ -23,7 +23,7 @@
DCOMPTextureFactory::DCOMPTextureFactory(
scoped_refptr<gpu::GpuChannelHost> channel,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner)
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner)
: channel_(std::move(channel)), media_task_runner_(media_task_runner) {
DVLOG_FUNC(1);
DCHECK(channel_);
@@ -34,7 +34,7 @@
std::unique_ptr<DCOMPTextureHost> DCOMPTextureFactory::CreateDCOMPTextureHost(
DCOMPTextureHost::Listener* listener) {
DVLOG_FUNC(1);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
int32_t route_id = channel_->GenerateRouteID();
mojo::PendingAssociatedRemote<gpu::mojom::DCOMPTexture> remote;
@@ -58,7 +58,7 @@
}
gpu::SharedImageInterface* DCOMPTextureFactory::SharedImageInterface() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (!shared_image_interface_)
shared_image_interface_ = channel_->CreateClientSharedImageInterface();
diff --git a/content/renderer/media/win/dcomp_texture_factory.h b/content/renderer/media/win/dcomp_texture_factory.h
index b1f33b4..5f5945c 100644
--- a/content/renderer/media/win/dcomp_texture_factory.h
+++ b/content/renderer/media/win/dcomp_texture_factory.h
@@ -10,7 +10,7 @@
#include <memory>
#include "base/memory/ref_counted.h"
-#include "base/task/single_thread_task_runner.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/unguessable_token.h"
#include "cc/layers/video_frame_provider.h"
#include "content/common/content_export.h"
@@ -39,7 +39,7 @@
public:
static scoped_refptr<DCOMPTextureFactory> Create(
scoped_refptr<gpu::GpuChannelHost> channel,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner);
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner);
// Create the DCOMPTextureHost object. This internally creates a
// gpu::DCOMPTexture and returns its route_id. If this route_id is invalid
@@ -56,7 +56,7 @@
protected:
DCOMPTextureFactory(
scoped_refptr<gpu::GpuChannelHost> channel,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner);
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner);
DCOMPTextureFactory(const DCOMPTextureFactory&) = delete;
DCOMPTextureFactory& operator=(const DCOMPTextureFactory&) = delete;
virtual ~DCOMPTextureFactory();
@@ -65,7 +65,7 @@
friend class base::RefCountedThreadSafe<DCOMPTextureFactory>;
scoped_refptr<gpu::GpuChannelHost> channel_;
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
std::unique_ptr<gpu::ClientSharedImageInterface> shared_image_interface_;
};
diff --git a/content/renderer/media/win/dcomp_texture_host.cc b/content/renderer/media/win/dcomp_texture_host.cc
index cc88e83..46c85e4 100644
--- a/content/renderer/media/win/dcomp_texture_host.cc
+++ b/content/renderer/media/win/dcomp_texture_host.cc
@@ -18,12 +18,12 @@
DCOMPTextureHost::DCOMPTextureHost(
scoped_refptr<gpu::GpuChannelHost> channel,
int32_t route_id,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
mojo::PendingAssociatedRemote<gpu::mojom::DCOMPTexture> texture,
Listener* listener)
: channel_(std::move(channel)), route_id_(route_id), listener_(listener) {
DVLOG_FUNC(1);
- DCHECK(media_task_runner->BelongsToCurrentThread());
+ DCHECK(media_task_runner->RunsTasksInCurrentSequence());
DCHECK(channel_);
DCHECK(route_id_);
DCHECK(listener_);
diff --git a/content/renderer/media/win/dcomp_texture_host.h b/content/renderer/media/win/dcomp_texture_host.h
index 7ab566f0..7db6626 100644
--- a/content/renderer/media/win/dcomp_texture_host.h
+++ b/content/renderer/media/win/dcomp_texture_host.h
@@ -7,6 +7,7 @@
#include <stdint.h>
+#include "base/task/sequenced_task_runner.h"
#include "base/unguessable_token.h"
#include "base/win/windows_types.h"
#include "gpu/ipc/common/gpu_channel.mojom.h"
@@ -42,7 +43,7 @@
DCOMPTextureHost(
scoped_refptr<gpu::GpuChannelHost> channel,
int32_t route_id,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
mojo::PendingAssociatedRemote<gpu::mojom::DCOMPTexture> texture,
Listener* listener);
DCOMPTextureHost(const DCOMPTextureHost&) = delete;
diff --git a/content/renderer/media/win/dcomp_texture_wrapper_impl.cc b/content/renderer/media/win/dcomp_texture_wrapper_impl.cc
index f7e5d63..23c67ff2 100644
--- a/content/renderer/media/win/dcomp_texture_wrapper_impl.cc
+++ b/content/renderer/media/win/dcomp_texture_wrapper_impl.cc
@@ -78,7 +78,7 @@
// static
std::unique_ptr<media::DCOMPTextureWrapper> DCOMPTextureWrapperImpl::Create(
scoped_refptr<DCOMPTextureFactory> factory,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner) {
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner) {
DVLOG(1) << __func__;
// auto* impl = new DCOMPTextureWrapperImpl(factory, media_task_runner);
return base::WrapUnique(
@@ -87,14 +87,14 @@
DCOMPTextureWrapperImpl::DCOMPTextureWrapperImpl(
scoped_refptr<DCOMPTextureFactory> factory,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner)
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner)
: factory_(factory), media_task_runner_(media_task_runner) {
DVLOG_FUNC(1);
}
DCOMPTextureWrapperImpl::~DCOMPTextureWrapperImpl() {
DVLOG_FUNC(1);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// We do not need any additional cleanup logic here as the
// OnReleaseVideoFrame() callback handles cleaning up the shared image.
@@ -104,7 +104,7 @@
const gfx::Size& output_size,
OutputRectChangeCB output_rect_change_cb) {
DVLOG_FUNC(1);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
output_size_ = output_size;
@@ -118,7 +118,7 @@
void DCOMPTextureWrapperImpl::UpdateTextureSize(const gfx::Size& new_size) {
DVLOG_FUNC(2);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// We would like to invoke SetTextureSize() which will let DCOMPTexture to
// bind a mailbox to its SharedImage as early as possible. Let new_size of
@@ -134,7 +134,7 @@
const base::UnguessableToken& token,
SetDCOMPSurfaceHandleCB set_dcomp_surface_handle_cb) {
DVLOG_FUNC(1);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
dcomp_texture_host_->SetDCOMPSurfaceHandle(
token, std::move(set_dcomp_surface_handle_cb));
@@ -144,7 +144,7 @@
const gfx::Size& natural_size,
CreateVideoFrameCB create_video_frame_cb) {
DVLOG_FUNC(2);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
natural_size_ = natural_size;
if (mailbox_.IsZero()) {
@@ -190,7 +190,7 @@
const gfx::Size& natural_size,
gfx::GpuMemoryBufferHandle dx_handle,
CreateDXVideoFrameCB create_video_frame_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
gpu::SharedImageInterface* sii = factory_->SharedImageInterface();
uint32_t usage = gpu::SHARED_IMAGE_USAGE_RASTER |
@@ -234,14 +234,14 @@
void DCOMPTextureWrapperImpl::OnDXVideoFrameDestruction(
const gpu::SyncToken& sync_token,
const gpu::Mailbox& image_mailbox) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
gpu::SharedImageInterface* sii = factory_->SharedImageInterface();
sii->DestroySharedImage(sync_token, image_mailbox);
}
void DCOMPTextureWrapperImpl::OnSharedImageMailboxBound(gpu::Mailbox mailbox) {
DVLOG_FUNC(1);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
mailbox_ = std::move(mailbox);
@@ -253,7 +253,7 @@
void DCOMPTextureWrapperImpl::OnOutputRectChange(gfx::Rect output_rect) {
DVLOG_FUNC(1);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
output_rect_change_cb_.Run(output_rect);
}
diff --git a/content/renderer/media/win/dcomp_texture_wrapper_impl.h b/content/renderer/media/win/dcomp_texture_wrapper_impl.h
index 60d6a32..60e89d7 100644
--- a/content/renderer/media/win/dcomp_texture_wrapper_impl.h
+++ b/content/renderer/media/win/dcomp_texture_wrapper_impl.h
@@ -5,7 +5,7 @@
#ifndef CONTENT_RENDERER_MEDIA_WIN_DCOMP_TEXTURE_WRAPPER_IMPL_H_
#define CONTENT_RENDERER_MEDIA_WIN_DCOMP_TEXTURE_WRAPPER_IMPL_H_
-#include "base/task/single_thread_task_runner.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/unguessable_token.h"
#include "content/common/content_export.h"
#include "content/renderer/media/win/dcomp_texture_factory.h"
@@ -38,7 +38,7 @@
public:
static std::unique_ptr<media::DCOMPTextureWrapper> Create(
scoped_refptr<DCOMPTextureFactory> factory,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner);
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner);
~DCOMPTextureWrapperImpl() override;
@@ -61,7 +61,7 @@
private:
DCOMPTextureWrapperImpl(
scoped_refptr<DCOMPTextureFactory> factory,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner);
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner);
DCOMPTextureWrapperImpl(const DCOMPTextureWrapperImpl&) = delete;
DCOMPTextureWrapperImpl& operator=(const DCOMPTextureWrapperImpl&) = delete;
@@ -73,7 +73,7 @@
const gpu::Mailbox& image_mailbox);
scoped_refptr<DCOMPTextureFactory> factory_;
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
gfx::Size natural_size_; // Size of the video frames.
gfx::Size output_size_; // Size of the video output (on-screen size).
diff --git a/content/renderer/pepper/video_decoder_shim.cc b/content/renderer/pepper/video_decoder_shim.cc
index 09449e1..252b52c42 100644
--- a/content/renderer/pepper/video_decoder_shim.cc
+++ b/content/renderer/pepper/video_decoder_shim.cc
@@ -305,7 +305,7 @@
: state_(UNINITIALIZED),
host_(host),
media_task_runner_(
- RenderThreadImpl::current()->GetMediaThreadTaskRunner()),
+ RenderThreadImpl::current()->GetMediaSequencedTaskRunner()),
context_provider_(
RenderThreadImpl::current()->SharedMainThreadContextProvider()),
texture_pool_size_(texture_pool_size),
diff --git a/content/renderer/pepper/video_decoder_shim.h b/content/renderer/pepper/video_decoder_shim.h
index 278d47a..7640b3e 100644
--- a/content/renderer/pepper/video_decoder_shim.h
+++ b/content/renderer/pepper/video_decoder_shim.h
@@ -14,14 +14,11 @@
#include "base/containers/queue.h"
#include "base/memory/weak_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "media/base/video_decoder_config.h"
#include "media/video/video_decode_accelerator.h"
#include "ppapi/c/pp_codecs.h"
-namespace base {
-class SingleThreadTaskRunner;
-}
-
namespace viz {
class ContextProviderCommandBuffer;
}
@@ -81,7 +78,7 @@
State state_;
PepperVideoDecoderHost* host_;
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
scoped_refptr<viz::ContextProviderCommandBuffer> context_provider_;
// The current decoded frame size.
diff --git a/content/renderer/pepper/video_encoder_shim.cc b/content/renderer/pepper/video_encoder_shim.cc
index 32dd49ae..16faa6f 100644
--- a/content/renderer/pepper/video_encoder_shim.cc
+++ b/content/renderer/pepper/video_encoder_shim.cc
@@ -363,7 +363,7 @@
VideoEncoderShim::VideoEncoderShim(PepperVideoEncoderHost* host)
: host_(host),
media_task_runner_(
- RenderThreadImpl::current()->GetMediaThreadTaskRunner()) {
+ RenderThreadImpl::current()->GetMediaSequencedTaskRunner()) {
encoder_impl_ = std::make_unique<EncoderImpl>(weak_ptr_factory_.GetWeakPtr());
}
diff --git a/content/renderer/pepper/video_encoder_shim.h b/content/renderer/pepper/video_encoder_shim.h
index 9c2eebf..26ff364 100644
--- a/content/renderer/pepper/video_encoder_shim.h
+++ b/content/renderer/pepper/video_encoder_shim.h
@@ -12,13 +12,10 @@
#include <vector>
#include "base/memory/weak_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "media/base/bitrate.h"
#include "media/video/video_encode_accelerator.h"
-namespace base {
-class SingleThreadTaskRunner;
-}
-
namespace gfx {
class Size;
}
@@ -71,7 +68,7 @@
PepperVideoEncoderHost* host_;
// Task doing the encoding.
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
base::WeakPtrFactory<VideoEncoderShim> weak_ptr_factory_{this};
};
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 17b6280..0595073 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -993,7 +993,7 @@
if (!gpu_factories_.back()->CheckContextProviderLostOnMainThread())
return gpu_factories_.back().get();
- GetMediaThreadTaskRunner()->PostTask(
+ GetMediaSequencedTaskRunner()->PostTask(
FROM_HERE,
base::BindOnce(&GpuVideoAcceleratorFactoriesImpl::DestroyContext,
base::Unretained(gpu_factories_.back().get())));
@@ -1078,7 +1078,7 @@
gpu_factories_.push_back(GpuVideoAcceleratorFactoriesImpl::Create(
std::move(gpu_channel_host), base::ThreadTaskRunnerHandle::Get(),
- GetMediaThreadTaskRunner(), std::move(media_context_provider),
+ GetMediaSequencedTaskRunner(), std::move(media_context_provider),
enable_video_gpu_memory_buffers, enable_media_stream_gpu_memory_buffers,
enable_video_decode_accelerator, enable_video_encode_accelerator,
std::move(interface_factory), std::move(vea_provider)));
@@ -1193,7 +1193,7 @@
return nullptr;
}
dcomp_texture_factory_ = DCOMPTextureFactory::Create(
- std::move(channel), GetMediaThreadTaskRunner());
+ std::move(channel), GetMediaSequencedTaskRunner());
}
return dcomp_texture_factory_;
}
@@ -1582,8 +1582,8 @@
}
}
-scoped_refptr<base::SingleThreadTaskRunner>
-RenderThreadImpl::GetMediaThreadTaskRunner() {
+scoped_refptr<base::SequencedTaskRunner>
+RenderThreadImpl::GetMediaSequencedTaskRunner() {
DCHECK(main_thread_runner()->BelongsToCurrentThread());
if (!media_thread_) {
media_thread_ = std::make_unique<base::Thread>("Media");
diff --git a/content/renderer/render_thread_impl.h b/content/renderer/render_thread_impl.h
index b2fb8e3..f0474c1 100644
--- a/content/renderer/render_thread_impl.h
+++ b/content/renderer/render_thread_impl.h
@@ -24,6 +24,7 @@
#include "base/memory/ref_counted.h"
#include "base/metrics/user_metrics_action.h"
#include "base/observer_list.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/time/time.h"
#include "base/types/pass_key.h"
#include "build/build_config.h"
@@ -282,10 +283,9 @@
// has been lost.
gpu::GpuChannelHost* GetGpuChannel();
- // Returns a SingleThreadTaskRunner instance corresponding to the message loop
- // of the thread on which media operations should be run. Must be called
- // on the renderer's main thread.
- scoped_refptr<base::SingleThreadTaskRunner> GetMediaThreadTaskRunner();
+ // Returns the sequence on which media operations should be run. Must be
+ // called on the renderer's main thread.
+ scoped_refptr<base::SequencedTaskRunner> GetMediaSequencedTaskRunner();
// Creates a ContextProvider if yet created, and returns it to be used for
// video frame compositing. The ContextProvider given as an argument is
diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc
index 4cedfbfa..ebf53c6a 100644
--- a/content/renderer/renderer_blink_platform_impl.cc
+++ b/content/renderer/renderer_blink_platform_impl.cc
@@ -25,6 +25,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/synchronization/lock.h"
#include "base/synchronization/waitable_event.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "base/task/thread_pool.h"
#include "base/threading/thread_restrictions.h"
@@ -972,13 +973,13 @@
return render_thread->GetGpuFactories();
}
-scoped_refptr<base::SingleThreadTaskRunner>
+scoped_refptr<base::SequencedTaskRunner>
RendererBlinkPlatformImpl::MediaThreadTaskRunner() {
auto* render_thread = RenderThreadImpl::current();
if (!render_thread)
return nullptr;
- return render_thread->GetMediaThreadTaskRunner();
+ return render_thread->GetMediaSequencedTaskRunner();
}
base::WeakPtr<media::DecoderFactory>
diff --git a/content/renderer/renderer_blink_platform_impl.h b/content/renderer/renderer_blink_platform_impl.h
index 78ffa14..ff010df 100644
--- a/content/renderer/renderer_blink_platform_impl.h
+++ b/content/renderer/renderer_blink_platform_impl.h
@@ -14,6 +14,7 @@
#include "base/containers/id_map.h"
#include "base/synchronization/lock.h"
#include "base/synchronization/waitable_event.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "base/thread_annotations.h"
#include "base/threading/thread_checker.h"
@@ -213,7 +214,7 @@
scoped_refptr<base::SingleThreadTaskRunner> owner_task_runner,
bool is_on_worker) override;
media::GpuVideoAcceleratorFactories* GetGpuFactories() override;
- scoped_refptr<base::SingleThreadTaskRunner> MediaThreadTaskRunner() override;
+ scoped_refptr<base::SequencedTaskRunner> MediaThreadTaskRunner() override;
base::WeakPtr<media::DecoderFactory> GetMediaDecoderFactory() override;
void SetRenderingColorSpace(const gfx::ColorSpace& color_space) override;
gfx::ColorSpace GetRenderingColorSpace() const override;
diff --git a/fuchsia_web/webengine/renderer/web_engine_media_renderer_factory.cc b/fuchsia_web/webengine/renderer/web_engine_media_renderer_factory.cc
index 8dd915a..9094e722 100644
--- a/fuchsia_web/webengine/renderer/web_engine_media_renderer_factory.cc
+++ b/fuchsia_web/webengine/renderer/web_engine_media_renderer_factory.cc
@@ -32,7 +32,7 @@
std::vector<std::unique_ptr<media::VideoDecoder>>
WebEngineMediaRendererFactory::CreateVideoDecoders(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
media::RequestOverlayInfoCB request_overlay_info_cb,
const gfx::ColorSpace& target_color_space,
media::GpuVideoAcceleratorFactories* gpu_factories) {
@@ -44,7 +44,7 @@
}
std::unique_ptr<media::Renderer> WebEngineMediaRendererFactory::CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
media::AudioRendererSink* audio_renderer_sink,
media::VideoRendererSink* video_renderer_sink,
diff --git a/fuchsia_web/webengine/renderer/web_engine_media_renderer_factory.h b/fuchsia_web/webengine/renderer/web_engine_media_renderer_factory.h
index f88dc815..9f858bc 100644
--- a/fuchsia_web/webengine/renderer/web_engine_media_renderer_factory.h
+++ b/fuchsia_web/webengine/renderer/web_engine_media_renderer_factory.h
@@ -39,7 +39,7 @@
// RendererFactory interface.
std::unique_ptr<media::Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
media::AudioRendererSink* audio_renderer_sink,
media::VideoRendererSink* video_renderer_sink,
@@ -48,7 +48,7 @@
private:
std::vector<std::unique_ptr<media::VideoDecoder>> CreateVideoDecoders(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
media::RequestOverlayInfoCB request_overlay_info_cb,
const gfx::ColorSpace& target_color_space,
media::GpuVideoAcceleratorFactories* gpu_factories);
diff --git a/gpu/ipc/client/command_buffer_proxy_impl.cc b/gpu/ipc/client/command_buffer_proxy_impl.cc
index 682ed9f..4cbf85b2d 100644
--- a/gpu/ipc/client/command_buffer_proxy_impl.cc
+++ b/gpu/ipc/client/command_buffer_proxy_impl.cc
@@ -47,7 +47,7 @@
scoped_refptr<GpuChannelHost> channel,
GpuMemoryBufferManager* gpu_memory_buffer_manager,
int32_t stream_id,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ scoped_refptr<base::SequencedTaskRunner> task_runner,
base::SharedMemoryMapper* transfer_buffer_mapper)
: channel_(std::move(channel)),
gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
diff --git a/gpu/ipc/client/command_buffer_proxy_impl.h b/gpu/ipc/client/command_buffer_proxy_impl.h
index 80369c9..12f2fbfbb 100644
--- a/gpu/ipc/client/command_buffer_proxy_impl.h
+++ b/gpu/ipc/client/command_buffer_proxy_impl.h
@@ -25,6 +25,7 @@
#include "base/memory/unsafe_shared_memory_region.h"
#include "base/memory/weak_ptr.h"
#include "base/observer_list.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "base/threading/thread_checker.h"
#include "gpu/command_buffer/client/gpu_control.h"
@@ -82,7 +83,7 @@
scoped_refptr<GpuChannelHost> channel,
GpuMemoryBufferManager* gpu_memory_buffer_manager,
int32_t stream_id,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ scoped_refptr<base::SequencedTaskRunner> task_runner,
base::SharedMemoryMapper* transfer_buffer_mapper = nullptr);
CommandBufferProxyImpl(const CommandBufferProxyImpl&) = delete;
@@ -289,7 +290,7 @@
raw_ptr<base::HistogramBase> uma_histogram_ensure_work_visible_duration_ =
nullptr;
- scoped_refptr<base::SingleThreadTaskRunner> callback_thread_;
+ scoped_refptr<base::SequencedTaskRunner> callback_thread_;
// Optional shared memory mapper to use when creating transfer buffers.
// TODO(1321521) remove this member and instead let callers of
diff --git a/media/audio/null_audio_sink.cc b/media/audio/null_audio_sink.cc
index 337ce19..7baf208 100644
--- a/media/audio/null_audio_sink.cc
+++ b/media/audio/null_audio_sink.cc
@@ -16,7 +16,7 @@
namespace media {
NullAudioSink::NullAudioSink(
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
+ const scoped_refptr<base::SequencedTaskRunner>& task_runner)
: initialized_(false),
started_(false),
playing_(false),
@@ -36,14 +36,14 @@
}
void NullAudioSink::Start() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(initialized_);
DCHECK(!started_);
started_ = true;
}
void NullAudioSink::Stop() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
started_ = false;
// Stop may be called at any time, so we have to check before stopping.
if (fake_worker_)
@@ -51,7 +51,7 @@
}
void NullAudioSink::Play() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(started_);
if (playing_)
@@ -64,7 +64,7 @@
}
void NullAudioSink::Pause() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(started_);
if (!playing_)
@@ -95,7 +95,7 @@
}
bool NullAudioSink::CurrentThreadIsRenderingThread() {
- return task_runner_->BelongsToCurrentThread();
+ return task_runner_->RunsTasksInCurrentSequence();
}
void NullAudioSink::SwitchOutputDevice(const std::string& device_id,
@@ -105,7 +105,7 @@
void NullAudioSink::CallRender(base::TimeTicks ideal_time,
base::TimeTicks now) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// Since NullAudioSink is only used for cases where a real audio sink was not
// available, provide "idealized" delay-timing arguments. This will drive the
diff --git a/media/audio/null_audio_sink.h b/media/audio/null_audio_sink.h
index dd037a3..5a950a1 100644
--- a/media/audio/null_audio_sink.h
+++ b/media/audio/null_audio_sink.h
@@ -9,13 +9,10 @@
#include <string>
#include "base/memory/raw_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/time/time.h"
#include "media/base/audio_renderer_sink.h"
-namespace base {
-class SingleThreadTaskRunner;
-}
-
namespace media {
class AudioBus;
class AudioHash;
@@ -24,7 +21,7 @@
class MEDIA_EXPORT NullAudioSink : public SwitchableAudioRendererSink {
public:
explicit NullAudioSink(
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
+ const scoped_refptr<base::SequencedTaskRunner>& task_runner);
NullAudioSink(const NullAudioSink&) = delete;
NullAudioSink& operator=(const NullAudioSink&) = delete;
@@ -66,7 +63,7 @@
// Controls whether or not a running hash is computed for audio frames.
std::unique_ptr<AudioHash> audio_hash_;
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> task_runner_;
std::unique_ptr<FakeAudioWorker> fake_worker_;
base::TimeDelta fixed_data_delay_;
std::unique_ptr<AudioBus> audio_bus_;
diff --git a/media/base/fake_audio_worker.cc b/media/base/fake_audio_worker.cc
index 291c2f82..000a5e0 100644
--- a/media/base/fake_audio_worker.cc
+++ b/media/base/fake_audio_worker.cc
@@ -12,6 +12,7 @@
#include "base/check_op.h"
#include "base/location.h"
#include "base/synchronization/lock.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "base/thread_annotations.h"
#include "base/threading/thread_checker.h"
@@ -24,7 +25,7 @@
class FakeAudioWorker::Worker
: public base::RefCountedThreadSafe<FakeAudioWorker::Worker> {
public:
- Worker(const scoped_refptr<base::SingleThreadTaskRunner>& worker_task_runner,
+ Worker(const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner,
const AudioParameters& params);
Worker(const Worker&) = delete;
@@ -49,7 +50,7 @@
// the worker loop.
void DoRead();
- const scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner_;
+ const scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
const int sample_rate_;
const int frames_per_read_;
@@ -61,11 +62,11 @@
// Used to cancel any delayed tasks still inside the worker loop's queue.
base::CancelableRepeatingClosure worker_task_cb_;
- THREAD_CHECKER(thread_checker_);
+ SEQUENCE_CHECKER(sequence_checker_);
};
FakeAudioWorker::FakeAudioWorker(
- const scoped_refptr<base::SingleThreadTaskRunner>& worker_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner,
const AudioParameters& params)
: worker_(new Worker(worker_task_runner, params)) {}
@@ -94,14 +95,14 @@
}
FakeAudioWorker::Worker::Worker(
- const scoped_refptr<base::SingleThreadTaskRunner>& worker_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner,
const AudioParameters& params)
: worker_task_runner_(worker_task_runner),
sample_rate_(params.sample_rate()),
frames_per_read_(params.frames_per_buffer()) {
// Worker can be constructed on any thread, but will DCHECK that its
// Start/Stop methods are called from the same thread.
- DETACH_FROM_THREAD(thread_checker_);
+ DETACH_FROM_SEQUENCE(sequence_checker_);
}
FakeAudioWorker::Worker::~Worker() {
@@ -114,7 +115,7 @@
}
void FakeAudioWorker::Worker::Start(FakeAudioWorker::Callback worker_cb) {
- DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(worker_cb);
{
base::AutoLock scoped_lock(worker_cb_lock_);
@@ -126,7 +127,7 @@
}
void FakeAudioWorker::Worker::DoStart() {
- DCHECK(worker_task_runner_->BelongsToCurrentThread());
+ DCHECK(worker_task_runner_->RunsTasksInCurrentSequence());
first_read_time_ = base::TimeTicks::Now();
frames_elapsed_ = 0;
worker_task_cb_.Reset(base::BindRepeating(&Worker::DoRead, this));
@@ -134,7 +135,7 @@
}
void FakeAudioWorker::Worker::Stop() {
- DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
{
base::AutoLock scoped_lock(worker_cb_lock_);
if (!worker_cb_)
@@ -146,12 +147,12 @@
}
void FakeAudioWorker::Worker::DoCancel() {
- DCHECK(worker_task_runner_->BelongsToCurrentThread());
+ DCHECK(worker_task_runner_->RunsTasksInCurrentSequence());
worker_task_cb_.Cancel();
}
void FakeAudioWorker::Worker::DoRead() {
- DCHECK(worker_task_runner_->BelongsToCurrentThread());
+ DCHECK(worker_task_runner_->RunsTasksInCurrentSequence());
const base::TimeTicks read_time =
first_read_time_ +
diff --git a/media/base/fake_audio_worker.h b/media/base/fake_audio_worker.h
index 097bc0b..23ba43d 100644
--- a/media/base/fake_audio_worker.h
+++ b/media/base/fake_audio_worker.h
@@ -7,13 +7,13 @@
#include "base/callback_forward.h"
#include "base/memory/ref_counted.h"
+#include "base/task/sequenced_task_runner.h"
#include "media/base/media_export.h"
namespace base {
-class SingleThreadTaskRunner;
class TimeDelta;
class TimeTicks;
-}
+} // namespace base
namespace media {
class AudioParameters;
@@ -33,7 +33,7 @@
// thread that invokes the Start/Stop methods.
// |params| is used to determine the frequency of callbacks.
FakeAudioWorker(
- const scoped_refptr<base::SingleThreadTaskRunner>& worker_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner,
const AudioParameters& params);
FakeAudioWorker(const FakeAudioWorker&) = delete;
diff --git a/media/base/media_url_demuxer.cc b/media/base/media_url_demuxer.cc
index 180887a19..5b3a58025 100644
--- a/media/base/media_url_demuxer.cc
+++ b/media/base/media_url_demuxer.cc
@@ -11,7 +11,7 @@
namespace media {
MediaUrlDemuxer::MediaUrlDemuxer(
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& task_runner,
const GURL& media_url,
const net::SiteForCookies& site_for_cookies,
const url::Origin& top_frame_origin,
@@ -44,7 +44,7 @@
void MediaUrlDemuxer::ForwardDurationChangeToDemuxerHost(
base::TimeDelta duration) {
DCHECK(host_);
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
host_->SetDuration(duration);
}
diff --git a/media/base/media_url_demuxer.h b/media/base/media_url_demuxer.h
index f4c721a..1be5a29 100644
--- a/media/base/media_url_demuxer.h
+++ b/media/base/media_url_demuxer.h
@@ -13,10 +13,6 @@
#include "media/base/demuxer.h"
#include "url/gurl.h"
-namespace base {
-class SingleThreadTaskRunner;
-} // namespace base
-
namespace net {
class SiteForCookies;
} // namespace net
@@ -36,13 +32,12 @@
// MediaResource.
class MEDIA_EXPORT MediaUrlDemuxer : public Demuxer {
public:
- MediaUrlDemuxer(
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
- const GURL& media_url,
- const net::SiteForCookies& site_for_cookies,
- const url::Origin& top_frame_origin,
- bool allow_credentials,
- bool is_hls);
+ MediaUrlDemuxer(const scoped_refptr<base::SequencedTaskRunner>& task_runner,
+ const GURL& media_url,
+ const net::SiteForCookies& site_for_cookies,
+ const url::Origin& top_frame_origin,
+ bool allow_credentials,
+ bool is_hls);
MediaUrlDemuxer(const MediaUrlDemuxer&) = delete;
MediaUrlDemuxer& operator=(const MediaUrlDemuxer&) = delete;
@@ -79,7 +74,7 @@
MediaUrlParams params_;
raw_ptr<DemuxerHost> host_;
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> task_runner_;
};
} // namespace media
diff --git a/media/base/memory_dump_provider_proxy.cc b/media/base/memory_dump_provider_proxy.cc
index 8dcde76..e8b3b2b 100644
--- a/media/base/memory_dump_provider_proxy.cc
+++ b/media/base/memory_dump_provider_proxy.cc
@@ -12,11 +12,12 @@
MemoryDumpProviderProxy::MemoryDumpProviderProxy(
const char* name,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ scoped_refptr<base::SequencedTaskRunner> task_runner,
MemoryDumpCB dump_cb)
: dump_cb_(std::move(dump_cb)) {
- base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
- this, name, std::move(task_runner));
+ base::trace_event::MemoryDumpManager::GetInstance()
+ ->RegisterDumpProviderWithSequencedTaskRunner(
+ this, name, std::move(task_runner), MemoryDumpProvider::Options());
}
MemoryDumpProviderProxy::~MemoryDumpProviderProxy() {
diff --git a/media/base/memory_dump_provider_proxy.h b/media/base/memory_dump_provider_proxy.h
index fa418aa..c67a09e 100644
--- a/media/base/memory_dump_provider_proxy.h
+++ b/media/base/memory_dump_provider_proxy.h
@@ -10,6 +10,7 @@
#include "base/memory/ref_counted.h"
#include "base/strings/string_piece.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "base/trace_event/memory_dump_provider.h"
#include "media/base/media_export.h"
@@ -23,10 +24,9 @@
class MEDIA_EXPORT MemoryDumpProviderProxy final
: public base::trace_event::MemoryDumpProvider {
public:
- MemoryDumpProviderProxy(
- const char* name,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
- MemoryDumpCB dump_cb);
+ MemoryDumpProviderProxy(const char* name,
+ scoped_refptr<base::SequencedTaskRunner> task_runner,
+ MemoryDumpCB dump_cb);
MemoryDumpProviderProxy(const MemoryDumpProviderProxy&) = delete;
MemoryDumpProviderProxy& operator=(const MemoryDumpProviderProxy&) = delete;
diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h
index e2b22f02..63ea945 100644
--- a/media/base/mock_filters.h
+++ b/media/base/mock_filters.h
@@ -534,14 +534,14 @@
~MockRendererFactory() override;
// Renderer implementation.
- MOCK_METHOD6(CreateRenderer,
- std::unique_ptr<Renderer>(
- const scoped_refptr<base::SingleThreadTaskRunner>&,
- const scoped_refptr<base::TaskRunner>&,
- AudioRendererSink*,
- VideoRendererSink*,
- RequestOverlayInfoCB,
- const gfx::ColorSpace&));
+ MOCK_METHOD6(
+ CreateRenderer,
+ std::unique_ptr<Renderer>(const scoped_refptr<base::SequencedTaskRunner>&,
+ const scoped_refptr<base::TaskRunner>&,
+ AudioRendererSink*,
+ VideoRendererSink*,
+ RequestOverlayInfoCB,
+ const gfx::ColorSpace&));
};
class MockTimeSource : public TimeSource {
diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc
index 4f79aa74..7070e27 100644
--- a/media/base/pipeline_impl.cc
+++ b/media/base/pipeline_impl.cc
@@ -18,6 +18,7 @@
#include "base/strings/string_number_conversions.h"
#include "base/synchronization/lock.h"
#include "base/synchronization/waitable_event.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "base/threading/thread_task_runner_handle.h"
#include "build/build_config.h"
@@ -61,7 +62,7 @@
class PipelineImpl::RendererWrapper final : public DemuxerHost,
public RendererClient {
public:
- RendererWrapper(scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ RendererWrapper(scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
MediaLog* media_log);
@@ -190,7 +191,7 @@
// one by calling back to PipelineImpl. Fires |done_cb| with the result.
void CreateRendererInternal(PipelineStatusCallback done_cb);
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
const raw_ptr<MediaLog> media_log_;
@@ -248,7 +249,7 @@
};
PipelineImpl::RendererWrapper::RendererWrapper(
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
MediaLog* media_log)
: media_task_runner_(std::move(media_task_runner)),
@@ -264,7 +265,7 @@
text_renderer_ended_(false) {}
PipelineImpl::RendererWrapper::~RendererWrapper() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(state_ == kCreated || state_ == kStopped);
}
@@ -279,7 +280,7 @@
Demuxer* demuxer,
std::unique_ptr<Renderer> default_renderer,
base::WeakPtr<PipelineImpl> weak_pipeline) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(state_ == kCreated || state_ == kStopped)
<< "Received start in unexpected state: " << state_;
DCHECK(!demuxer_);
@@ -325,7 +326,7 @@
}
void PipelineImpl::RendererWrapper::Stop() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(state_ != kStopping && state_ != kStopped);
SetState(kStopping);
@@ -357,7 +358,7 @@
}
void PipelineImpl::RendererWrapper::Seek(base::TimeDelta time) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// Suppress seeking if we're not fully started.
if (state_ != kPlaying) {
@@ -398,7 +399,7 @@
}
void PipelineImpl::RendererWrapper::Suspend() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// Suppress suspending if we're not playing.
if (state_ != kPlaying) {
@@ -432,7 +433,7 @@
void PipelineImpl::RendererWrapper::Resume(
std::unique_ptr<Renderer> default_renderer,
base::TimeDelta timestamp) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// Suppress resuming if we're not suspended.
if (state_ != kSuspended) {
@@ -475,7 +476,7 @@
}
void PipelineImpl::RendererWrapper::SetPlaybackRate(double playback_rate) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
playback_rate_ = playback_rate;
if (state_ == kPlaying)
@@ -483,7 +484,7 @@
}
void PipelineImpl::RendererWrapper::SetVolume(float volume) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
volume_ = volume;
if (shared_state_.renderer)
@@ -492,7 +493,7 @@
void PipelineImpl::RendererWrapper::SetLatencyHint(
absl::optional<base::TimeDelta> latency_hint) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (latency_hint_ == latency_hint)
return;
@@ -503,7 +504,7 @@
}
void PipelineImpl::RendererWrapper::SetPreservesPitch(bool preserves_pitch) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (preserves_pitch_ == preserves_pitch)
return;
@@ -515,7 +516,7 @@
void PipelineImpl::RendererWrapper::SetWasPlayedWithUserActivation(
bool was_played_with_user_activation) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
was_played_with_user_activation_ = was_played_with_user_activation;
if (shared_state_.renderer) {
@@ -560,7 +561,7 @@
void PipelineImpl::RendererWrapper::SetCdm(CdmContext* cdm_context,
CdmAttachedCB cdm_attached_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(cdm_context);
// If there's already a renderer, set the CDM on the renderer directly.
@@ -651,20 +652,20 @@
}
void PipelineImpl::RendererWrapper::OnError(PipelineStatus error) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(error_cb_);
media_task_runner_->PostTask(FROM_HERE, base::BindOnce(error_cb_, error));
}
void PipelineImpl::RendererWrapper::OnFallback(PipelineStatus fallback) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
main_task_runner_->PostTask(
FROM_HERE, base::BindOnce(&PipelineImpl::OnFallback, weak_pipeline_,
std::move(fallback).AddHere()));
}
void PipelineImpl::RendererWrapper::OnEnded() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
media_log_->AddEvent<MediaLogEvent::kEnded>();
if (state_ != kPlaying)
@@ -677,7 +678,7 @@
// TODO(crbug/817089): Combine this functionality into renderer->GetMediaTime().
base::TimeDelta PipelineImpl::RendererWrapper::GetCurrentTimestamp() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(demuxer_);
DCHECK(shared_state_.renderer || state_ != kPlaying);
@@ -700,7 +701,7 @@
void PipelineImpl::RendererWrapper::OnEnabledAudioTracksChanged(
const std::vector<MediaTrack::Id>& enabled_track_ids,
base::OnceClosure change_completed_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// If the pipeline has been created, but not started yet, we may still receive
// track notifications from blink level (e.g. when video track gets deselected
@@ -741,7 +742,7 @@
void PipelineImpl::RendererWrapper::OnSelectedVideoTrackChanged(
absl::optional<MediaTrack::Id> selected_track_id,
base::OnceClosure change_completed_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// See RenderWrapper::OnEnabledAudioTracksChanged.
if (state_ == kCreated) {
@@ -779,7 +780,7 @@
}
void PipelineImpl::RendererWrapper::OnExternalVideoFrameRequest() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (!shared_state_.renderer) {
return;
}
@@ -791,7 +792,7 @@
base::OnceClosure change_completed_cb,
DemuxerStream::Type stream_type,
const std::vector<DemuxerStream*>& streams) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (!shared_state_.renderer) {
// This can happen if the pipeline has been suspended.
std::move(change_completed_cb).Run();
@@ -817,7 +818,7 @@
void PipelineImpl::RendererWrapper::OnStatisticsUpdate(
const PipelineStatistics& stats) {
DVLOG(3) << __func__;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
base::AutoLock auto_lock(shared_state_lock_);
shared_state_.statistics.audio_bytes_decoded += stats.audio_bytes_decoded;
@@ -871,7 +872,7 @@
void PipelineImpl::RendererWrapper::OnBufferingStateChange(
BufferingState state,
BufferingStateChangeReason reason) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DVLOG(2) << __func__ << "(" << state << ", " << reason << ") ";
main_task_runner_->PostTask(
@@ -880,7 +881,7 @@
}
void PipelineImpl::RendererWrapper::OnWaiting(WaitingReason reason) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
main_task_runner_->PostTask(
FROM_HERE,
@@ -889,7 +890,7 @@
void PipelineImpl::RendererWrapper::OnVideoNaturalSizeChange(
const gfx::Size& size) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
main_task_runner_->PostTask(
FROM_HERE, base::BindOnce(&PipelineImpl::OnVideoNaturalSizeChange,
@@ -897,7 +898,7 @@
}
void PipelineImpl::RendererWrapper::OnVideoOpacityChange(bool opaque) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
main_task_runner_->PostTask(
FROM_HERE, base::BindOnce(&PipelineImpl::OnVideoOpacityChange,
@@ -906,7 +907,7 @@
void PipelineImpl::RendererWrapper::OnVideoFrameRateChange(
absl::optional<int> fps) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
main_task_runner_->PostTask(
FROM_HERE, base::BindOnce(&PipelineImpl::OnVideoFrameRateChange,
@@ -915,7 +916,7 @@
void PipelineImpl::RendererWrapper::OnAudioConfigChange(
const AudioDecoderConfig& config) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
main_task_runner_->PostTask(FROM_HERE,
base::BindOnce(&PipelineImpl::OnAudioConfigChange,
@@ -924,7 +925,7 @@
void PipelineImpl::RendererWrapper::OnVideoConfigChange(
const VideoDecoderConfig& config) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
main_task_runner_->PostTask(FROM_HERE,
base::BindOnce(&PipelineImpl::OnVideoConfigChange,
@@ -932,7 +933,7 @@
}
void PipelineImpl::RendererWrapper::OnPipelineError(PipelineStatus error) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(!error.is_ok()) << "PIPELINE_OK isn't an error!";
// Preserve existing abnormal status.
@@ -956,7 +957,7 @@
void PipelineImpl::RendererWrapper::OnCdmAttached(CdmAttachedCB cdm_attached_cb,
CdmContext* cdm_context,
bool success) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (success)
cdm_context_ = cdm_context;
@@ -964,7 +965,7 @@
}
void PipelineImpl::RendererWrapper::CheckPlaybackEnded() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (shared_state_.renderer && !renderer_ended_)
return;
@@ -978,7 +979,7 @@
}
void PipelineImpl::RendererWrapper::SetState(State next_state) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DVLOG(1) << PipelineImpl::GetStateString(state_) << " -> "
<< PipelineImpl::GetStateString(next_state);
@@ -993,7 +994,7 @@
void PipelineImpl::RendererWrapper::CompleteSeek(base::TimeDelta seek_time,
PipelineStatus status) {
DVLOG(1) << __func__ << ": seek_time=" << seek_time << ", status=" << status;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(state_ == kStarting || state_ == kSeeking || state_ == kResuming);
if (state_ == kStarting) {
@@ -1026,7 +1027,7 @@
void PipelineImpl::RendererWrapper::CompleteSuspend(PipelineStatus status) {
DVLOG(1) << __func__ << ": status=" << status;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(kSuspending, state_);
DCHECK(pending_callbacks_);
@@ -1055,7 +1056,7 @@
void PipelineImpl::RendererWrapper::InitializeDemuxer(
PipelineStatusCallback done_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
demuxer_->Initialize(this, std::move(done_cb));
}
@@ -1063,7 +1064,7 @@
void PipelineImpl::RendererWrapper::CreateRenderer(
PipelineStatusCallback done_cb) {
DVLOG(1) << __func__;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(state_ == kStarting || state_ == kResuming);
if (HasEncryptedStream() && !cdm_context_) {
@@ -1080,7 +1081,7 @@
PipelineStatusCallback done_cb,
std::unique_ptr<Renderer> renderer) {
DVLOG(1) << __func__ << ": renderer=" << renderer.get();
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (!renderer) {
std::move(done_cb).Run(PIPELINE_ERROR_INITIALIZATION_FAILED);
@@ -1098,7 +1099,7 @@
void PipelineImpl::RendererWrapper::InitializeRenderer(
PipelineStatusCallback done_cb) {
DVLOG(1) << __func__;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
switch (demuxer_->GetType()) {
case MediaResource::Type::STREAM:
@@ -1138,7 +1139,7 @@
}
void PipelineImpl::RendererWrapper::DestroyRenderer() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// Destroy the renderer outside the lock scope to avoid holding the lock
// while renderer is being destroyed (in case Renderer destructor is costly).
@@ -1150,7 +1151,7 @@
}
void PipelineImpl::RendererWrapper::ReportMetadata(StartType start_type) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
PipelineMetadata metadata;
std::vector<DemuxerStream*> streams;
@@ -1226,7 +1227,7 @@
}
PipelineImpl::PipelineImpl(
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
CreateRendererCB create_renderer_cb,
MediaLog* media_log)
@@ -1300,7 +1301,7 @@
return;
}
- if (media_task_runner_->BelongsToCurrentThread()) {
+ if (media_task_runner_->RunsTasksInCurrentSequence()) {
// This path is executed by unittests that share media and main threads.
renderer_wrapper_->Stop();
} else {
diff --git a/media/base/pipeline_impl.h b/media/base/pipeline_impl.h
index 04d1fa6..61144d0 100644
--- a/media/base/pipeline_impl.h
+++ b/media/base/pipeline_impl.h
@@ -10,6 +10,7 @@
#include "base/memory/raw_ptr.h"
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/threading/thread_checker.h"
#include "base/time/time.h"
#include "media/base/media_export.h"
@@ -83,7 +84,7 @@
public:
// Constructs a pipeline that will execute media tasks on |media_task_runner|.
// |create_renderer_cb|: to create renderers when starting and resuming.
- PipelineImpl(scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ PipelineImpl(scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
CreateRendererCB create_renderer_cb,
MediaLog* media_log);
@@ -181,7 +182,7 @@
void OnSuspendDone();
// Parameters passed in the constructor.
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
CreateRendererCB create_renderer_cb_;
const raw_ptr<MediaLog> media_log_;
diff --git a/media/base/renderer_factory.h b/media/base/renderer_factory.h
index c3b417e4..c18e11f 100644
--- a/media/base/renderer_factory.h
+++ b/media/base/renderer_factory.h
@@ -8,6 +8,7 @@
#include <memory>
#include "base/memory/ref_counted.h"
+#include "base/task/sequenced_task_runner.h"
#include "media/base/media_export.h"
#include "media/base/media_resource.h"
#include "media/base/overlay_info.h"
@@ -15,7 +16,6 @@
#include "ui/gfx/color_space.h"
namespace base {
-class SingleThreadTaskRunner;
class TaskRunner;
}
@@ -40,7 +40,7 @@
// The created Renderer can use |audio_renderer_sink| to render audio and
// |video_renderer_sink| to render video.
virtual std::unique_ptr<Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
AudioRendererSink* audio_renderer_sink,
VideoRendererSink* video_renderer_sink,
diff --git a/media/base/renderer_factory_selector_unittest.cc b/media/base/renderer_factory_selector_unittest.cc
index 31b113b..fa30f76c0 100644
--- a/media/base/renderer_factory_selector_unittest.cc
+++ b/media/base/renderer_factory_selector_unittest.cc
@@ -18,7 +18,7 @@
explicit FakeFactory(RendererType type) : type_(type) {}
std::unique_ptr<Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
AudioRendererSink* audio_renderer_sink,
VideoRendererSink* video_renderer_sink,
diff --git a/media/base/serial_runner.cc b/media/base/serial_runner.cc
index d43a34e..376afbc 100644
--- a/media/base/serial_runner.cc
+++ b/media/base/serial_runner.cc
@@ -8,6 +8,7 @@
#include "base/callback_helpers.h"
#include "base/location.h"
#include "base/task/single_thread_task_runner.h"
+#include "base/threading/sequenced_task_runner_handle.h"
#include "base/threading/thread_task_runner_handle.h"
namespace media {
@@ -30,7 +31,7 @@
// Runs |status_cb| with |last_status| on |task_runner|.
static void RunOnTaskRunner(
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& task_runner,
PipelineStatusCallback status_cb,
PipelineStatus last_status) {
// Force post to permit cancellation of a series in the scenario where all
@@ -67,7 +68,7 @@
}
SerialRunner::SerialRunner(Queue&& bound_fns, PipelineStatusCallback done_cb)
- : task_runner_(base::ThreadTaskRunnerHandle::Get()),
+ : task_runner_(base::SequencedTaskRunnerHandle::Get()),
bound_fns_(std::move(bound_fns)),
done_cb_(std::move(done_cb)) {
// Respect both cancellation and calling stack guarantees for |done_cb|
@@ -93,7 +94,7 @@
}
void SerialRunner::RunNextInSeries(PipelineStatus last_status) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(done_cb_);
if (bound_fns_.empty() || last_status != PIPELINE_OK) {
diff --git a/media/base/serial_runner.h b/media/base/serial_runner.h
index 959816e..0cf3cef 100644
--- a/media/base/serial_runner.h
+++ b/media/base/serial_runner.h
@@ -14,10 +14,6 @@
#include "media/base/media_export.h"
#include "media/base/pipeline_status.h"
-namespace base {
-class SingleThreadTaskRunner;
-}
-
namespace media {
// Runs a series of bound functions accepting Closures or
@@ -81,7 +77,7 @@
void RunNextInSeries(PipelineStatus last_status);
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> task_runner_;
Queue bound_fns_;
PipelineStatusCallback done_cb_;
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
index 76661fc..af5a0fb 100644
--- a/media/filters/ffmpeg_demuxer.cc
+++ b/media/filters/ffmpeg_demuxer.cc
@@ -23,7 +23,7 @@
#include "base/task/sequenced_task_runner.h"
#include "base/task/task_runner_util.h"
#include "base/task/thread_pool.h"
-#include "base/threading/thread_task_runner_handle.h"
+#include "base/threading/sequenced_task_runner_handle.h"
#include "base/time/time.h"
#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
@@ -260,7 +260,7 @@
std::unique_ptr<VideoDecoderConfig> video_config,
MediaLog* media_log)
: demuxer_(demuxer),
- task_runner_(base::ThreadTaskRunnerHandle::Get()),
+ task_runner_(base::SequencedTaskRunnerHandle::Get()),
stream_(stream),
start_time_(kNoTimestamp),
audio_config_(audio_config.release()),
diff --git a/media/mojo/clients/mojo_renderer.cc b/media/mojo/clients/mojo_renderer.cc
index c529abc3..7eba4c8 100644
--- a/media/mojo/clients/mojo_renderer.cc
+++ b/media/mojo/clients/mojo_renderer.cc
@@ -22,7 +22,7 @@
namespace media {
MojoRenderer::MojoRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& task_runner,
std::unique_ptr<VideoOverlayFactory> video_overlay_factory,
VideoRendererSink* video_renderer_sink,
mojo::PendingRemote<mojom::Renderer> remote_renderer)
@@ -36,7 +36,7 @@
MojoRenderer::~MojoRenderer() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
CancelPendingCallbacks();
}
@@ -45,7 +45,7 @@
media::RendererClient* client,
PipelineStatusCallback init_cb) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(media_resource);
if (encountered_error_) {
@@ -71,7 +71,7 @@
void MojoRenderer::InitializeRendererFromStreams(
media::RendererClient* client) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// Create mojom::DemuxerStream for each demuxer stream and bind its lifetime
// to the pipe.
@@ -106,7 +106,7 @@
void MojoRenderer::InitializeRendererFromUrl(media::RendererClient* client) {
DVLOG(2) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
BindRemoteRendererIfNeeded();
@@ -128,7 +128,7 @@
void MojoRenderer::SetCdm(CdmContext* cdm_context,
CdmAttachedCB cdm_attached_cb) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(cdm_context);
DCHECK(cdm_attached_cb);
DCHECK(!cdm_attached_cb_);
@@ -162,7 +162,7 @@
void MojoRenderer::Flush(base::OnceClosure flush_cb) {
DVLOG(2) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(remote_renderer_.is_bound());
DCHECK(flush_cb);
DCHECK(!flush_cb_);
@@ -185,7 +185,7 @@
void MojoRenderer::StartPlayingFrom(base::TimeDelta time) {
DVLOG(2) << __func__ << "(" << time << ")";
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(remote_renderer_.is_bound());
{
@@ -199,7 +199,7 @@
void MojoRenderer::SetPlaybackRate(double playback_rate) {
DVLOG(2) << __func__ << "(" << playback_rate << ")";
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(remote_renderer_.is_bound());
remote_renderer_->SetPlaybackRate(playback_rate);
@@ -212,7 +212,7 @@
void MojoRenderer::SetVolume(float volume) {
DVLOG(2) << __func__ << "(" << volume << ")";
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
volume_ = volume;
if (remote_renderer_.is_bound())
@@ -229,7 +229,7 @@
base::TimeTicks capture_time) {
DVLOG(4) << __func__ << "(" << time << ", " << max_time << ", "
<< capture_time << ")";
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
base::AutoLock auto_lock(lock_);
media_time_interpolator_.SetBounds(time, max_time, capture_time);
@@ -238,19 +238,19 @@
void MojoRenderer::OnBufferingStateChange(BufferingState state,
BufferingStateChangeReason reason) {
DVLOG(2) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnBufferingStateChange(state, reason);
}
void MojoRenderer::OnEnded() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnEnded();
}
void MojoRenderer::OnError(const PipelineStatus& status) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(!init_cb_);
encountered_error_ = true;
@@ -259,7 +259,7 @@
void MojoRenderer::OnVideoNaturalSizeChange(const gfx::Size& size) {
DVLOG(2) << __func__ << ": " << size.ToString();
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (video_overlay_factory_) {
video_renderer_sink_->PaintSingleFrame(
@@ -270,25 +270,25 @@
void MojoRenderer::OnVideoOpacityChange(bool opaque) {
DVLOG(2) << __func__ << ": " << opaque;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnVideoOpacityChange(opaque);
}
void MojoRenderer::OnAudioConfigChange(const AudioDecoderConfig& config) {
DVLOG(2) << __func__ << ": " << config.AsHumanReadableString();
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnAudioConfigChange(config);
}
void MojoRenderer::OnVideoConfigChange(const VideoDecoderConfig& config) {
DVLOG(2) << __func__ << ": " << config.AsHumanReadableString();
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnVideoConfigChange(config);
}
void MojoRenderer::OnStatisticsUpdate(const PipelineStatistics& stats) {
DVLOG(3) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (!client_) {
pending_stats_ = stats;
return;
@@ -298,13 +298,13 @@
void MojoRenderer::OnWaiting(WaitingReason reason) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnWaiting(reason);
}
void MojoRenderer::OnConnectionError() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
encountered_error_ = true;
CancelPendingCallbacks();
@@ -316,7 +316,7 @@
void MojoRenderer::OnDemuxerStreamConnectionError(
MojoDemuxerStreamImpl* stream) {
DVLOG(1) << __func__ << ": stream=" << stream;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
for (auto& s : streams_) {
if (s.get() == stream) {
@@ -329,7 +329,7 @@
void MojoRenderer::BindRemoteRendererIfNeeded() {
DVLOG(2) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// If |remote_renderer_| has already been bound, do nothing.
// Note that after Bind() is called, |remote_renderer_| is always bound even
@@ -350,7 +350,7 @@
void MojoRenderer::OnInitialized(media::RendererClient* client, bool success) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(init_cb_);
// Only set |client_| after initialization succeeded. No client methods should
@@ -373,7 +373,7 @@
void MojoRenderer::OnFlushed() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(flush_cb_);
std::move(flush_cb_).Run();
@@ -381,7 +381,7 @@
void MojoRenderer::OnCdmAttached(bool success) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(cdm_attached_cb_);
std::move(cdm_attached_cb_).Run(success);
@@ -389,7 +389,7 @@
void MojoRenderer::CancelPendingCallbacks() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (init_cb_)
std::move(init_cb_).Run(PIPELINE_ERROR_INITIALIZATION_FAILED);
diff --git a/media/mojo/clients/mojo_renderer.h b/media/mojo/clients/mojo_renderer.h
index 3e98c19..75ca4fd 100644
--- a/media/mojo/clients/mojo_renderer.h
+++ b/media/mojo/clients/mojo_renderer.h
@@ -22,10 +22,6 @@
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
-namespace base {
-class SingleThreadTaskRunner;
-}
-
namespace media {
class MediaResource;
@@ -45,7 +41,7 @@
// which can be called on any thread.
class MojoRenderer : public Renderer, public mojom::RendererClient {
public:
- MojoRenderer(const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ MojoRenderer(const scoped_refptr<base::SequencedTaskRunner>& task_runner,
std::unique_ptr<VideoOverlayFactory> video_overlay_factory,
VideoRendererSink* video_renderer_sink,
mojo::PendingRemote<mojom::Renderer> remote_renderer);
@@ -112,7 +108,7 @@
// |task_runner| on which all methods are invoked, except for GetMediaTime(),
// which can be called on any thread.
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> task_runner_;
// Overlay factory used to create overlays for video frames rendered
// by the remote renderer.
diff --git a/media/mojo/clients/mojo_renderer_factory.cc b/media/mojo/clients/mojo_renderer_factory.cc
index 443b787..cafc8ef 100644
--- a/media/mojo/clients/mojo_renderer_factory.cc
+++ b/media/mojo/clients/mojo_renderer_factory.cc
@@ -25,7 +25,7 @@
MojoRendererFactory::~MojoRendererFactory() = default;
std::unique_ptr<Renderer> MojoRendererFactory::CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
AudioRendererSink* audio_renderer_sink,
VideoRendererSink* video_renderer_sink,
@@ -52,7 +52,7 @@
renderer_extension_receiver,
mojo::PendingRemote<mojom::MediaFoundationRendererClientExtension>
client_extension_remote,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
VideoRendererSink* video_renderer_sink) {
DCHECK(interface_factory_);
mojo::PendingRemote<mojom::Renderer> renderer_remote;
@@ -70,7 +70,7 @@
#if BUILDFLAG(ENABLE_CAST_RENDERER)
std::unique_ptr<MojoRenderer> MojoRendererFactory::CreateCastRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
VideoRendererSink* video_renderer_sink) {
DCHECK(interface_factory_);
@@ -92,7 +92,7 @@
const std::string& presentation_id,
mojo::PendingRemote<mojom::FlingingRendererClientExtension>
client_extension_remote,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
VideoRendererSink* video_renderer_sink) {
DCHECK(interface_factory_);
mojo::PendingRemote<mojom::Renderer> renderer_remote;
@@ -111,7 +111,7 @@
renderer_extension_receiver,
mojo::PendingRemote<mojom::MediaPlayerRendererClientExtension>
client_extension_remote,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
VideoRendererSink* video_renderer_sink) {
DCHECK(interface_factory_);
mojo::PendingRemote<mojom::Renderer> renderer_remote;
diff --git a/media/mojo/clients/mojo_renderer_factory.h b/media/mojo/clients/mojo_renderer_factory.h
index e36799e..58e7b22a 100644
--- a/media/mojo/clients/mojo_renderer_factory.h
+++ b/media/mojo/clients/mojo_renderer_factory.h
@@ -41,7 +41,7 @@
~MojoRendererFactory() final;
std::unique_ptr<Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
AudioRendererSink* audio_renderer_sink,
VideoRendererSink* video_renderer_sink,
@@ -55,13 +55,13 @@
renderer_extension_receiver,
mojo::PendingRemote<mojom::MediaFoundationRendererClientExtension>
client_extension_remote,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
VideoRendererSink* video_renderer_sink);
#endif // BUILDFLAG(IS_WIN)
#if BUILDFLAG(ENABLE_CAST_RENDERER)
std::unique_ptr<MojoRenderer> CreateCastRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
VideoRendererSink* video_renderer_sink);
#endif // BUILDFLAG(ENABLE_CAST_RENDERER)
@@ -70,7 +70,7 @@
const std::string& presentation_id,
mojo::PendingRemote<mojom::FlingingRendererClientExtension>
client_extenion_ptr,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
VideoRendererSink* video_renderer_sink);
std::unique_ptr<MojoRenderer> CreateMediaPlayerRenderer(
@@ -78,7 +78,7 @@
renderer_extension_receiver,
mojo::PendingRemote<mojom::MediaPlayerRendererClientExtension>
client_extension_remote,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
VideoRendererSink* video_renderer_sink);
#endif // defined (OS_ANDROID)
diff --git a/media/mojo/clients/win/media_foundation_renderer_client.cc b/media/mojo/clients/win/media_foundation_renderer_client.cc
index b3d6f43..6342a70 100644
--- a/media/mojo/clients/win/media_foundation_renderer_client.cc
+++ b/media/mojo/clients/win/media_foundation_renderer_client.cc
@@ -20,7 +20,7 @@
namespace media {
MediaFoundationRendererClient::MediaFoundationRendererClient(
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
std::unique_ptr<MediaLog> media_log,
std::unique_ptr<MojoRenderer> mojo_renderer,
mojo::PendingRemote<RendererExtension> pending_renderer_extension,
@@ -55,7 +55,7 @@
RendererClient* client,
PipelineStatusCallback init_cb) {
DVLOG_FUNC(1);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(!init_cb_);
// Consume and bind the delayed PendingRemote and PendingReceiver now that
@@ -145,7 +145,7 @@
const base::UnguessableToken& frame_token,
const gfx::Size& size,
base::TimeDelta timestamp) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(has_video_);
auto video_frame = video_frame_pool_.find(frame_token);
@@ -187,7 +187,7 @@
void MediaFoundationRendererClient::OnPaintComplete(
const base::UnguessableToken& token) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
renderer_extension_->NotifyFrameReleased(token);
}
@@ -221,7 +221,7 @@
}
void MediaFoundationRendererClient::StartPlayingFrom(base::TimeDelta time) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
SignalMediaPlayingStateChange(true);
next_video_frame_.reset();
mojo_renderer_->StartPlayingFrom(time);
@@ -306,7 +306,7 @@
void MediaFoundationRendererClient::OnVideoNaturalSizeChange(
const gfx::Size& size) {
DVLOG_FUNC(1) << "size=" << size.ToString();
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(has_video_);
natural_size_ = size;
@@ -378,7 +378,7 @@
void MediaFoundationRendererClient::OnRemoteRendererInitialized(
PipelineStatus status) {
DVLOG_FUNC(1) << "status=" << status;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(!init_cb_.is_null());
if (status != PIPELINE_OK) {
@@ -413,7 +413,7 @@
void MediaFoundationRendererClient::OnOutputRectChange(gfx::Rect output_rect) {
DVLOG_FUNC(1) << "output_rect=" << output_rect.ToString();
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(has_video_);
renderer_extension_->SetOutputRect(
@@ -426,7 +426,7 @@
const gfx::Size& output_size,
bool success) {
DVLOG_FUNC(1) << "output_size=" << output_size.ToString();
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(has_video_);
if (!success) {
@@ -483,7 +483,7 @@
const std::string& error) {
DVLOG_FUNC(1);
DCHECK(has_video_);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// The error should've already been handled in MediaFoundationRenderer.
if (!token) {
@@ -499,7 +499,7 @@
void MediaFoundationRendererClient::OnDCOMPSurfaceHandleSet(bool success) {
DVLOG_FUNC(1);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(has_video_);
if (!success) {
@@ -514,7 +514,7 @@
scoped_refptr<VideoFrame> video_frame,
const gpu::Mailbox& mailbox) {
DVLOG_FUNC(1);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(has_video_);
video_frame->metadata().allow_overlay = true;
@@ -542,7 +542,7 @@
void MediaFoundationRendererClient::OnConnectionError() {
DVLOG_FUNC(1);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
MEDIA_LOG(ERROR, media_log_) << "MediaFoundationRendererClient disconnected";
MediaFoundationRenderer::ReportErrorReason(
MediaFoundationRenderer::ErrorReason::kOnConnectionError);
@@ -570,7 +570,7 @@
void MediaFoundationRendererClient::OnOverlayStateChanged(
const gpu::Mailbox& mailbox,
bool promoted) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
promoted_to_overlay_signal_ = promoted;
MEDIA_LOG(INFO, media_log_)
<< "Overlay state signal, promoted = " << promoted;
diff --git a/media/mojo/clients/win/media_foundation_renderer_client.h b/media/mojo/clients/win/media_foundation_renderer_client.h
index b2d0aea5..7d47baf 100644
--- a/media/mojo/clients/win/media_foundation_renderer_client.h
+++ b/media/mojo/clients/win/media_foundation_renderer_client.h
@@ -58,7 +58,7 @@
using ClientExtension = media::mojom::MediaFoundationRendererClientExtension;
MediaFoundationRendererClient(
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
std::unique_ptr<MediaLog> media_log,
std::unique_ptr<MojoRenderer> mojo_renderer,
mojo::PendingRemote<RendererExtension> pending_renderer_extension,
@@ -143,7 +143,7 @@
// This class is constructed on the main thread. Hence we store
// PendingRemotes so we can bind the Remotes on the media task
// runner during/after Initialize().
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
std::unique_ptr<MediaLog> media_log_;
std::unique_ptr<MojoRenderer> mojo_renderer_;
mojo::PendingRemote<RendererExtension> pending_renderer_extension_;
diff --git a/media/mojo/clients/win/media_foundation_renderer_client_factory.cc b/media/mojo/clients/win/media_foundation_renderer_client_factory.cc
index 6d0862e..af7e619a 100644
--- a/media/mojo/clients/win/media_foundation_renderer_client_factory.cc
+++ b/media/mojo/clients/win/media_foundation_renderer_client_factory.cc
@@ -41,7 +41,7 @@
std::unique_ptr<media::Renderer>
MediaFoundationRendererClientFactory::CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& /*worker_task_runner*/,
media::AudioRendererSink* /*audio_renderer_sink*/,
media::VideoRendererSink* video_renderer_sink,
diff --git a/media/mojo/clients/win/media_foundation_renderer_client_factory.h b/media/mojo/clients/win/media_foundation_renderer_client_factory.h
index d57f64a..d1ba1e6 100644
--- a/media/mojo/clients/win/media_foundation_renderer_client_factory.h
+++ b/media/mojo/clients/win/media_foundation_renderer_client_factory.h
@@ -7,6 +7,7 @@
#include "base/callback.h"
#include "base/memory/raw_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "media/base/renderer_factory.h"
#include "media/base/win/dcomp_texture_wrapper.h"
@@ -36,7 +37,7 @@
~MediaFoundationRendererClientFactory() override;
std::unique_ptr<media::Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
media::AudioRendererSink* audio_renderer_sink,
media::VideoRendererSink* video_renderer_sink,
diff --git a/media/remoting/courier_renderer.cc b/media/remoting/courier_renderer.cc
index 16f662ef..8cc6d60 100644
--- a/media/remoting/courier_renderer.cc
+++ b/media/remoting/courier_renderer.cc
@@ -79,7 +79,7 @@
} // namespace
CourierRenderer::CourierRenderer(
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
const base::WeakPtr<RendererController>& controller,
VideoRendererSink* video_renderer_sink)
: state_(STATE_UNINITIALIZED),
@@ -102,7 +102,7 @@
}
CourierRenderer::~CourierRenderer() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DeregisterFromRpcMessaging();
if (video_renderer_sink_) {
@@ -114,7 +114,7 @@
void CourierRenderer::Initialize(MediaResource* media_resource,
RendererClient* client,
PipelineStatusCallback init_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(media_resource);
DCHECK(client);
@@ -155,7 +155,7 @@
absl::optional<base::TimeDelta> latency_hint) {}
void CourierRenderer::Flush(base::OnceClosure flush_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(!flush_cb_);
if (state_ != STATE_PLAYING) {
@@ -200,7 +200,7 @@
}
void CourierRenderer::StartPlayingFrom(base::TimeDelta time) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (state_ != STATE_PLAYING) {
DCHECK_EQ(state_, STATE_ERROR);
@@ -222,7 +222,7 @@
}
void CourierRenderer::SetPlaybackRate(double playback_rate) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (state_ != STATE_FLUSHING && state_ != STATE_PLAYING) {
DCHECK_EQ(state_, STATE_ERROR);
@@ -240,7 +240,7 @@
}
void CourierRenderer::SetVolume(float volume) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
volume_ = volume;
if (state_ != STATE_FLUSHING && state_ != STATE_PLAYING)
@@ -267,7 +267,7 @@
// static
void CourierRenderer::OnDataPipeCreatedOnMainThread(
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
base::WeakPtr<CourierRenderer> self,
openscreen::WeakPtr<RpcMessenger> rpc_messenger,
mojo::PendingRemote<mojom::RemotingDataStreamSender> audio,
@@ -292,7 +292,7 @@
mojo::ScopedDataPipeProducerHandle video_handle,
int audio_rpc_handle,
int video_rpc_handle) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (state_ == STATE_ERROR)
return; // Abort because something went wrong in the meantime.
@@ -360,7 +360,7 @@
// static
void CourierRenderer::OnMessageReceivedOnMainThread(
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
base::WeakPtr<CourierRenderer> self,
std::unique_ptr<openscreen::cast::RpcMessage> message) {
if (media_task_runner) {
@@ -374,7 +374,7 @@
void CourierRenderer::OnReceivedRpc(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
switch (message->proc()) {
case openscreen::cast::RpcMessage::RPC_ACQUIRE_RENDERER_DONE:
@@ -421,7 +421,7 @@
void CourierRenderer::SendRpcToRemote(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(main_task_runner_);
main_task_runner_->PostTask(FROM_HERE,
base::BindOnce(&RpcMessenger::SendMessageToRemote,
@@ -430,7 +430,7 @@
void CourierRenderer::AcquireRendererDone(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
remote_renderer_handle_ = message->integer_value();
@@ -462,7 +462,7 @@
void CourierRenderer::InitializeCallback(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
const bool success = message->boolean_value();
@@ -485,7 +485,7 @@
}
void CourierRenderer::FlushUntilCallback() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (state_ != STATE_FLUSHING || !flush_cb_) {
OnFatalError(PEERS_OUT_OF_SYNC);
@@ -503,7 +503,7 @@
void CourierRenderer::OnTimeUpdate(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
// Shutdown remoting session if receiving malformed RPC message.
if (!message->has_rendererclient_ontimeupdate_rpc()) {
@@ -532,7 +532,7 @@
void CourierRenderer::OnBufferingStateChange(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
if (!message->has_rendererclient_onbufferingstatechange_rpc()) {
OnFatalError(RPC_INVALID);
@@ -559,7 +559,7 @@
void CourierRenderer::OnAudioConfigChange(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
// Shutdown remoting session if receiving malformed RPC message.
if (!message->has_rendererclient_onaudioconfigchange_rpc()) {
@@ -581,7 +581,7 @@
void CourierRenderer::OnVideoConfigChange(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
// Shutdown remoting session if receiving malformed RPC message.
if (!message->has_rendererclient_onvideoconfigchange_rpc()) {
@@ -603,7 +603,7 @@
void CourierRenderer::OnVideoNaturalSizeChange(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
// Shutdown remoting session if receiving malformed RPC message.
if (!message->has_rendererclient_onvideonatualsizechange_rpc()) {
@@ -620,7 +620,7 @@
void CourierRenderer::OnVideoOpacityChange(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
const bool opaque = message->boolean_value();
client_->OnVideoOpacityChange(opaque);
@@ -628,7 +628,7 @@
void CourierRenderer::OnStatisticsUpdate(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
// Shutdown remoting session if receiving malformed RPC message.
if (!message->has_rendererclient_onstatisticsupdate_rpc()) {
@@ -648,7 +648,7 @@
}
void CourierRenderer::OnFatalError(StopTrigger stop_trigger) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK_NE(UNKNOWN_STOP_TRIGGER, stop_trigger);
// If this is the first error, notify the controller. It is expected the
@@ -674,7 +674,7 @@
}
void CourierRenderer::OnMediaTimeUpdated() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (flush_cb_)
return; // Don't manage and check the queue when Flush() is on-going.
if (receiver_is_blocked_on_local_demuxers_)
@@ -713,7 +713,7 @@
void CourierRenderer::UpdateVideoStatsQueue(int video_frames_decoded,
int video_frames_dropped) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (flush_cb_)
return; // Don't manage and check the queue when Flush() is on-going.
@@ -754,7 +754,7 @@
}
void CourierRenderer::ResetMeasurements() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
media_time_queue_.clear();
video_stats_queue_.clear();
sum_video_frames_dropped_ = 0;
@@ -770,7 +770,7 @@
}
void CourierRenderer::MeasureAndRecordDataRates() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// Whenever media is first started or flushed/seeked, there is a "burst
// bufferring" period as the remote device rapidly fills its buffer before
@@ -810,7 +810,7 @@
}
bool CourierRenderer::IsWaitingForDataFromDemuxers() const {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
return ((video_demuxer_stream_adapter_ &&
video_demuxer_stream_adapter_->is_processing_read_request() &&
!video_demuxer_stream_adapter_->is_data_pending()) ||
@@ -820,7 +820,7 @@
}
void CourierRenderer::RegisterForRpcMessaging() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
auto receive_callback = BindToCurrentLoop(base::BindRepeating(
&CourierRenderer::OnReceivedRpc, weak_factory_.GetWeakPtr()));
@@ -836,7 +836,7 @@
}
void CourierRenderer::DeregisterFromRpcMessaging() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (rpc_messenger_) {
main_task_runner_->PostTask(
FROM_HERE,
diff --git a/media/remoting/courier_renderer.h b/media/remoting/courier_renderer.h
index 82ead88..b2cd3b9 100644
--- a/media/remoting/courier_renderer.h
+++ b/media/remoting/courier_renderer.h
@@ -47,7 +47,7 @@
// The whole class except for constructor and GetMediaTime() runs on
// |media_task_runner|. The constructor and GetMediaTime() run on render main
// thread.
- CourierRenderer(scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ CourierRenderer(scoped_refptr<base::SequencedTaskRunner> media_task_runner,
const base::WeakPtr<RendererController>& controller,
VideoRendererSink* video_renderer_sink);
@@ -61,7 +61,7 @@
// static in order to post task to media thread in order to avoid threading
// race condition.
static void OnDataPipeCreatedOnMainThread(
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
base::WeakPtr<CourierRenderer> self,
openscreen::WeakPtr<openscreen::cast::RpcMessenger> rpc_messenger,
mojo::PendingRemote<mojom::RemotingDataStreamSender> audio,
@@ -73,7 +73,7 @@
// static in order to post task to media thread in order to avoid threading
// race condition.
static void OnMessageReceivedOnMainThread(
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
base::WeakPtr<CourierRenderer> self,
std::unique_ptr<openscreen::cast::RpcMessage> message);
@@ -170,7 +170,7 @@
State state_;
const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
// Current renderer playback time information.
base::TimeDelta current_media_time_;
diff --git a/media/remoting/courier_renderer_factory.cc b/media/remoting/courier_renderer_factory.cc
index 86d5941..7d497701 100644
--- a/media/remoting/courier_renderer_factory.cc
+++ b/media/remoting/courier_renderer_factory.cc
@@ -26,7 +26,7 @@
CourierRendererFactory::~CourierRendererFactory() = default;
std::unique_ptr<Renderer> CourierRendererFactory::CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
AudioRendererSink* audio_renderer_sink,
VideoRendererSink* video_renderer_sink,
diff --git a/media/remoting/courier_renderer_factory.h b/media/remoting/courier_renderer_factory.h
index 0b88436..8d6c391 100644
--- a/media/remoting/courier_renderer_factory.h
+++ b/media/remoting/courier_renderer_factory.h
@@ -23,7 +23,7 @@
~CourierRendererFactory() override;
std::unique_ptr<Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
AudioRendererSink* audio_renderer_sink,
VideoRendererSink* video_renderer_sink,
diff --git a/media/remoting/demuxer_stream_adapter.cc b/media/remoting/demuxer_stream_adapter.cc
index 385b40c..8059fbd 100644
--- a/media/remoting/demuxer_stream_adapter.cc
+++ b/media/remoting/demuxer_stream_adapter.cc
@@ -9,6 +9,7 @@
#include "base/base64.h"
#include "base/bind.h"
#include "base/callback_helpers.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "components/cast_streaming/public/remoting_proto_enum_utils.h"
#include "components/cast_streaming/public/remoting_proto_utils.h"
@@ -47,7 +48,7 @@
DemuxerStreamAdapter::DemuxerStreamAdapter(
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
const std::string& name,
DemuxerStream* demuxer_stream,
const openscreen::WeakPtr<RpcMessenger>& rpc_messenger,
@@ -74,7 +75,7 @@
bytes_written_to_pipe_(0) {
DCHECK(main_task_runner_);
DCHECK(media_task_runner_);
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(demuxer_stream);
DCHECK(!error_callback_.is_null());
@@ -87,19 +88,19 @@
}
DemuxerStreamAdapter::~DemuxerStreamAdapter() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DeregisterFromRpcMessaging();
}
int64_t DemuxerStreamAdapter::GetBytesWrittenAndReset() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
const int64_t current_count = bytes_written_to_pipe_;
bytes_written_to_pipe_ = 0;
return current_count;
}
absl::optional<uint32_t> DemuxerStreamAdapter::SignalFlush(bool flushing) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DEMUXER_VLOG(2) << "flushing=" << flushing;
// Ignores if |pending_flush_| states is same.
@@ -124,7 +125,7 @@
void DemuxerStreamAdapter::OnReceivedRpc(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
DCHECK(rpc_handle_ == message->handle());
@@ -147,7 +148,7 @@
}
void DemuxerStreamAdapter::Initialize(int remote_callback_handle) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(!pending_flush_);
DEMUXER_VLOG(2) << "Received RPC_DS_INITIALIZE with remote_callback_handle="
<< remote_callback_handle;
@@ -208,7 +209,7 @@
void DemuxerStreamAdapter::ReadUntil(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
if (!message->has_demuxerstream_readuntil_rpc()) {
DEMUXER_VLOG(1) << "Missing required DemuxerStreamReadUntil struct in RPC";
@@ -244,7 +245,7 @@
}
void DemuxerStreamAdapter::EnableBitstreamConverter() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DEMUXER_VLOG(2) << "Received RPC_DS_ENABLEBITSTREAMCONVERTER";
bool is_command_sent = true;
#if BUILDFLAG(USE_PROPRIETARY_CODECS)
@@ -268,7 +269,7 @@
}
void DemuxerStreamAdapter::RequestBuffer() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (!is_processing_read_request() || pending_flush_) {
DEMUXER_VLOG(2) << "Skip actions since it's not in the reading state";
return;
@@ -281,7 +282,7 @@
void DemuxerStreamAdapter::OnNewBuffer(DemuxerStream::Status status,
scoped_refptr<DecoderBuffer> input) {
DEMUXER_VLOG(3) << "status=" << status;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (!is_processing_read_request() || pending_flush_) {
DEMUXER_VLOG(2) << "Skip actions since it's not in the reading state";
return;
@@ -324,7 +325,7 @@
}
void DemuxerStreamAdapter::WriteFrame() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(!pending_flush_);
DCHECK(is_processing_read_request());
DCHECK(!pending_frame_.empty());
@@ -366,7 +367,7 @@
}
void DemuxerStreamAdapter::SendReadAck() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DEMUXER_VLOG(3) << "last_count_=" << last_count_
<< ", remote_read_callback_handle="
<< read_until_callback_handle_
@@ -420,13 +421,13 @@
}
void DemuxerStreamAdapter::ResetPendingFrame() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
pending_frame_.clear();
pending_frame_is_eos_ = false;
}
void DemuxerStreamAdapter::OnFatalError(StopTrigger stop_trigger) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DEMUXER_VLOG(1) << __func__ << " with StopTrigger " << stop_trigger;
@@ -439,7 +440,7 @@
}
void DemuxerStreamAdapter::RegisterForRpcMessaging() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
auto receive_callback = BindToCurrentLoop(base::BindRepeating(
&DemuxerStreamAdapter::OnReceivedRpc, weak_factory_.GetWeakPtr()));
main_task_runner_->PostTask(
@@ -453,7 +454,7 @@
}
void DemuxerStreamAdapter::DeregisterFromRpcMessaging() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (rpc_messenger_) {
main_task_runner_->PostTask(
FROM_HERE,
diff --git a/media/remoting/demuxer_stream_adapter.h b/media/remoting/demuxer_stream_adapter.h
index 5f24a48..8f14e51 100644
--- a/media/remoting/demuxer_stream_adapter.h
+++ b/media/remoting/demuxer_stream_adapter.h
@@ -13,6 +13,7 @@
#include "base/callback_forward.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "media/base/audio_decoder_config.h"
#include "media/base/demuxer_stream.h"
#include "media/base/video_decoder_config.h"
@@ -63,7 +64,7 @@
// be shut down.
DemuxerStreamAdapter(
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
const std::string& name,
DemuxerStream* demuxer_stream,
const openscreen::WeakPtr<openscreen::cast::RpcMessenger>& rpc_messenger,
@@ -139,7 +140,7 @@
void DeregisterFromRpcMessaging();
const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
// Name of demuxer stream. Debug only.
const std::string name_;
diff --git a/media/remoting/receiver.cc b/media/remoting/receiver.cc
index 1fd9e8a..4d6ef12 100644
--- a/media/remoting/receiver.cc
+++ b/media/remoting/receiver.cc
@@ -36,7 +36,7 @@
int rpc_handle,
int remote_handle,
ReceiverController* receiver_controller,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
std::unique_ptr<Renderer> renderer,
base::OnceCallback<void(int)> acquire_renderer_done_cb)
: rpc_handle_(rpc_handle),
@@ -120,7 +120,7 @@
void Receiver::OnReceivedRpc(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(main_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message);
cast_streaming::remoting::DispatchRendererRpcCall(message.get(), this);
@@ -156,7 +156,7 @@
if (!rpc_initialize_received_ || !init_cb_)
return;
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(main_task_runner_->RunsTasksInCurrentSequence());
DCHECK(renderer_);
DCHECK(demuxer_);
renderer_->Initialize(demuxer_, this,
@@ -165,7 +165,7 @@
}
void Receiver::OnRendererInitialized(PipelineStatus status) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(main_task_runner_->RunsTasksInCurrentSequence());
DCHECK(init_cb_);
std::move(init_cb_).Run(status);
@@ -176,7 +176,7 @@
}
void Receiver::OnRpcSetPlaybackRate(double playback_rate) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(main_task_runner_->RunsTasksInCurrentSequence());
renderer_->SetPlaybackRate(playback_rate);
@@ -193,7 +193,7 @@
}
void Receiver::OnRpcFlush(uint32_t audio_count, uint32_t video_count) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(main_task_runner_->RunsTasksInCurrentSequence());
receiver_controller_->OnRendererFlush(audio_count, video_count);
@@ -209,7 +209,7 @@
}
void Receiver::OnRpcStartPlayingFrom(base::TimeDelta time) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(main_task_runner_->RunsTasksInCurrentSequence());
renderer_->StartPlayingFrom(time);
ScheduleMediaTimeUpdates();
@@ -225,7 +225,7 @@
}
void Receiver::OnRpcSetVolume(double volume) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(main_task_runner_->RunsTasksInCurrentSequence());
renderer_->SetVolume(volume);
}
diff --git a/media/remoting/receiver.h b/media/remoting/receiver.h
index bbc9751a..c2a1da5 100644
--- a/media/remoting/receiver.h
+++ b/media/remoting/receiver.h
@@ -54,7 +54,7 @@
Receiver(int rpc_handle,
int remote_handle,
ReceiverController* receiver_controller,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
std::unique_ptr<Renderer> renderer,
base::OnceCallback<void(int)> acquire_renderer_done_cb);
~Receiver() override;
@@ -140,7 +140,7 @@
const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
// Media tasks should run on media thread.
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
// |renderer_| is the real renderer to render media.
std::unique_ptr<Renderer> renderer_;
diff --git a/media/remoting/remoting_renderer_factory.cc b/media/remoting/remoting_renderer_factory.cc
index 90eaf3a..c3d5489 100644
--- a/media/remoting/remoting_renderer_factory.cc
+++ b/media/remoting/remoting_renderer_factory.cc
@@ -19,7 +19,7 @@
RemotingRendererFactory::RemotingRendererFactory(
mojo::PendingRemote<mojom::Remotee> remotee,
std::unique_ptr<RendererFactory> renderer_factory,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner)
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner)
: receiver_controller_(ReceiverController::GetInstance()),
rpc_messenger_(receiver_controller_->rpc_messenger()),
renderer_handle_(rpc_messenger_->GetUniqueHandle()),
@@ -49,7 +49,7 @@
}
std::unique_ptr<Renderer> RemotingRendererFactory::CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
AudioRendererSink* audio_renderer_sink,
VideoRendererSink* video_renderer_sink,
diff --git a/media/remoting/remoting_renderer_factory.h b/media/remoting/remoting_renderer_factory.h
index 9ddd45bd..142e470b0 100644
--- a/media/remoting/remoting_renderer_factory.h
+++ b/media/remoting/remoting_renderer_factory.h
@@ -6,6 +6,7 @@
#define MEDIA_REMOTING_REMOTING_RENDERER_FACTORY_H_
#include "base/memory/raw_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "media/base/renderer_factory.h"
#include "media/mojo/mojom/remoting.mojom.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
@@ -22,12 +23,12 @@
RemotingRendererFactory(
mojo::PendingRemote<mojom::Remotee> remotee,
std::unique_ptr<RendererFactory> renderer_factory,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner);
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner);
~RemotingRendererFactory() override;
// RendererFactory implementation
std::unique_ptr<Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
AudioRendererSink* audio_renderer_sink,
VideoRendererSink* video_renderer_sink,
@@ -62,8 +63,7 @@
std::unique_ptr<RendererFactory> real_renderer_factory_;
// Used to instantiate |receiver_|.
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
-
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
base::WeakPtrFactory<RemotingRendererFactory> weak_factory_{this};
};
diff --git a/media/remoting/stream_provider.cc b/media/remoting/stream_provider.cc
index f5b15218..7adb672 100644
--- a/media/remoting/stream_provider.cc
+++ b/media/remoting/stream_provider.cc
@@ -37,7 +37,7 @@
RpcMessenger* rpc_messenger,
Type type,
int32_t handle,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
base::OnceCallback<void(MediaStream::UniquePtr)> callback) {
MediaStream::UniquePtr stream(
new MediaStream(rpc_messenger, type, handle, media_task_runner),
@@ -54,7 +54,7 @@
RpcMessenger* rpc_messenger,
Type type,
int remote_handle,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner)
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner)
: main_task_runner_(base::ThreadTaskRunnerHandle::Get()),
media_task_runner_(media_task_runner),
rpc_messenger_(rpc_messenger),
@@ -81,7 +81,7 @@
}
void StreamProvider::MediaStream::Destroy() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// Invalid weak pointers to prevent |this| from receiving RPC calls on the
// media thread.
@@ -107,7 +107,7 @@
void StreamProvider::MediaStream::Initialize(
base::OnceClosure init_done_callback) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(init_done_callback);
if (init_done_callback_) {
@@ -126,7 +126,7 @@
void StreamProvider::MediaStream::InitializeDataPipe(
mojo::ScopedDataPipeConsumerHandle data_pipe) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
decoder_buffer_reader_ =
std::make_unique<MojoDecoderBufferReader>(std::move(data_pipe));
@@ -135,7 +135,7 @@
void StreamProvider::MediaStream::ReceiveFrame(uint32_t count,
mojom::DecoderBufferPtr buffer) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(decoder_buffer_reader_);
auto callback = BindToCurrentLoop(
@@ -145,7 +145,7 @@
}
void StreamProvider::MediaStream::FlushUntil(uint32_t count) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (count < current_frame_count_)
return;
@@ -168,7 +168,7 @@
void StreamProvider::MediaStream::OnReceivedRpc(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message->handle() == rpc_handle_);
switch (message->proc()) {
@@ -185,7 +185,7 @@
void StreamProvider::MediaStream::OnInitializeCallback(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
const openscreen::cast::DemuxerStreamInitializeCallback callback_message =
message->demuxerstream_initializecb_rpc();
if (callback_message.type() != type_) {
@@ -231,7 +231,7 @@
}
void StreamProvider::MediaStream::CompleteInitialize() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// Initialization finished when received RPC_DS_INITIALIZE_CALLBACK and
// |decoder_buffer_reader_| is created.
@@ -248,7 +248,7 @@
void StreamProvider::MediaStream::OnReadUntilCallback(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (!read_until_sent_) {
OnError("Unexpected ReadUntilCallback");
@@ -325,7 +325,7 @@
}
void StreamProvider::MediaStream::Read(ReadCB read_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(read_complete_callback_.is_null());
DCHECK(read_cb);
@@ -346,7 +346,7 @@
}
void StreamProvider::MediaStream::CompleteRead(DemuxerStream::Status status) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
switch (status) {
case DemuxerStream::kConfigChanged:
@@ -401,7 +401,7 @@
void StreamProvider::MediaStream::AppendBuffer(
uint32_t count,
scoped_refptr<DecoderBuffer> buffer) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// Drop flushed frame.
if (count < current_frame_count_)
@@ -426,7 +426,7 @@
StreamProvider::StreamProvider(
ReceiverController* receiver_controller,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner)
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner)
: main_task_runner_(base::ThreadTaskRunnerHandle::Get()),
media_task_runner_(media_task_runner),
receiver_controller_(receiver_controller),
@@ -459,7 +459,7 @@
void StreamProvider::Initialize(DemuxerHost* host,
PipelineStatusCallback status_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
init_done_callback_ = std::move(status_cb);
CompleteInitialize();
}
@@ -514,7 +514,7 @@
}
void StreamProvider::Destroy() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (init_done_callback_)
std::move(init_done_callback_).Run(PIPELINE_ERROR_ABORT);
@@ -544,7 +544,7 @@
void StreamProvider::OnAcquireDemuxer(
std::unique_ptr<openscreen::cast::RpcMessage> message) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(message->has_acquire_demuxer_rpc());
int32_t audio_demuxer_handle =
@@ -578,7 +578,7 @@
}
void StreamProvider::OnAudioStreamCreated(MediaStream::UniquePtr stream) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
audio_stream_ = std::move(stream);
audio_stream_->Initialize(base::BindOnce(
&StreamProvider::OnAudioStreamInitialized, media_weak_this_));
@@ -586,7 +586,7 @@
}
void StreamProvider::OnVideoStreamCreated(MediaStream::UniquePtr stream) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
video_stream_ = std::move(stream);
video_stream_->Initialize(base::BindOnce(
&StreamProvider::OnVideoStreamInitialized, media_weak_this_));
@@ -594,7 +594,7 @@
}
void StreamProvider::InitializeDataPipe() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if ((has_audio_ && !audio_stream_) || (has_video_ && !video_stream_))
return;
@@ -617,7 +617,7 @@
}
void StreamProvider::CompleteInitialize() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// Haven't receive RpcAcquireRenderer message
if (!has_audio_ && !has_video_)
diff --git a/media/remoting/stream_provider.h b/media/remoting/stream_provider.h
index 910e6ae..88c49664 100644
--- a/media/remoting/stream_provider.h
+++ b/media/remoting/stream_provider.h
@@ -10,6 +10,7 @@
#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/sequenced_task_runner_helpers.h"
#include "base/task/single_thread_task_runner.h"
#include "media/base/audio_decoder_config.h"
@@ -44,7 +45,7 @@
public:
StreamProvider(
ReceiverController* receiver_controller,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner);
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner);
// Demuxer implementation.
std::vector<DemuxerStream*> GetAllStreams() override;
@@ -87,7 +88,7 @@
openscreen::cast::RpcMessenger* rpc_messenger,
Type type,
int32_t handle,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
base::OnceCallback<void(MediaStream::UniquePtr)> callback);
// In order to destroy members in the right thread, MediaStream has to use
@@ -98,7 +99,7 @@
openscreen::cast::RpcMessenger* rpc_messenger,
Type type,
int32_t remote_handle,
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner);
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner);
// DemuxerStream implementation.
void Read(ReadCB read_cb) override;
@@ -170,7 +171,7 @@
void OnError(const std::string& error);
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
const raw_ptr<openscreen::cast::RpcMessenger> rpc_messenger_;
const Type type_;
@@ -247,7 +248,7 @@
void CompleteInitialize();
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
const raw_ptr<ReceiverController> receiver_controller_;
const raw_ptr<openscreen::cast::RpcMessenger> rpc_messenger_;
MediaStream::UniquePtr audio_stream_;
diff --git a/media/renderers/audio_renderer_impl.cc b/media/renderers/audio_renderer_impl.cc
index 65bab13c..9d8dcdb4 100644
--- a/media/renderers/audio_renderer_impl.cc
+++ b/media/renderers/audio_renderer_impl.cc
@@ -18,7 +18,6 @@
#include "base/metrics/histogram_macros.h"
#include "base/power_monitor/power_monitor.h"
#include "base/ranges/algorithm.h"
-#include "base/task/single_thread_task_runner.h"
#include "base/time/default_tick_clock.h"
#include "base/time/time.h"
#include "base/trace_event/trace_event.h"
@@ -43,7 +42,7 @@
namespace media {
AudioRendererImpl::AudioRendererImpl(
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& task_runner,
AudioRendererSink* sink,
const CreateAudioDecodersCB& create_audio_decoders_cb,
MediaLog* media_log,
@@ -79,11 +78,10 @@
speech_recognition_client_(speech_recognition_client) {
#endif
DCHECK(create_audio_decoders_cb_);
-
// PowerObserver's must be added and removed from the same thread, but we
// won't remove the observer until we're destructed on |task_runner_| so we
// must post it here if we're on the wrong thread.
- if (task_runner_->BelongsToCurrentThread()) {
+ if (task_runner_->RunsTasksInCurrentSequence()) {
base::PowerMonitor::AddPowerSuspendObserver(this);
} else {
// Safe to post this without a WeakPtr because this class must be destructed
@@ -100,7 +98,7 @@
AudioRendererImpl::~AudioRendererImpl() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
base::PowerMonitor::RemovePowerSuspendObserver(this);
// If Render() is in progress, this call will wait for Render() to finish.
@@ -115,7 +113,7 @@
void AudioRendererImpl::StartTicking() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
base::AutoLock auto_lock(lock_);
@@ -133,7 +131,7 @@
void AudioRendererImpl::StartRendering_Locked() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(state_, kPlaying);
DCHECK(!sink_playing_);
DCHECK_NE(playback_rate_, 0.0);
@@ -150,7 +148,7 @@
void AudioRendererImpl::StopTicking() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
base::AutoLock auto_lock(lock_);
@@ -167,7 +165,7 @@
}
void AudioRendererImpl::StopRendering_Locked() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(state_, kPlaying);
DCHECK(sink_playing_);
lock_.AssertAcquired();
@@ -185,7 +183,7 @@
void AudioRendererImpl::SetMediaTime(base::TimeDelta time) {
DVLOG(1) << __func__ << "(" << time << ")";
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
base::AutoLock auto_lock(lock_);
DCHECK(!rendering_);
@@ -280,7 +278,7 @@
void AudioRendererImpl::Flush(base::OnceClosure callback) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
TRACE_EVENT_NESTABLE_ASYNC_BEGIN0("media", "AudioRendererImpl::Flush",
TRACE_ID_LOCAL(this));
@@ -307,7 +305,7 @@
}
void AudioRendererImpl::DoFlush_Locked() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
lock_.AssertAcquired();
DCHECK(!pending_read_);
@@ -319,7 +317,7 @@
}
void AudioRendererImpl::ResetDecoderDone() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
{
base::AutoLock auto_lock(lock_);
@@ -342,7 +340,7 @@
void AudioRendererImpl::StartPlaying() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
base::AutoLock auto_lock(lock_);
DCHECK(!sink_playing_);
@@ -359,7 +357,7 @@
RendererClient* client,
PipelineStatusCallback init_cb) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(client);
DCHECK(stream);
DCHECK_EQ(stream->type(), DemuxerStream::AUDIO);
@@ -405,7 +403,7 @@
CdmContext* cdm_context,
OutputDeviceInfo output_device_info) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(client_);
DCHECK(stream);
DCHECK_EQ(stream->type(), DemuxerStream::AUDIO);
@@ -640,7 +638,7 @@
void AudioRendererImpl::OnAudioDecoderStreamInitialized(bool success) {
DVLOG(1) << __func__ << ": " << success;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
base::AutoLock auto_lock(lock_);
if (!success) {
@@ -729,22 +727,22 @@
}
void AudioRendererImpl::OnPlaybackError(PipelineStatus error) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnError(error);
}
void AudioRendererImpl::OnPlaybackEnded() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnEnded();
}
void AudioRendererImpl::OnStatisticsUpdate(const PipelineStatistics& stats) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnStatisticsUpdate(stats);
}
void AudioRendererImpl::OnBufferingStateChange(BufferingState buffering_state) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// "Underflow" is only possible when playing. This avoids noise like blaming
// the decoder for an "underflow" that is really just a seek.
@@ -763,12 +761,12 @@
}
void AudioRendererImpl::OnWaiting(WaitingReason reason) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnWaiting(reason);
}
void AudioRendererImpl::SetVolume(float volume) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// Only consider audio as unmuted if the volume is set to a non-zero value
// when the state is kPlaying.
@@ -868,7 +866,7 @@
void AudioRendererImpl::DecodedAudioReady(
AudioDecoderStream::ReadResult result) {
DVLOG(2) << __func__ << "(" << static_cast<int>(result.code()) << ")";
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
base::AutoLock auto_lock(lock_);
DCHECK(state_ != kUninitialized);
@@ -1091,7 +1089,7 @@
}
void AudioRendererImpl::AttemptRead_Locked() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
lock_.AssertAcquired();
if (!CanRead_Locked())
@@ -1127,7 +1125,7 @@
void AudioRendererImpl::SetPlaybackRate(double playback_rate) {
DVLOG(1) << __func__ << "(" << playback_rate << ")";
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_GE(playback_rate, 0);
DCHECK(sink_);
@@ -1355,7 +1353,7 @@
}
void AudioRendererImpl::HandleAbortedReadOrDecodeError(PipelineStatus status) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
lock_.AssertAcquired();
switch (state_) {
@@ -1394,7 +1392,7 @@
}
void AudioRendererImpl::OnConfigChange(const AudioDecoderConfig& config) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(expecting_config_changes_);
buffer_converter_->ResetTimestampState();
@@ -1453,7 +1451,7 @@
void AudioRendererImpl::EnableSpeechRecognition() {
#if !BUILDFLAG(IS_ANDROID)
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
transcribe_audio_callback_ = base::BindRepeating(
&AudioRendererImpl::TranscribeAudio, weak_factory_.GetWeakPtr());
#endif
@@ -1462,7 +1460,7 @@
void AudioRendererImpl::TranscribeAudio(
scoped_refptr<media::AudioBuffer> buffer) {
#if !BUILDFLAG(IS_ANDROID)
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (speech_recognition_client_)
speech_recognition_client_->AddAudio(std::move(buffer));
#endif
diff --git a/media/renderers/audio_renderer_impl.h b/media/renderers/audio_renderer_impl.h
index 20ba1a2..8d8cb3e 100644
--- a/media/renderers/audio_renderer_impl.h
+++ b/media/renderers/audio_renderer_impl.h
@@ -27,6 +27,7 @@
#include "base/memory/weak_ptr.h"
#include "base/power_monitor/power_observer.h"
#include "base/synchronization/lock.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/time/time.h"
#include "build/build_config.h"
#include "media/base/audio_decoder.h"
@@ -42,7 +43,6 @@
#include "third_party/abseil-cpp/absl/types/optional.h"
namespace base {
-class SingleThreadTaskRunner;
class TickClock;
} // namespace base
@@ -75,7 +75,7 @@
//
// |decoders| contains the AudioDecoders to use when initializing.
AudioRendererImpl(
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& task_runner,
AudioRendererSink* sink,
const CreateAudioDecodersCB& create_audio_decoders_cb,
MediaLog* media_log,
@@ -240,7 +240,7 @@
void EnableSpeechRecognition();
void TranscribeAudio(scoped_refptr<media::AudioBuffer> buffer);
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> task_runner_;
std::unique_ptr<AudioBufferConverter> buffer_converter_;
diff --git a/media/renderers/decrypting_renderer.cc b/media/renderers/decrypting_renderer.cc
index f79ad19e..2521e57 100644
--- a/media/renderers/decrypting_renderer.cc
+++ b/media/renderers/decrypting_renderer.cc
@@ -19,7 +19,7 @@
DecryptingRenderer::DecryptingRenderer(
std::unique_ptr<Renderer> renderer,
MediaLog* media_log,
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner)
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner)
: renderer_(std::move(renderer)),
media_log_(media_log),
media_task_runner_(media_task_runner),
@@ -44,7 +44,7 @@
void DecryptingRenderer::Initialize(MediaResource* media_resource,
RendererClient* client,
PipelineStatusCallback init_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(media_resource);
DCHECK(client);
@@ -75,7 +75,7 @@
void DecryptingRenderer::SetCdm(CdmContext* cdm_context,
CdmAttachedCB cdm_attached_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (cdm_context_) {
DVLOG(1) << "Switching CDM not supported.";
@@ -155,7 +155,7 @@
}
void DecryptingRenderer::CreateAndInitializeDecryptingMediaResource() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(init_cb_);
decrypting_media_resource_ = std::make_unique<DecryptingMediaResource>(
@@ -168,7 +168,7 @@
}
void DecryptingRenderer::InitializeRenderer(bool success) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (!success) {
std::move(init_cb_).Run(PIPELINE_ERROR_INITIALIZATION_FAILED);
@@ -185,7 +185,7 @@
}
bool DecryptingRenderer::HasEncryptedStream() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
for (auto* stream : media_resource_->GetAllStreams()) {
if ((stream->type() == DemuxerStream::AUDIO &&
@@ -204,7 +204,7 @@
}
void DecryptingRenderer::OnWaiting(WaitingReason reason) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
client_->OnWaiting(reason);
}
diff --git a/media/renderers/decrypting_renderer.h b/media/renderers/decrypting_renderer.h
index ac1fee5..e900b1e 100644
--- a/media/renderers/decrypting_renderer.h
+++ b/media/renderers/decrypting_renderer.h
@@ -38,7 +38,7 @@
DecryptingRenderer(
std::unique_ptr<Renderer> renderer,
MediaLog* media_log,
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner);
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner);
DecryptingRenderer(const DecryptingRenderer&) = delete;
DecryptingRenderer& operator=(const DecryptingRenderer&) = delete;
@@ -83,8 +83,7 @@
const std::unique_ptr<Renderer> renderer_;
const raw_ptr<MediaLog> media_log_;
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
-
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
bool waiting_for_cdm_ = false;
raw_ptr<CdmContext> cdm_context_ = nullptr;
raw_ptr<RendererClient> client_;
diff --git a/media/renderers/decrypting_renderer_factory.cc b/media/renderers/decrypting_renderer_factory.cc
index 8b38603..e235efbd4 100644
--- a/media/renderers/decrypting_renderer_factory.cc
+++ b/media/renderers/decrypting_renderer_factory.cc
@@ -17,7 +17,7 @@
DecryptingRendererFactory::~DecryptingRendererFactory() = default;
std::unique_ptr<Renderer> DecryptingRendererFactory::CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
AudioRendererSink* audio_renderer_sink,
VideoRendererSink* video_renderer_sink,
diff --git a/media/renderers/decrypting_renderer_factory.h b/media/renderers/decrypting_renderer_factory.h
index c7a2eb0..9b44894 100644
--- a/media/renderers/decrypting_renderer_factory.h
+++ b/media/renderers/decrypting_renderer_factory.h
@@ -35,7 +35,7 @@
// RendererFactory implementation.
std::unique_ptr<Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
AudioRendererSink* audio_renderer_sink,
VideoRendererSink* video_renderer_sink,
diff --git a/media/renderers/default_renderer_factory.cc b/media/renderers/default_renderer_factory.cc
index 62ff51b..1d68575 100644
--- a/media/renderers/default_renderer_factory.cc
+++ b/media/renderers/default_renderer_factory.cc
@@ -51,7 +51,7 @@
std::vector<std::unique_ptr<AudioDecoder>>
DefaultRendererFactory::CreateAudioDecoders(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner) {
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner) {
// Create our audio decoders and renderer.
std::vector<std::unique_ptr<AudioDecoder>> audio_decoders;
@@ -62,7 +62,7 @@
std::vector<std::unique_ptr<VideoDecoder>>
DefaultRendererFactory::CreateVideoDecoders(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
RequestOverlayInfoCB request_overlay_info_cb,
const gfx::ColorSpace& target_color_space,
GpuVideoAcceleratorFactories* gpu_factories) {
@@ -77,7 +77,7 @@
}
std::unique_ptr<Renderer> DefaultRendererFactory::CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
AudioRendererSink* audio_renderer_sink,
VideoRendererSink* video_renderer_sink,
diff --git a/media/renderers/default_renderer_factory.h b/media/renderers/default_renderer_factory.h
index 552fef31..bf2ba60 100644
--- a/media/renderers/default_renderer_factory.h
+++ b/media/renderers/default_renderer_factory.h
@@ -10,6 +10,7 @@
#include "base/callback.h"
#include "base/memory/raw_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "build/build_config.h"
#include "media/base/media_export.h"
#include "media/base/media_player_logging_id.h"
@@ -61,7 +62,7 @@
~DefaultRendererFactory() final;
std::unique_ptr<Renderer> CreateRenderer(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
AudioRendererSink* audio_renderer_sink,
VideoRendererSink* video_renderer_sink,
@@ -70,9 +71,9 @@
private:
std::vector<std::unique_ptr<AudioDecoder>> CreateAudioDecoders(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner);
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner);
std::vector<std::unique_ptr<VideoDecoder>> CreateVideoDecoders(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
RequestOverlayInfoCB request_overlay_info_cb,
const gfx::ColorSpace& target_color_space,
GpuVideoAcceleratorFactories* gpu_factories);
diff --git a/media/renderers/renderer_impl.cc b/media/renderers/renderer_impl.cc
index 52fa66e..8cff5e8 100644
--- a/media/renderers/renderer_impl.cc
+++ b/media/renderers/renderer_impl.cc
@@ -85,7 +85,7 @@
};
RendererImpl::RendererImpl(
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& task_runner,
std::unique_ptr<AudioRenderer> audio_renderer,
std::unique_ptr<VideoRenderer> video_renderer)
: state_(STATE_UNINITIALIZED),
@@ -114,7 +114,7 @@
RendererImpl::~RendererImpl() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// RendererImpl is being destroyed, so invalidate weak pointers right away to
// avoid getting callbacks which might try to access fields that has been
@@ -136,7 +136,7 @@
RendererClient* client,
PipelineStatusCallback init_cb) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(state_, STATE_UNINITIALIZED);
DCHECK(init_cb);
DCHECK(client);
@@ -161,7 +161,7 @@
void RendererImpl::SetCdm(CdmContext* cdm_context,
CdmAttachedCB cdm_attached_cb) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(cdm_context);
TRACE_EVENT0("media", "RendererImpl::SetCdm");
@@ -186,7 +186,7 @@
absl::optional<base::TimeDelta> latency_hint) {
DVLOG(1) << __func__;
DCHECK(!latency_hint || (*latency_hint >= base::TimeDelta()));
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (video_renderer_)
video_renderer_->SetLatencyHint(latency_hint);
@@ -197,7 +197,7 @@
void RendererImpl::SetPreservesPitch(bool preserves_pitch) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (audio_renderer_)
audio_renderer_->SetPreservesPitch(preserves_pitch);
@@ -206,7 +206,7 @@
void RendererImpl::SetWasPlayedWithUserActivation(
bool was_played_with_user_activation) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (audio_renderer_)
audio_renderer_->SetWasPlayedWithUserActivation(
@@ -215,7 +215,7 @@
void RendererImpl::Flush(base::OnceClosure flush_cb) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(!flush_cb_);
DCHECK(!(pending_audio_track_change_ || pending_video_track_change_));
TRACE_EVENT_NESTABLE_ASYNC_BEGIN0("media", "RendererImpl::Flush",
@@ -242,7 +242,7 @@
void RendererImpl::StartPlayingFrom(base::TimeDelta time) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
TRACE_EVENT1("media", "RendererImpl::StartPlayingFrom", "time_us",
time.InMicroseconds());
@@ -266,7 +266,7 @@
void RendererImpl::SetPlaybackRate(double playback_rate) {
DVLOG(1) << __func__ << "(" << playback_rate << ")";
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
TRACE_EVENT1("media", "RendererImpl::SetPlaybackRate", "rate", playback_rate);
// Playback rate changes are only carried out while playing.
@@ -288,7 +288,7 @@
void RendererImpl::SetVolume(float volume) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (audio_renderer_)
audio_renderer_->SetVolume(volume);
@@ -310,7 +310,7 @@
void RendererImpl::DisableUnderflowForTesting() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(state_, STATE_UNINITIALIZED);
underflow_disabled_for_testing_ = true;
@@ -318,7 +318,7 @@
void RendererImpl::EnableClocklessVideoPlaybackForTesting() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(state_, STATE_UNINITIALIZED);
DCHECK(underflow_disabled_for_testing_)
<< "Underflow must be disabled for clockless video playback";
@@ -383,7 +383,7 @@
void RendererImpl::InitializeAudioRenderer() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(state_, STATE_INITIALIZING);
DCHECK(init_cb_);
@@ -413,7 +413,7 @@
void RendererImpl::OnAudioRendererInitializeDone(PipelineStatus status) {
DVLOG(1) << __func__ << ": " << status;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// OnError() may be fired at any time by the renderers, even if they thought
// they initialized successfully (due to delayed output device setup).
@@ -434,7 +434,7 @@
void RendererImpl::InitializeVideoRenderer() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(state_, STATE_INITIALIZING);
DCHECK(init_cb_);
@@ -464,7 +464,7 @@
void RendererImpl::OnVideoRendererInitializeDone(PipelineStatus status) {
DVLOG(1) << __func__ << ": " << status;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// OnError() may be fired at any time by the renderers, even if they thought
// they initialized successfully (due to delayed output device setup).
@@ -498,7 +498,7 @@
void RendererImpl::FlushInternal() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(state_, STATE_FLUSHING);
DCHECK(flush_cb_);
@@ -511,7 +511,7 @@
// TODO(tmathmeyer) Combine this functionality with track switching flushing.
void RendererImpl::FlushAudioRenderer() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(state_, STATE_FLUSHING);
DCHECK(flush_cb_);
@@ -525,7 +525,7 @@
void RendererImpl::OnAudioRendererFlushDone() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (state_ == STATE_ERROR) {
DCHECK(!flush_cb_);
@@ -547,7 +547,7 @@
void RendererImpl::FlushVideoRenderer() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(state_, STATE_FLUSHING);
DCHECK(flush_cb_);
@@ -561,7 +561,7 @@
void RendererImpl::OnVideoRendererFlushDone() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (state_ == STATE_ERROR) {
DCHECK(!flush_cb_);
@@ -583,7 +583,7 @@
base::TimeDelta time,
base::OnceClosure reinitialize_completed_cb) {
DVLOG(2) << __func__ << " stream=" << stream << " time=" << time.InSecondsF();
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_NE(stream, current_audio_stream_);
current_audio_stream_ = stream;
@@ -614,7 +614,7 @@
base::TimeDelta time,
base::OnceClosure reinitialize_completed_cb) {
DVLOG(2) << __func__ << " stream=" << stream << " time=" << time.InSecondsF();
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_NE(stream, current_video_stream_);
current_video_stream_ = stream;
@@ -648,7 +648,7 @@
base::TimeDelta time,
base::OnceClosure restart_completed_cb) {
DVLOG(2) << __func__ << " stream=" << stream << " time=" << time.InSecondsF();
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(audio_renderer_);
DCHECK_EQ(stream, current_audio_stream_);
DCHECK(state_ == STATE_PLAYING || state_ == STATE_FLUSHED ||
@@ -675,7 +675,7 @@
base::TimeDelta time,
base::OnceClosure restart_completed_cb) {
DVLOG(2) << __func__ << " stream=" << stream << " time=" << time.InSecondsF();
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(video_renderer_);
DCHECK_EQ(stream, current_video_stream_);
DCHECK(state_ == STATE_PLAYING || state_ == STATE_FLUSHED ||
@@ -695,7 +695,7 @@
}
void RendererImpl::OnStatisticsUpdate(const PipelineStatistics& stats) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnStatisticsUpdate(stats);
}
@@ -711,7 +711,7 @@
DVLOG(1) << __func__ << " " << type_string << " "
<< BufferingStateToString(*buffering_state) << " -> "
<< BufferingStateToString(new_buffering_state, reason);
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
TRACE_EVENT2("media", "RendererImpl::OnBufferingStateChange", "type",
type_string, "state",
BufferingStateToString(new_buffering_state, reason));
@@ -793,7 +793,7 @@
}
bool RendererImpl::WaitingForEnoughData() const {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (state_ != STATE_PLAYING)
return false;
if (audio_renderer_ && audio_buffering_state_ != BUFFERING_HAVE_ENOUGH)
@@ -805,7 +805,7 @@
void RendererImpl::PausePlayback() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
TRACE_EVENT0("media", "RendererImpl::PausePlayback");
switch (state_) {
@@ -843,7 +843,7 @@
void RendererImpl::StartPlayback() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(state_, STATE_PLAYING);
DCHECK(!WaitingForEnoughData());
TRACE_EVENT0("media", "RendererImpl::StartPlayback");
@@ -862,7 +862,7 @@
void RendererImpl::OnRendererEnded(DemuxerStream::Type type) {
const auto* type_string = DemuxerStream::GetTypeName(type);
DVLOG(1) << __func__ << ": " << type_string;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK((type == DemuxerStream::AUDIO) || (type == DemuxerStream::VIDEO));
TRACE_EVENT1("media", "RendererImpl::OnRendererEnded", "type", type_string);
@@ -883,7 +883,7 @@
}
bool RendererImpl::PlaybackHasEnded() const {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (audio_renderer_ && !audio_ended_)
return false;
@@ -896,7 +896,7 @@
void RendererImpl::RunEndedCallbackIfNeeded() {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (!PlaybackHasEnded())
return;
@@ -913,7 +913,7 @@
void RendererImpl::OnError(PipelineStatus error) {
DVLOG(1) << __func__ << "(" << error << ")";
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(error != PIPELINE_OK) << "PIPELINE_OK isn't an error!";
TRACE_EVENT1("media", "RendererImpl::OnError", "error",
PipelineStatusToString(error));
@@ -940,32 +940,32 @@
}
void RendererImpl::OnWaiting(WaitingReason reason) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnWaiting(reason);
}
void RendererImpl::OnAudioConfigChange(const AudioDecoderConfig& config) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnAudioConfigChange(config);
}
void RendererImpl::OnVideoConfigChange(const VideoDecoderConfig& config) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnVideoConfigChange(config);
}
void RendererImpl::OnVideoNaturalSizeChange(const gfx::Size& size) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnVideoNaturalSizeChange(size);
}
void RendererImpl::OnVideoOpacityChange(bool opaque) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnVideoOpacityChange(opaque);
}
void RendererImpl::OnVideoFrameRateChange(absl::optional<int> fps) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnVideoFrameRateChange(fps);
}
@@ -983,7 +983,7 @@
void RendererImpl::OnSelectedVideoTracksChanged(
const std::vector<DemuxerStream*>& enabled_tracks,
base::OnceClosure change_completed_cb) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
TRACE_EVENT0("media", "RendererImpl::OnSelectedVideoTracksChanged");
DCHECK_LT(enabled_tracks.size(), 2u);
@@ -1016,7 +1016,7 @@
void RendererImpl::OnEnabledAudioTracksChanged(
const std::vector<DemuxerStream*>& enabled_tracks,
base::OnceClosure change_completed_cb) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
TRACE_EVENT0("media", "RendererImpl::OnEnabledAudioTracksChanged");
DCHECK_LT(enabled_tracks.size(), 2u);
diff --git a/media/renderers/renderer_impl.h b/media/renderers/renderer_impl.h
index 2f23bd8..5b4a573b 100644
--- a/media/renderers/renderer_impl.h
+++ b/media/renderers/renderer_impl.h
@@ -13,6 +13,7 @@
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "base/synchronization/lock.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/time/clock.h"
#include "base/time/default_tick_clock.h"
#include "base/time/time.h"
@@ -28,10 +29,6 @@
#include "media/base/waiting.h"
#include "ui/gfx/geometry/size.h"
-namespace base {
-class SingleThreadTaskRunner;
-}
-
namespace media {
class AudioRenderer;
@@ -46,7 +43,7 @@
// provided. All methods except for GetMediaTime() run on the |task_runner|.
// GetMediaTime() runs on the render main thread because it's part of JS sync
// API.
- RendererImpl(const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ RendererImpl(const scoped_refptr<base::SequencedTaskRunner>& task_runner,
std::unique_ptr<AudioRenderer> audio_renderer,
std::unique_ptr<VideoRenderer> video_renderer);
@@ -213,7 +210,7 @@
State state_;
// Task runner used to execute pipeline tasks.
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> task_runner_;
raw_ptr<MediaResource> media_resource_;
raw_ptr<RendererClient> client_;
diff --git a/media/renderers/video_renderer_impl.cc b/media/renderers/video_renderer_impl.cc
index a82fa782..4a0b32e 100644
--- a/media/renderers/video_renderer_impl.cc
+++ b/media/renderers/video_renderer_impl.cc
@@ -48,7 +48,7 @@
} // namespace
VideoRendererImpl::VideoRendererImpl(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
VideoRendererSink* sink,
const CreateVideoDecodersCB& create_video_decoders_cb,
bool drop_frames,
@@ -82,7 +82,7 @@
}
VideoRendererImpl::~VideoRendererImpl() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (init_cb_)
FinishInitialization(PIPELINE_ERROR_ABORT);
@@ -96,7 +96,7 @@
void VideoRendererImpl::Flush(base::OnceClosure callback) {
DVLOG(1) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
if (sink_started_)
StopSink();
@@ -143,7 +143,7 @@
void VideoRendererImpl::StartPlayingFrom(base::TimeDelta timestamp) {
DVLOG(1) << __func__ << "(" << timestamp.InMicroseconds() << ")";
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
base::AutoLock auto_lock(lock_);
DCHECK_EQ(state_, kFlushed);
DCHECK(!pending_read_);
@@ -163,7 +163,7 @@
RendererClient* client,
const TimeSource::WallClockTimeCB& wall_clock_time_cb,
PipelineStatusCallback init_cb) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
TRACE_EVENT_NESTABLE_ASYNC_BEGIN0("media", "VideoRendererImpl::Initialize",
TRACE_ID_LOCAL(this));
@@ -293,7 +293,7 @@
}
void VideoRendererImpl::OnVideoDecoderStreamInitialized(bool success) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
base::AutoLock auto_lock(lock_);
DCHECK_EQ(state_, kInitializing);
@@ -331,12 +331,12 @@
}
void VideoRendererImpl::OnPlaybackError(PipelineStatus error) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnError(error);
}
void VideoRendererImpl::OnPlaybackEnded() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
{
// Send one last stats update so things like memory usage are correct.
base::AutoLock auto_lock(lock_);
@@ -347,12 +347,12 @@
}
void VideoRendererImpl::OnStatisticsUpdate(const PipelineStatistics& stats) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnStatisticsUpdate(stats);
}
void VideoRendererImpl::OnBufferingStateChange(BufferingState buffering_state) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// "Underflow" is only possible when playing. This avoids noise like blaming
// the decoder for an "underflow" that is really just a seek.
@@ -371,12 +371,12 @@
}
void VideoRendererImpl::OnWaiting(WaitingReason reason) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnWaiting(reason);
}
void VideoRendererImpl::OnConfigChange(const VideoDecoderConfig& config) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(config.IsValidConfig());
// RendererClient only cares to know about config changes that differ from
@@ -388,7 +388,7 @@
}
void VideoRendererImpl::OnFallback(PipelineStatus status) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
client_->OnFallback(std::move(status).AddHere());
}
@@ -398,7 +398,7 @@
}
void VideoRendererImpl::OnTimeProgressing() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// WARNING: Do not attempt to use |lock_| here as StartSink() may cause a
// reentrant call.
@@ -424,7 +424,7 @@
}
void VideoRendererImpl::OnTimeStopped() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// WARNING: Do not attempt to use |lock_| here as StopSink() may cause a
// reentrant call.
@@ -564,7 +564,7 @@
}
void VideoRendererImpl::FrameReady(VideoDecoderStream::ReadResult result) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
base::AutoLock auto_lock(lock_);
DCHECK_EQ(state_, kPlaying);
CHECK(pending_read_);
@@ -728,7 +728,7 @@
void VideoRendererImpl::TransitionToHaveEnough_Locked() {
DVLOG(3) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_EQ(buffering_state_, BUFFERING_HAVE_NOTHING);
lock_.AssertAcquired();
@@ -740,7 +740,7 @@
void VideoRendererImpl::TransitionToHaveNothing() {
DVLOG(3) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
base::AutoLock auto_lock(lock_);
TransitionToHaveNothing_Locked();
@@ -748,7 +748,7 @@
void VideoRendererImpl::TransitionToHaveNothing_Locked() {
DVLOG(3) << __func__;
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
lock_.AssertAcquired();
if (buffering_state_ != BUFFERING_HAVE_ENOUGH || HaveEnoughData_Locked())
@@ -761,7 +761,7 @@
}
void VideoRendererImpl::AddReadyFrame_Locked(scoped_refptr<VideoFrame> frame) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
lock_.AssertAcquired();
DCHECK(!frame->metadata().end_of_stream);
@@ -774,7 +774,7 @@
}
void VideoRendererImpl::AttemptRead_Locked() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
lock_.AssertAcquired();
if (pending_read_ || received_end_of_stream_)
@@ -801,7 +801,7 @@
void VideoRendererImpl::OnVideoDecoderStreamResetDone() {
// We don't need to acquire the |lock_| here, because we can only get here
// when Flush is in progress, so rendering and video sink must be stopped.
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(!sink_started_);
DCHECK_EQ(kFlushing, state_);
DCHECK(!received_end_of_stream_);
@@ -813,7 +813,7 @@
}
void VideoRendererImpl::UpdateStats_Locked(bool force_update) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
lock_.AssertAcquired();
// No need to check for `stats_.video_frames_decoded_power_efficient` because
@@ -841,7 +841,7 @@
}
void VideoRendererImpl::ReportFrameRateIfNeeded_Locked() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
lock_.AssertAcquired();
absl::optional<int> current_fps = fps_estimator_.ComputeFPS();
@@ -860,7 +860,7 @@
}
bool VideoRendererImpl::HaveReachedBufferingCap(size_t buffering_cap) const {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// When the display rate is less than the frame rate, the effective frames
// queued may be much smaller than the actual number of frames queued. Here
@@ -870,7 +870,7 @@
}
void VideoRendererImpl::StartSink() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK_GT(algorithm_->frames_queued(), 0u);
sink_started_ = true;
was_background_rendering_ = false;
@@ -878,7 +878,7 @@
}
void VideoRendererImpl::StopSink() {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
sink_->Stop();
algorithm_->set_time_stopped();
sink_started_ = false;
@@ -1016,7 +1016,7 @@
void VideoRendererImpl::CheckForMetadataChanges(VideoPixelFormat pixel_format,
const gfx::Size& natural_size) {
- DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK(task_runner_->RunsTasksInCurrentSequence());
// Notify client of size and opacity changes if this is the first frame
// or if those have changed from the last frame.
diff --git a/media/renderers/video_renderer_impl.h b/media/renderers/video_renderer_impl.h
index 7ef5004..d76c449 100644
--- a/media/renderers/video_renderer_impl.h
+++ b/media/renderers/video_renderer_impl.h
@@ -15,6 +15,7 @@
#include "base/memory/weak_ptr.h"
#include "base/synchronization/condition_variable.h"
#include "base/synchronization/lock.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "media/base/decryptor.h"
@@ -35,7 +36,6 @@
#include "media/video/gpu_memory_buffer_video_frame_pool.h"
namespace base {
-class SingleThreadTaskRunner;
class TickClock;
} // namespace base
@@ -56,7 +56,7 @@
//
// Setting |drop_frames_| to true causes the renderer to drop expired frames.
VideoRendererImpl(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
VideoRendererSink* sink,
const CreateVideoDecodersCB& create_video_decoders_cb,
bool drop_frames,
@@ -209,7 +209,7 @@
void AttemptReadAndCheckForMetadataChanges(VideoPixelFormat pixel_format,
const gfx::Size& natural_size);
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> task_runner_;
// Sink which calls into VideoRendererImpl via Render() for video frames. Do
// not call any methods on the sink while |lock_| is held or the two threads
diff --git a/media/video/gpu_memory_buffer_video_frame_pool.cc b/media/video/gpu_memory_buffer_video_frame_pool.cc
index 098650d..b8506c4f 100644
--- a/media/video/gpu_memory_buffer_video_frame_pool.cc
+++ b/media/video/gpu_memory_buffer_video_frame_pool.cc
@@ -28,6 +28,7 @@
#include "base/ranges/algorithm.h"
#include "base/strings/stringprintf.h"
#include "base/sys_byteorder.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/time/default_tick_clock.h"
#include "base/time/time.h"
#include "base/trace_event/memory_dump_manager.h"
@@ -79,7 +80,7 @@
// video frame's planes.
// |gpu_factories| is an interface to GPU related operation and can be
// null if a GL context is not available.
- PoolImpl(const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ PoolImpl(const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
GpuVideoAcceleratorFactories* const gpu_factories)
: media_task_runner_(media_task_runner),
@@ -249,7 +250,7 @@
FrameResources* frame_resources);
// Task runner associated to the GL context provided by |gpu_factories_|.
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
// Task runner used to asynchronously copy planes.
const scoped_refptr<base::TaskRunner> worker_task_runner_;
@@ -718,7 +719,7 @@
void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHardwareFrame(
scoped_refptr<VideoFrame> video_frame,
FrameReadyCB frame_ready_cb) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// Lazily initialize |output_format_| since VideoFrameOutputFormat() has to be
// called on the media_thread while this object might be instantiated on any.
const VideoPixelFormat pixel_format = video_frame->format();
@@ -855,7 +856,7 @@
}
void GpuMemoryBufferVideoFramePool::PoolImpl::Abort() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// Abort any pending copy requests. If one is already in flight, we can't do
// anything about it.
if (frame_copy_requests_.size() <= 1u)
@@ -890,7 +891,7 @@
}
void GpuMemoryBufferVideoFramePool::PoolImpl::StartCopy() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
DCHECK(!frame_copy_requests_.empty());
while (!frame_copy_requests_.empty()) {
@@ -1088,7 +1089,7 @@
bool copy_failed,
scoped_refptr<VideoFrame> video_frame,
FrameResources* frame_resources) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
if (copy_failed) {
// Drop the resources if there was an error with them. If we're not in
// shutdown we also need to remove the pool entry for them.
@@ -1135,7 +1136,7 @@
const gfx::ColorSpace& color_space,
base::TimeDelta timestamp,
bool allow_i420_overlay) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
gpu::SharedImageInterface* sii = gpu_factories_->SharedImageInterface();
if (!sii) {
frame_resources->MarkUnused(tick_clock_->NowTicks());
@@ -1275,7 +1276,7 @@
}
void GpuMemoryBufferVideoFramePool::PoolImpl::Shutdown() {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
// Clients don't care about copies once shutdown has started, so abort them.
Abort();
@@ -1306,7 +1307,7 @@
const gfx::Size& size,
GpuVideoAcceleratorFactories::OutputFormat format,
gfx::BufferUsage usage) {
- DCHECK(media_task_runner_->BelongsToCurrentThread());
+ DCHECK(media_task_runner_->RunsTasksInCurrentSequence());
auto it = resources_pool_.begin();
while (it != resources_pool_.end()) {
@@ -1379,7 +1380,7 @@
void GpuMemoryBufferVideoFramePool::PoolImpl::MailboxHoldersReleased(
FrameResources* frame_resources,
const gpu::SyncToken& release_sync_token) {
- if (!media_task_runner_->BelongsToCurrentThread()) {
+ if (!media_task_runner_->RunsTasksInCurrentSequence()) {
media_task_runner_->PostTask(
FROM_HERE, base::BindOnce(&PoolImpl::MailboxHoldersReleased, this,
frame_resources, release_sync_token));
@@ -1414,13 +1415,15 @@
GpuMemoryBufferVideoFramePool::GpuMemoryBufferVideoFramePool() = default;
GpuMemoryBufferVideoFramePool::GpuMemoryBufferVideoFramePool(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
GpuVideoAcceleratorFactories* gpu_factories)
: pool_impl_(
new PoolImpl(media_task_runner, worker_task_runner, gpu_factories)) {
- base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
- pool_impl_.get(), "GpuMemoryBufferVideoFramePool", media_task_runner);
+ base::trace_event::MemoryDumpManager::GetInstance()
+ ->RegisterDumpProviderWithSequencedTaskRunner(
+ pool_impl_.get(), "GpuMemoryBufferVideoFramePool", media_task_runner,
+ base::trace_event::MemoryDumpProvider::Options());
}
GpuMemoryBufferVideoFramePool::~GpuMemoryBufferVideoFramePool() {
diff --git a/media/video/gpu_memory_buffer_video_frame_pool.h b/media/video/gpu_memory_buffer_video_frame_pool.h
index d7bfd31..c6378dd0 100644
--- a/media/video/gpu_memory_buffer_video_frame_pool.h
+++ b/media/video/gpu_memory_buffer_video_frame_pool.h
@@ -6,11 +6,11 @@
#define MEDIA_VIDEO_GPU_MEMORY_BUFFER_VIDEO_FRAME_POOL_H_
#include "base/memory/ref_counted.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/task_runner.h"
#include "media/base/video_frame.h"
namespace base {
-class SingleThreadTaskRunner;
class TickClock;
}
@@ -34,7 +34,7 @@
public:
GpuMemoryBufferVideoFramePool();
GpuMemoryBufferVideoFramePool(
- const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
GpuVideoAcceleratorFactories* gpu_factories);
diff --git a/services/viz/public/cpp/gpu/context_provider_command_buffer.cc b/services/viz/public/cpp/gpu/context_provider_command_buffer.cc
index e26a4dd..f81d3989 100644
--- a/services/viz/public/cpp/gpu/context_provider_command_buffer.cc
+++ b/services/viz/public/cpp/gpu/context_provider_command_buffer.cc
@@ -19,8 +19,10 @@
#include "base/no_destructor.h"
#include "base/observer_list.h"
#include "base/strings/stringprintf.h"
+#include "base/threading/sequenced_task_runner_handle.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/trace_event/memory_dump_manager.h"
+#include "base/trace_event/memory_dump_provider.h"
#include "build/build_config.h"
#include "components/viz/common/gpu/context_cache_controller.h"
#include "gpu/command_buffer/client/gles2_cmd_helper.h"
@@ -84,11 +86,11 @@
buffer_mapper_(buffer_mapper) {
DCHECK(main_thread_checker_.CalledOnValidThread());
DCHECK(channel_);
- context_thread_checker_.DetachFromThread();
+ context_sequence_checker_.DetachFromSequence();
}
ContextProviderCommandBuffer::~ContextProviderCommandBuffer() {
- DCHECK(context_thread_checker_.CalledOnValidThread());
+ DCHECK(context_sequence_checker_.CalledOnValidSequence());
if (bind_tried_ && bind_result_ == gpu::ContextResult::kSuccess) {
// Clear the lock to avoid DCHECKs that the lock is being held during
@@ -125,8 +127,9 @@
}
gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() {
+ // TODO(crbug.com/1144329): rename method to indicate sequence affinity.
// This is called on the thread the context will be used.
- DCHECK(context_thread_checker_.CalledOnValidThread());
+ DCHECK(context_sequence_checker_.CalledOnValidSequence());
if (bind_tried_)
return bind_result_;
@@ -135,11 +138,9 @@
// Any early-out should set this to a failure code and return it.
bind_result_ = gpu::ContextResult::kSuccess;
- scoped_refptr<base::SingleThreadTaskRunner> task_runner =
- default_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> task_runner = default_task_runner_;
if (!task_runner)
- task_runner = base::ThreadTaskRunnerHandle::Get();
-
+ task_runner = base::SequencedTaskRunnerHandle::Get();
// This command buffer is a client-side proxy to the command buffer in the
// GPU process.
command_buffer_ = std::make_unique<gpu::CommandBufferProxyImpl>(
@@ -337,8 +338,10 @@
shared_image_interface_ = channel_->CreateClientSharedImageInterface();
DCHECK(shared_image_interface_);
- base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
- this, "ContextProviderCommandBuffer", std::move(task_runner));
+ base::trace_event::MemoryDumpManager::GetInstance()
+ ->RegisterDumpProviderWithSequencedTaskRunner(
+ this, "ContextProviderCommandBuffer", std::move(task_runner),
+ base::trace_event::MemoryDumpProvider::Options());
return bind_result_;
}
@@ -531,10 +534,10 @@
helper_->OnMemoryDump(args, pmd);
if (gr_context_) {
- context_thread_checker_.DetachFromThread();
+ context_sequence_checker_.DetachFromSequence();
gpu::raster::DumpGrMemoryStatistics(gr_context_->get(), pmd,
gles2_impl_->ShareGroupTracingGUID());
- context_thread_checker_.DetachFromThread();
+ context_sequence_checker_.DetachFromSequence();
}
return true;
}
diff --git a/services/viz/public/cpp/gpu/context_provider_command_buffer.h b/services/viz/public/cpp/gpu/context_provider_command_buffer.h
index 22b9d09..0b888ac 100644
--- a/services/viz/public/cpp/gpu/context_provider_command_buffer.h
+++ b/services/viz/public/cpp/gpu/context_provider_command_buffer.h
@@ -15,6 +15,7 @@
#include "base/memory/shared_memory_mapper.h"
#include "base/observer_list.h"
#include "base/synchronization/lock.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "base/threading/thread_checker.h"
#include "base/trace_event/memory_dump_provider.h"
@@ -128,13 +129,13 @@
if (support_locking_) {
context_lock_.AssertAcquired();
} else {
- DCHECK(context_thread_checker_.CalledOnValidThread());
+ DCHECK(context_sequence_checker_.CalledOnValidSequence());
}
#endif
}
base::ThreadChecker main_thread_checker_;
- base::ThreadChecker context_thread_checker_;
+ base::SequenceChecker context_sequence_checker_;
bool bind_tried_ = false;
gpu::ContextResult bind_result_;
@@ -153,7 +154,7 @@
scoped_refptr<gpu::GpuChannelHost> channel_;
raw_ptr<gpu::GpuMemoryBufferManager, DanglingUntriaged>
gpu_memory_buffer_manager_;
- scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> default_task_runner_;
// |shared_image_interface_| must be torn down after |command_buffer_| to
// ensure any dependent commands in the command stream are flushed before the
diff --git a/third_party/blink/public/platform/media/web_media_player_builder.h b/third_party/blink/public/platform/media/web_media_player_builder.h
index bd5247c..a59f68d 100644
--- a/third_party/blink/public/platform/media/web_media_player_builder.h
+++ b/third_party/blink/public/platform/media/web_media_player_builder.h
@@ -22,6 +22,7 @@
namespace base {
class SingleThreadTaskRunner;
+class SequencedTaskRunner;
class TaskRunner;
} // namespace base
@@ -78,7 +79,7 @@
media::MediaPlayerLoggingID player_id,
DeferLoadCB defer_load_cb,
scoped_refptr<media::SwitchableAudioRendererSink> audio_renderer_sink,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::TaskRunner> worker_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner,
scoped_refptr<base::SingleThreadTaskRunner>
diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h
index bb829520..13ddc13 100644
--- a/third_party/blink/public/platform/platform.h
+++ b/third_party/blink/public/platform/platform.h
@@ -38,6 +38,7 @@
#include "base/callback.h"
#include "base/memory/scoped_refptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/threading/platform_thread.h"
#include "base/time/time.h"
#include "build/build_config.h"
@@ -345,7 +346,7 @@
// Returns the task runner of the media thread.
// This method should only be called on the main thread, or it crashes.
- virtual scoped_refptr<base::SingleThreadTaskRunner> MediaThreadTaskRunner() {
+ virtual scoped_refptr<base::SequencedTaskRunner> MediaThreadTaskRunner() {
return nullptr;
}
diff --git a/third_party/blink/public/web/modules/mediastream/DEPS b/third_party/blink/public/web/modules/mediastream/DEPS
index 9238d9d4..a675dac 100644
--- a/third_party/blink/public/web/modules/mediastream/DEPS
+++ b/third_party/blink/public/web/modules/mediastream/DEPS
@@ -4,6 +4,7 @@
"+base/logging.h",
"+base/memory/weak_ptr.h",
"+base/task/single_thread_task_runner.h",
+ "+base/task/sequenced_task_runner.h",
"+base/synchronization/lock.h",
"+base/token.h",
"+base/threading/thread_checker.h",
diff --git a/third_party/blink/public/web/modules/mediastream/webmediaplayer_ms.h b/third_party/blink/public/web/modules/mediastream/webmediaplayer_ms.h
index f8c640d..a71efae 100644
--- a/third_party/blink/public/web/modules/mediastream/webmediaplayer_ms.h
+++ b/third_party/blink/public/web/modules/mediastream/webmediaplayer_ms.h
@@ -10,6 +10,7 @@
#include "base/memory/weak_ptr.h"
#include "base/synchronization/lock.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "base/threading/thread_checker.h"
#include "base/time/time.h"
@@ -82,7 +83,7 @@
scoped_refptr<base::SingleThreadTaskRunner> main_render_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::TaskRunner> worker_task_runner,
media::GpuVideoAcceleratorFactories* gpu_factories,
const WebString& sink_id,
@@ -305,7 +306,7 @@
const scoped_refptr<base::SingleThreadTaskRunner> main_render_task_runner_;
const scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
const scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_;
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
const scoped_refptr<base::TaskRunner> worker_task_runner_;
media::GpuVideoAcceleratorFactories* gpu_factories_;
diff --git a/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms.cc b/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms.cc
index 01b3e059..2754276 100644
--- a/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms.cc
+++ b/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms.cc
@@ -13,6 +13,7 @@
#include "base/bind.h"
#include "base/callback.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "build/build_config.h"
@@ -158,7 +159,7 @@
void(scoped_refptr<media::VideoFrame> frame, bool is_copy)>;
FrameDeliverer(const base::WeakPtr<WebMediaPlayerMS>& player,
RepaintCB enqueue_frame_cb,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::TaskRunner> worker_task_runner,
media::GpuVideoAcceleratorFactories* gpu_factories)
: main_task_runner_(base::ThreadTaskRunnerHandle::Get()),
@@ -325,7 +326,7 @@
// Pool of GpuMemoryBuffers and resources used to create hardware frames.
std::unique_ptr<media::GpuMemoryBufferVideoFramePool> gpu_memory_buffer_pool_;
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
const scoped_refptr<base::TaskRunner> worker_task_runner_;
media::GpuVideoAcceleratorFactories* const gpu_factories_;
@@ -345,7 +346,7 @@
scoped_refptr<base::SingleThreadTaskRunner> main_render_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::TaskRunner> worker_task_runner,
media::GpuVideoAcceleratorFactories* gpu_factories,
const WebString& sink_id,
diff --git a/third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.cc b/third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.cc
index cea7063..a608580 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.cc
@@ -5,6 +5,7 @@
#include "third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.h"
#include "base/synchronization/waitable_event.h"
+#include "base/task/sequenced_task_runner.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "media/base/wait_and_replace_sync_token_client.h"
@@ -39,7 +40,7 @@
#endif
void GetMediaTaskRunnerAndGpuFactoriesOnMainThread(
- scoped_refptr<base::SingleThreadTaskRunner>* media_task_runner_out,
+ scoped_refptr<base::SequencedTaskRunner>* media_task_runner_out,
media::GpuVideoAcceleratorFactories** gpu_factories_out,
base::WaitableEvent* waitable_event) {
DCHECK(IsMainThread());
diff --git a/third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.h b/third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.h
index 94474aa..0a0e8e5b 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.h
+++ b/third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.h
@@ -64,7 +64,7 @@
std::unique_ptr<media::GpuMemoryBufferVideoFramePool> gpu_memory_buffer_pool_;
scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
scoped_refptr<media::VideoFrame> hardware_video_frame_;
};
diff --git a/third_party/blink/renderer/platform/media/web_media_player_builder.cc b/third_party/blink/renderer/platform/media/web_media_player_builder.cc
index 9b3cd2e..7499445b 100644
--- a/third_party/blink/renderer/platform/media/web_media_player_builder.cc
+++ b/third_party/blink/renderer/platform/media/web_media_player_builder.cc
@@ -41,7 +41,7 @@
media::MediaPlayerLoggingID player_id,
DeferLoadCB defer_load_cb,
scoped_refptr<media::SwitchableAudioRendererSink> audio_renderer_sink,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::TaskRunner> worker_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner,
scoped_refptr<base::SingleThreadTaskRunner>
diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc b/third_party/blink/renderer/platform/media/web_media_player_impl.cc
index 9961397..8287f50 100644
--- a/third_party/blink/renderer/platform/media/web_media_player_impl.cc
+++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc
@@ -25,6 +25,7 @@
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "base/task/task_runner_util.h"
#include "base/task/thread_pool.h"
@@ -400,7 +401,7 @@
media::MediaPlayerLoggingID player_id,
WebMediaPlayerBuilder::DeferLoadCB defer_load_cb,
scoped_refptr<media::SwitchableAudioRendererSink> audio_renderer_sink,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::TaskRunner> worker_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner,
scoped_refptr<base::SingleThreadTaskRunner>
diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.h b/third_party/blink/renderer/platform/media/web_media_player_impl.h
index 31b94dd..86e80ef59 100644
--- a/third_party/blink/renderer/platform/media/web_media_player_impl.h
+++ b/third_party/blink/renderer/platform/media/web_media_player_impl.h
@@ -17,6 +17,7 @@
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
+#include "base/task/sequenced_task_runner.h"
#include "base/threading/thread.h"
#include "base/time/default_tick_clock.h"
#include "base/time/time.h"
@@ -125,7 +126,7 @@
media::MediaPlayerLoggingID player_id,
WebMediaPlayerBuilder::DeferLoadCB defer_load_cb,
scoped_refptr<media::SwitchableAudioRendererSink> audio_renderer_sink,
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
+ scoped_refptr<base::SequencedTaskRunner> media_task_runner,
scoped_refptr<base::TaskRunner> worker_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner,
scoped_refptr<base::SingleThreadTaskRunner>
@@ -689,7 +690,7 @@
// Task runner for posting tasks on Chrome's main thread. Also used
// for DCHECKs so methods calls won't execute in the wrong thread.
const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ const scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
const scoped_refptr<base::TaskRunner> worker_task_runner_;
// This is the ID that is used within the internals of the media element