Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(634)

Unified Diff: media/gpu/vaapi_video_decode_accelerator.cc

Issue 2076423004: Remove calls to MessageLoop::current() in media. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CR Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/gpu/vaapi_video_decode_accelerator.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/gpu/vaapi_video_decode_accelerator.cc
diff --git a/media/gpu/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi_video_decode_accelerator.cc
index c354accae2368e1d5ff40b5e15ba2412340737ab..3d162aed0867cbec8a1f1143dc234cb7a4f2bed2 100644
--- a/media/gpu/vaapi_video_decode_accelerator.cc
+++ b/media/gpu/vaapi_video_decode_accelerator.cc
@@ -16,6 +16,7 @@
#include "base/stl_util.h"
#include "base/strings/string_util.h"
#include "base/synchronization/waitable_event.h"
+#include "base/threading/thread_task_runner_handle.h"
#include "base/trace_event/trace_event.h"
#include "gpu/ipc/service/gpu_channel.h"
#include "media/base/bind_to_current_loop.h"
@@ -266,16 +267,16 @@ VaapiVideoDecodeAccelerator::InputBuffer::InputBuffer() : id(0) {}
VaapiVideoDecodeAccelerator::InputBuffer::~InputBuffer() {}
void VaapiVideoDecodeAccelerator::NotifyError(Error error) {
- if (message_loop_ != base::MessageLoop::current()) {
+ if (!task_runner_->BelongsToCurrentThread()) {
DCHECK(decoder_thread_task_runner_->BelongsToCurrentThread());
- message_loop_->PostTask(
- FROM_HERE, base::Bind(&VaapiVideoDecodeAccelerator::NotifyError,
- weak_this_, error));
+ task_runner_->PostTask(FROM_HERE,
+ base::Bind(&VaapiVideoDecodeAccelerator::NotifyError,
+ weak_this_, error));
return;
}
// Post Cleanup() as a task so we don't recursively acquire lock_.
- message_loop_->PostTask(
+ task_runner_->PostTask(
FROM_HERE, base::Bind(&VaapiVideoDecodeAccelerator::Cleanup, weak_this_));
LOG(ERROR) << "Notifying of error " << error;
@@ -302,7 +303,7 @@ VaapiVideoDecodeAccelerator::VaapiVideoDecodeAccelerator(
: state_(kUninitialized),
input_ready_(&lock_),
surfaces_available_(&lock_),
- message_loop_(base::MessageLoop::current()),
+ task_runner_(base::ThreadTaskRunnerHandle::Get()),
decoder_thread_("VaapiDecoderThread"),
num_frames_at_client_(0),
num_stream_bufs_at_decoder_(0),
@@ -318,12 +319,12 @@ VaapiVideoDecodeAccelerator::VaapiVideoDecodeAccelerator(
}
VaapiVideoDecodeAccelerator::~VaapiVideoDecodeAccelerator() {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
}
bool VaapiVideoDecodeAccelerator::Initialize(const Config& config,
Client* client) {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
if (config.is_encrypted) {
NOTREACHED() << "Encrypted streams are not supported for this VDA";
@@ -393,7 +394,7 @@ void VaapiVideoDecodeAccelerator::OutputPicture(
const scoped_refptr<VASurface>& va_surface,
int32_t input_id,
VaapiPicture* picture) {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
int32_t output_id = picture->picture_buffer_id();
@@ -421,7 +422,7 @@ void VaapiVideoDecodeAccelerator::OutputPicture(
}
void VaapiVideoDecodeAccelerator::TryOutputSurface() {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
// Handle Destroy() arriving while pictures are queued for output.
if (!client_)
@@ -445,7 +446,7 @@ void VaapiVideoDecodeAccelerator::TryOutputSurface() {
void VaapiVideoDecodeAccelerator::MapAndQueueNewInputBuffer(
const BitstreamBuffer& bitstream_buffer) {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
TRACE_EVENT1("Video Decoder", "MapAndQueueNewInputBuffer", "input_id",
bitstream_buffer.id());
@@ -532,7 +533,7 @@ void VaapiVideoDecodeAccelerator::ReturnCurrInputBuffer_Locked() {
int32_t id = curr_input_buffer_->id;
curr_input_buffer_.reset();
DVLOG(4) << "End of input buffer " << id;
- message_loop_->PostTask(
+ task_runner_->PostTask(
FROM_HERE, base::Bind(&Client::NotifyEndOfBitstreamBuffer, client_, id));
--num_stream_bufs_at_decoder_;
@@ -587,7 +588,7 @@ void VaapiVideoDecodeAccelerator::DecodeTask() {
switch (res) {
case AcceleratedVideoDecoder::kAllocateNewSurfaces:
DVLOG(1) << "Decoder requesting a new set of surfaces";
- message_loop_->PostTask(
+ task_runner_->PostTask(
FROM_HERE,
base::Bind(&VaapiVideoDecodeAccelerator::InitiateSurfaceSetChange,
weak_this_, decoder_->GetRequiredNumOfPictures(),
@@ -617,7 +618,7 @@ void VaapiVideoDecodeAccelerator::DecodeTask() {
void VaapiVideoDecodeAccelerator::InitiateSurfaceSetChange(size_t num_pics,
gfx::Size size) {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
DCHECK(!awaiting_va_surfaces_recycle_);
// At this point decoder has stopped running and has already posted onto our
@@ -648,7 +649,7 @@ static VideoPixelFormat BufferFormatToVideoPixelFormat(
}
void VaapiVideoDecodeAccelerator::TryFinishSurfaceSetChange() {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
if (!awaiting_va_surfaces_recycle_)
return;
@@ -662,7 +663,7 @@ void VaapiVideoDecodeAccelerator::TryFinishSurfaceSetChange() {
// as the result, but not all have executed yet. Post ourselves after them
// to let them release surfaces.
DVLOG(2) << "Awaiting pending output/surface release callbacks to finish";
- message_loop_->PostTask(
+ task_runner_->PostTask(
FROM_HERE,
base::Bind(&VaapiVideoDecodeAccelerator::TryFinishSurfaceSetChange,
weak_this_));
@@ -688,7 +689,7 @@ void VaapiVideoDecodeAccelerator::TryFinishSurfaceSetChange() {
VideoPixelFormat format =
BufferFormatToVideoPixelFormat(kOutputPictureFormat);
- message_loop_->PostTask(
+ task_runner_->PostTask(
FROM_HERE, base::Bind(&Client::ProvidePictureBuffers, client_,
requested_num_pics_, format, 1, requested_pic_size_,
VaapiPicture::GetGLTextureTarget()));
@@ -696,7 +697,7 @@ void VaapiVideoDecodeAccelerator::TryFinishSurfaceSetChange() {
void VaapiVideoDecodeAccelerator::Decode(
const BitstreamBuffer& bitstream_buffer) {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
TRACE_EVENT1("Video Decoder", "VAVDA::Decode", "Buffer id",
bitstream_buffer.id());
@@ -739,7 +740,7 @@ void VaapiVideoDecodeAccelerator::Decode(
void VaapiVideoDecodeAccelerator::RecycleVASurfaceID(
VASurfaceID va_surface_id) {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
base::AutoLock auto_lock(lock_);
available_va_surfaces_.push_back(va_surface_id);
@@ -748,7 +749,7 @@ void VaapiVideoDecodeAccelerator::RecycleVASurfaceID(
void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
const std::vector<PictureBuffer>& buffers) {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
base::AutoLock auto_lock(lock_);
DCHECK(pictures_.empty());
@@ -816,7 +817,7 @@ static void CloseGpuMemoryBufferHandle(
void VaapiVideoDecodeAccelerator::ImportBufferForPicture(
int32_t picture_buffer_id,
const gfx::GpuMemoryBufferHandle& gpu_memory_buffer_handle) {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
DVLOG(2) << "Importing picture id: " << picture_buffer_id;
if (output_mode_ != Config::OutputMode::IMPORT) {
@@ -861,7 +862,7 @@ void VaapiVideoDecodeAccelerator::ImportBufferForPicture(
void VaapiVideoDecodeAccelerator::ReusePictureBuffer(
int32_t picture_buffer_id) {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
TRACE_EVENT1("Video Decoder", "VAVDA::ReusePictureBuffer", "Picture id",
picture_buffer_id);
@@ -895,13 +896,13 @@ void VaapiVideoDecodeAccelerator::FlushTask() {
// Put the decoder in idle state, ready to resume.
decoder_->Reset();
- message_loop_->PostTask(
+ task_runner_->PostTask(
FROM_HERE,
base::Bind(&VaapiVideoDecodeAccelerator::FinishFlush, weak_this_));
}
void VaapiVideoDecodeAccelerator::Flush() {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
DVLOG(1) << "Got flush request";
base::AutoLock auto_lock(lock_);
@@ -916,7 +917,7 @@ void VaapiVideoDecodeAccelerator::Flush() {
}
void VaapiVideoDecodeAccelerator::FinishFlush() {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
finish_flush_pending_ = false;
@@ -935,8 +936,8 @@ void VaapiVideoDecodeAccelerator::FinishFlush() {
state_ = kIdle;
- message_loop_->PostTask(FROM_HERE,
- base::Bind(&Client::NotifyFlushDone, client_));
+ task_runner_->PostTask(FROM_HERE,
+ base::Bind(&Client::NotifyFlushDone, client_));
DVLOG(1) << "Flush finished";
}
@@ -957,13 +958,13 @@ void VaapiVideoDecodeAccelerator::ResetTask() {
ReturnCurrInputBuffer_Locked();
// And let client know that we are done with reset.
- message_loop_->PostTask(
+ task_runner_->PostTask(
FROM_HERE,
base::Bind(&VaapiVideoDecodeAccelerator::FinishReset, weak_this_));
}
void VaapiVideoDecodeAccelerator::Reset() {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
DVLOG(1) << "Got reset request";
// This will make any new decode tasks exit early.
@@ -973,7 +974,7 @@ void VaapiVideoDecodeAccelerator::Reset() {
// Drop all remaining input buffers, if present.
while (!input_buffers_.empty()) {
- message_loop_->PostTask(
+ task_runner_->PostTask(
FROM_HERE, base::Bind(&Client::NotifyEndOfBitstreamBuffer, client_,
input_buffers_.front()->id));
input_buffers_.pop();
@@ -988,7 +989,7 @@ void VaapiVideoDecodeAccelerator::Reset() {
}
void VaapiVideoDecodeAccelerator::FinishReset() {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
DVLOG(1) << "FinishReset";
base::AutoLock auto_lock(lock_);
@@ -1005,7 +1006,7 @@ void VaapiVideoDecodeAccelerator::FinishReset() {
// Decoder requested a new surface set while we were waiting for it to
// finish the last DecodeTask, running at the time of Reset().
// Let the surface set change finish first before resetting.
- message_loop_->PostTask(
+ task_runner_->PostTask(
FROM_HERE,
base::Bind(&VaapiVideoDecodeAccelerator::FinishReset, weak_this_));
return;
@@ -1014,8 +1015,8 @@ void VaapiVideoDecodeAccelerator::FinishReset() {
num_stream_bufs_at_decoder_ = 0;
state_ = kIdle;
- message_loop_->PostTask(FROM_HERE,
- base::Bind(&Client::NotifyResetDone, client_));
+ task_runner_->PostTask(FROM_HERE,
+ base::Bind(&Client::NotifyResetDone, client_));
// The client might have given us new buffers via Decode() while we were
// resetting and might be waiting for our move, and not call Decode() anymore
@@ -1034,7 +1035,7 @@ void VaapiVideoDecodeAccelerator::FinishReset() {
}
void VaapiVideoDecodeAccelerator::Cleanup() {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
base::AutoLock auto_lock(lock_);
if (state_ == kUninitialized || state_ == kDestroying)
@@ -1060,7 +1061,7 @@ void VaapiVideoDecodeAccelerator::Cleanup() {
}
void VaapiVideoDecodeAccelerator::Destroy() {
- DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ DCHECK(task_runner_->BelongsToCurrentThread());
Cleanup();
delete this;
}
@@ -1084,8 +1085,8 @@ bool VaapiVideoDecodeAccelerator::DecodeSurface(
void VaapiVideoDecodeAccelerator::SurfaceReady(
const scoped_refptr<VaapiDecodeSurface>& dec_surface) {
- if (message_loop_ != base::MessageLoop::current()) {
- message_loop_->PostTask(
+ if (!task_runner_->BelongsToCurrentThread()) {
+ task_runner_->PostTask(
FROM_HERE, base::Bind(&VaapiVideoDecodeAccelerator::SurfaceReady,
weak_this_, dec_surface));
return;
« no previous file with comments | « media/gpu/vaapi_video_decode_accelerator.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698