Index: content/common/gpu/media/vaapi_video_encode_accelerator.cc |
diff --git a/content/common/gpu/media/vaapi_video_encode_accelerator.cc b/content/common/gpu/media/vaapi_video_encode_accelerator.cc |
index 3ea4f91d58882642f3c1f10e23458c0e54fadac7..cdd03a156fb5194eeef7ed0f4b786315b37dd5c2 100644 |
--- a/content/common/gpu/media/vaapi_video_encode_accelerator.cc |
+++ b/content/common/gpu/media/vaapi_video_encode_accelerator.cc |
@@ -6,7 +6,6 @@ |
#include "base/bind.h" |
#include "base/callback.h" |
-#include "base/message_loop/message_loop_proxy.h" |
#include "base/metrics/histogram.h" |
#include "base/numerics/safe_conversions.h" |
#include "content/common/gpu/media/h264_dpb.h" |
@@ -133,7 +132,7 @@ VaapiVideoEncodeAccelerator::VaapiVideoEncodeAccelerator() |
cpb_size_(0), |
encoding_parameters_changed_(false), |
encoder_thread_("VAVEAEncoderThread"), |
- child_message_loop_proxy_(base::MessageLoopProxy::current()), |
+ child_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
weak_this_ptr_factory_(this) { |
DVLOGF(4); |
weak_this_ = weak_this_ptr_factory_.GetWeakPtr(); |
@@ -147,7 +146,7 @@ VaapiVideoEncodeAccelerator::VaapiVideoEncodeAccelerator() |
VaapiVideoEncodeAccelerator::~VaapiVideoEncodeAccelerator() { |
DVLOGF(4); |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
DCHECK(!encoder_thread_.IsRunning()); |
} |
@@ -157,7 +156,7 @@ bool VaapiVideoEncodeAccelerator::Initialize( |
media::VideoCodecProfile output_profile, |
uint32 initial_bitrate, |
Client* client) { |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
DCHECK(!encoder_thread_.IsRunning()); |
DCHECK_EQ(state_, kUninitialized); |
@@ -207,19 +206,18 @@ bool VaapiVideoEncodeAccelerator::Initialize( |
LOG(ERROR) << "Failed to start encoder thread"; |
return false; |
} |
- encoder_thread_proxy_ = encoder_thread_.message_loop_proxy(); |
+ encoder_thread_task_runner_ = encoder_thread_.task_runner(); |
// Finish the remaining initialization on the encoder thread. |
- encoder_thread_proxy_->PostTask( |
- FROM_HERE, |
- base::Bind(&VaapiVideoEncodeAccelerator::InitializeTask, |
- base::Unretained(this))); |
+ encoder_thread_task_runner_->PostTask( |
+ FROM_HERE, base::Bind(&VaapiVideoEncodeAccelerator::InitializeTask, |
+ base::Unretained(this))); |
return true; |
} |
void VaapiVideoEncodeAccelerator::InitializeTask() { |
- DCHECK(encoder_thread_proxy_->BelongsToCurrentThread()); |
+ DCHECK(encoder_thread_task_runner_->BelongsToCurrentThread()); |
DCHECK_EQ(state_, kUninitialized); |
DVLOGF(4); |
@@ -239,13 +237,10 @@ void VaapiVideoEncodeAccelerator::InitializeTask() { |
UpdatePPS(); |
GeneratePackedPPS(); |
- child_message_loop_proxy_->PostTask( |
+ child_task_runner_->PostTask( |
FROM_HERE, |
- base::Bind(&Client::RequireBitstreamBuffers, |
- client_, |
- kNumInputBuffers, |
- coded_size_, |
- output_buffer_byte_size_)); |
+ base::Bind(&Client::RequireBitstreamBuffers, client_, kNumInputBuffers, |
+ coded_size_, output_buffer_byte_size_)); |
SetState(kEncoding); |
} |
@@ -253,7 +248,7 @@ void VaapiVideoEncodeAccelerator::InitializeTask() { |
void VaapiVideoEncodeAccelerator::RecycleVASurfaceID( |
VASurfaceID va_surface_id) { |
DVLOGF(4) << "va_surface_id: " << va_surface_id; |
- DCHECK(encoder_thread_proxy_->BelongsToCurrentThread()); |
+ DCHECK(encoder_thread_task_runner_->BelongsToCurrentThread()); |
available_va_surface_ids_.push_back(va_surface_id); |
EncodeFrameTask(); |
@@ -525,7 +520,7 @@ bool VaapiVideoEncodeAccelerator::UploadFrame( |
} |
void VaapiVideoEncodeAccelerator::TryToReturnBitstreamBuffer() { |
- DCHECK(encoder_thread_proxy_->BelongsToCurrentThread()); |
+ DCHECK(encoder_thread_task_runner_->BelongsToCurrentThread()); |
if (state_ != kEncoding) |
return; |
@@ -556,12 +551,9 @@ void VaapiVideoEncodeAccelerator::TryToReturnBitstreamBuffer() { |
<< (encode_job->keyframe ? "(keyframe)" : "") |
<< " id: " << buffer->id << " size: " << data_size; |
- child_message_loop_proxy_->PostTask(FROM_HERE, |
- base::Bind(&Client::BitstreamBufferReady, |
- client_, |
- buffer->id, |
- data_size, |
- encode_job->keyframe)); |
+ child_task_runner_->PostTask( |
+ FROM_HERE, base::Bind(&Client::BitstreamBufferReady, client_, buffer->id, |
+ data_size, encode_job->keyframe)); |
} |
void VaapiVideoEncodeAccelerator::Encode( |
@@ -569,14 +561,11 @@ void VaapiVideoEncodeAccelerator::Encode( |
bool force_keyframe) { |
DVLOGF(3) << "Frame timestamp: " << frame->timestamp().InMilliseconds() |
<< " force_keyframe: " << force_keyframe; |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
- encoder_thread_proxy_->PostTask( |
- FROM_HERE, |
- base::Bind(&VaapiVideoEncodeAccelerator::EncodeTask, |
- base::Unretained(this), |
- frame, |
- force_keyframe)); |
+ encoder_thread_task_runner_->PostTask( |
+ FROM_HERE, base::Bind(&VaapiVideoEncodeAccelerator::EncodeTask, |
+ base::Unretained(this), frame, force_keyframe)); |
} |
bool VaapiVideoEncodeAccelerator::PrepareNextJob() { |
@@ -611,7 +600,7 @@ bool VaapiVideoEncodeAccelerator::PrepareNextJob() { |
void VaapiVideoEncodeAccelerator::EncodeTask( |
const scoped_refptr<media::VideoFrame>& frame, |
bool force_keyframe) { |
- DCHECK(encoder_thread_proxy_->BelongsToCurrentThread()); |
+ DCHECK(encoder_thread_task_runner_->BelongsToCurrentThread()); |
DCHECK_NE(state_, kUninitialized); |
encoder_input_queue_.push( |
@@ -620,7 +609,7 @@ void VaapiVideoEncodeAccelerator::EncodeTask( |
} |
void VaapiVideoEncodeAccelerator::EncodeFrameTask() { |
- DCHECK(encoder_thread_proxy_->BelongsToCurrentThread()); |
+ DCHECK(encoder_thread_task_runner_->BelongsToCurrentThread()); |
if (state_ != kEncoding || encoder_input_queue_.empty()) |
return; |
@@ -663,7 +652,7 @@ void VaapiVideoEncodeAccelerator::EncodeFrameTask() { |
void VaapiVideoEncodeAccelerator::UseOutputBitstreamBuffer( |
const media::BitstreamBuffer& buffer) { |
DVLOGF(4) << "id: " << buffer.id(); |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
if (buffer.size() < output_buffer_byte_size_) { |
NOTIFY_ERROR(kInvalidArgumentError, "Provided bitstream buffer too small"); |
@@ -680,16 +669,15 @@ void VaapiVideoEncodeAccelerator::UseOutputBitstreamBuffer( |
scoped_ptr<BitstreamBufferRef> buffer_ref( |
new BitstreamBufferRef(buffer.id(), shm.Pass(), buffer.size())); |
- encoder_thread_proxy_->PostTask( |
+ encoder_thread_task_runner_->PostTask( |
FROM_HERE, |
base::Bind(&VaapiVideoEncodeAccelerator::UseOutputBitstreamBufferTask, |
- base::Unretained(this), |
- base::Passed(&buffer_ref))); |
+ base::Unretained(this), base::Passed(&buffer_ref))); |
} |
void VaapiVideoEncodeAccelerator::UseOutputBitstreamBufferTask( |
scoped_ptr<BitstreamBufferRef> buffer_ref) { |
- DCHECK(encoder_thread_proxy_->BelongsToCurrentThread()); |
+ DCHECK(encoder_thread_task_runner_->BelongsToCurrentThread()); |
DCHECK_NE(state_, kUninitialized); |
available_bitstream_buffers_.push(make_linked_ptr(buffer_ref.release())); |
@@ -700,21 +688,19 @@ void VaapiVideoEncodeAccelerator::RequestEncodingParametersChange( |
uint32 bitrate, |
uint32 framerate) { |
DVLOGF(2) << "bitrate: " << bitrate << " framerate: " << framerate; |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
- encoder_thread_proxy_->PostTask( |
+ encoder_thread_task_runner_->PostTask( |
FROM_HERE, |
base::Bind( |
&VaapiVideoEncodeAccelerator::RequestEncodingParametersChangeTask, |
- base::Unretained(this), |
- bitrate, |
- framerate)); |
+ base::Unretained(this), bitrate, framerate)); |
} |
void VaapiVideoEncodeAccelerator::UpdateRates(uint32 bitrate, |
uint32 framerate) { |
if (encoder_thread_.IsRunning()) |
- DCHECK(encoder_thread_proxy_->BelongsToCurrentThread()); |
+ DCHECK(encoder_thread_task_runner_->BelongsToCurrentThread()); |
DCHECK_NE(bitrate, 0u); |
DCHECK_NE(framerate, 0u); |
bitrate_ = bitrate; |
@@ -726,7 +712,7 @@ void VaapiVideoEncodeAccelerator::RequestEncodingParametersChangeTask( |
uint32 bitrate, |
uint32 framerate) { |
DVLOGF(2) << "bitrate: " << bitrate << " framerate: " << framerate; |
- DCHECK(encoder_thread_proxy_->BelongsToCurrentThread()); |
+ DCHECK(encoder_thread_task_runner_->BelongsToCurrentThread()); |
DCHECK_NE(state_, kUninitialized); |
// This is a workaround to zero being temporarily, as part of the initial |
@@ -752,7 +738,7 @@ void VaapiVideoEncodeAccelerator::RequestEncodingParametersChangeTask( |
} |
void VaapiVideoEncodeAccelerator::Destroy() { |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
// Can't call client anymore after Destroy() returns. |
client_ptr_factory_.reset(); |
@@ -772,7 +758,7 @@ void VaapiVideoEncodeAccelerator::Destroy() { |
void VaapiVideoEncodeAccelerator::DestroyTask() { |
DVLOGF(2); |
- DCHECK(encoder_thread_proxy_->BelongsToCurrentThread()); |
+ DCHECK(encoder_thread_task_runner_->BelongsToCurrentThread()); |
SetState(kError); |
} |
@@ -1036,12 +1022,10 @@ void VaapiVideoEncodeAccelerator::GeneratePackedPPS() { |
void VaapiVideoEncodeAccelerator::SetState(State state) { |
// Only touch state on encoder thread, unless it's not running. |
if (encoder_thread_.IsRunning() && |
- !encoder_thread_proxy_->BelongsToCurrentThread()) { |
- encoder_thread_proxy_->PostTask( |
- FROM_HERE, |
- base::Bind(&VaapiVideoEncodeAccelerator::SetState, |
- base::Unretained(this), |
- state)); |
+ !encoder_thread_task_runner_->BelongsToCurrentThread()) { |
+ encoder_thread_task_runner_->PostTask( |
+ FROM_HERE, base::Bind(&VaapiVideoEncodeAccelerator::SetState, |
+ base::Unretained(this), state)); |
return; |
} |
@@ -1050,11 +1034,10 @@ void VaapiVideoEncodeAccelerator::SetState(State state) { |
} |
void VaapiVideoEncodeAccelerator::NotifyError(Error error) { |
- if (!child_message_loop_proxy_->BelongsToCurrentThread()) { |
- child_message_loop_proxy_->PostTask( |
- FROM_HERE, |
- base::Bind( |
- &VaapiVideoEncodeAccelerator::NotifyError, weak_this_, error)); |
+ if (!child_task_runner_->BelongsToCurrentThread()) { |
+ child_task_runner_->PostTask( |
+ FROM_HERE, base::Bind(&VaapiVideoEncodeAccelerator::NotifyError, |
+ weak_this_, error)); |
return; |
} |