Index: content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc |
diff --git a/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc b/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc |
index 342be1a76bce961b37323e5c2b0ecc0fb4e6b283..e9b8d097007aee3760c472e80ededaa01b230570 100644 |
--- a/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc |
+++ b/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc |
@@ -14,7 +14,6 @@ |
#include "base/callback.h" |
#include "base/callback_helpers.h" |
#include "base/command_line.h" |
-#include "base/message_loop/message_loop_proxy.h" |
#include "base/numerics/safe_conversions.h" |
#include "base/strings/stringprintf.h" |
#include "content/common/gpu/media/v4l2_slice_video_decode_accelerator.h" |
@@ -162,13 +161,13 @@ V4L2SliceVideoDecodeAccelerator::OutputRecord::OutputRecord() |
struct V4L2SliceVideoDecodeAccelerator::BitstreamBufferRef { |
BitstreamBufferRef( |
base::WeakPtr<VideoDecodeAccelerator::Client>& client, |
- const scoped_refptr<base::MessageLoopProxy>& client_message_loop_proxy, |
+ const scoped_refptr<base::SingleThreadTaskRunner>& client_task_runner, |
base::SharedMemory* shm, |
size_t size, |
int32 input_id); |
~BitstreamBufferRef(); |
const base::WeakPtr<VideoDecodeAccelerator::Client> client; |
- const scoped_refptr<base::MessageLoopProxy> client_message_loop_proxy; |
+ const scoped_refptr<base::SingleThreadTaskRunner> client_task_runner; |
const scoped_ptr<base::SharedMemory> shm; |
const size_t size; |
off_t bytes_used; |
@@ -177,12 +176,12 @@ struct V4L2SliceVideoDecodeAccelerator::BitstreamBufferRef { |
V4L2SliceVideoDecodeAccelerator::BitstreamBufferRef::BitstreamBufferRef( |
base::WeakPtr<VideoDecodeAccelerator::Client>& client, |
- const scoped_refptr<base::MessageLoopProxy>& client_message_loop_proxy, |
+ const scoped_refptr<base::SingleThreadTaskRunner>& client_task_runner, |
base::SharedMemory* shm, |
size_t size, |
int32 input_id) |
: client(client), |
- client_message_loop_proxy(client_message_loop_proxy), |
+ client_task_runner(client_task_runner), |
shm(shm), |
size(size), |
bytes_used(0), |
@@ -192,7 +191,7 @@ V4L2SliceVideoDecodeAccelerator::BitstreamBufferRef::BitstreamBufferRef( |
V4L2SliceVideoDecodeAccelerator::BitstreamBufferRef::~BitstreamBufferRef() { |
if (input_id >= 0) { |
DVLOGF(5) << "returning input_id: " << input_id; |
- client_message_loop_proxy->PostTask( |
+ client_task_runner->PostTask( |
FROM_HERE, |
base::Bind(&VideoDecodeAccelerator::Client::NotifyEndOfBitstreamBuffer, |
client, input_id)); |
@@ -380,11 +379,11 @@ V4L2SliceVideoDecodeAccelerator::V4L2SliceVideoDecodeAccelerator( |
EGLContext egl_context, |
const base::WeakPtr<Client>& io_client, |
const base::Callback<bool(void)>& make_context_current, |
- const scoped_refptr<base::MessageLoopProxy>& io_message_loop_proxy) |
+ const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner) |
: input_planes_count_(0), |
output_planes_count_(0), |
- child_message_loop_proxy_(base::MessageLoopProxy::current()), |
- io_message_loop_proxy_(io_message_loop_proxy), |
+ child_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
+ io_task_runner_(io_task_runner), |
io_client_(io_client), |
device_(device), |
decoder_thread_("V4L2SliceVideoDecodeAcceleratorThread"), |
@@ -411,7 +410,7 @@ V4L2SliceVideoDecodeAccelerator::V4L2SliceVideoDecodeAccelerator( |
V4L2SliceVideoDecodeAccelerator::~V4L2SliceVideoDecodeAccelerator() { |
DVLOGF(2); |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
DCHECK(!decoder_thread_.IsRunning()); |
DCHECK(!device_poll_thread_.IsRunning()); |
@@ -420,8 +419,8 @@ V4L2SliceVideoDecodeAccelerator::~V4L2SliceVideoDecodeAccelerator() { |
} |
void V4L2SliceVideoDecodeAccelerator::NotifyError(Error error) { |
- if (!child_message_loop_proxy_->BelongsToCurrentThread()) { |
- child_message_loop_proxy_->PostTask( |
+ if (!child_task_runner_->BelongsToCurrentThread()) { |
+ child_task_runner_->PostTask( |
FROM_HERE, base::Bind(&V4L2SliceVideoDecodeAccelerator::NotifyError, |
weak_this_, error)); |
return; |
@@ -437,7 +436,7 @@ bool V4L2SliceVideoDecodeAccelerator::Initialize( |
media::VideoCodecProfile profile, |
VideoDecodeAccelerator::Client* client) { |
DVLOGF(3) << "profile: " << profile; |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
DCHECK_EQ(state_, kUninitialized); |
client_ptr_factory_.reset( |
@@ -499,7 +498,7 @@ bool V4L2SliceVideoDecodeAccelerator::Initialize( |
DLOG(ERROR) << "Initialize(): device thread failed to start"; |
return false; |
} |
- decoder_thread_proxy_ = decoder_thread_.message_loop_proxy(); |
+ decoder_thread_proxy_ = decoder_thread_.task_runner(); |
no sievers
2015/05/12 18:11:30
nit: consider renaming |decoder_thread_proxy_|
Sami
2015/05/13 18:17:52
Done.
|
state_ = kInitialized; |
@@ -527,7 +526,7 @@ void V4L2SliceVideoDecodeAccelerator::InitializeTask() { |
void V4L2SliceVideoDecodeAccelerator::Destroy() { |
DVLOGF(3); |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
if (decoder_thread_.IsRunning()) { |
decoder_thread_proxy_->PostTask( |
@@ -724,7 +723,7 @@ bool V4L2SliceVideoDecodeAccelerator::CreateOutputBuffers() { |
<< ", visible size=" << visible_size_.ToString() |
<< ", coded size=" << coded_size_.ToString(); |
- child_message_loop_proxy_->PostTask( |
+ child_task_runner_->PostTask( |
FROM_HERE, |
base::Bind(&VideoDecodeAccelerator::Client::ProvidePictureBuffers, |
client_, output_buffer_map_.size(), coded_size_, |
@@ -765,7 +764,7 @@ void V4L2SliceVideoDecodeAccelerator::DismissPictures( |
std::vector<int32> picture_buffer_ids, |
base::WaitableEvent* done) { |
DVLOGF(3); |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
for (auto picture_buffer_id : picture_buffer_ids) { |
DVLOGF(1) << "dismissing PictureBuffer id=" << picture_buffer_id; |
@@ -1159,7 +1158,7 @@ void V4L2SliceVideoDecodeAccelerator::Decode( |
const media::BitstreamBuffer& bitstream_buffer) { |
DVLOGF(3) << "input_id=" << bitstream_buffer.id() |
<< ", size=" << bitstream_buffer.size(); |
- DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(io_task_runner_->BelongsToCurrentThread()); |
decoder_thread_proxy_->PostTask( |
FROM_HERE, base::Bind(&V4L2SliceVideoDecodeAccelerator::DecodeTask, |
@@ -1173,7 +1172,7 @@ void V4L2SliceVideoDecodeAccelerator::DecodeTask( |
DCHECK(decoder_thread_proxy_->BelongsToCurrentThread()); |
scoped_ptr<BitstreamBufferRef> bitstream_record(new BitstreamBufferRef( |
- io_client_, io_message_loop_proxy_, |
+ io_client_, io_task_runner_, |
new base::SharedMemory(bitstream_buffer.handle(), true), |
bitstream_buffer.size(), bitstream_buffer.id())); |
if (!bitstream_record->shm->Map(bitstream_buffer.size())) { |
@@ -1340,7 +1339,7 @@ bool V4L2SliceVideoDecodeAccelerator::DestroyOutputs(bool dismiss) { |
} |
if (output_record.egl_image != EGL_NO_IMAGE_KHR) { |
- child_message_loop_proxy_->PostTask( |
+ child_task_runner_->PostTask( |
FROM_HERE, |
base::Bind(base::IgnoreResult(&V4L2Device::DestroyEGLImage), device_, |
egl_display_, output_record.egl_image)); |
@@ -1352,7 +1351,7 @@ bool V4L2SliceVideoDecodeAccelerator::DestroyOutputs(bool dismiss) { |
if (dismiss) { |
DVLOGF(2) << "Scheduling picture dismissal"; |
base::WaitableEvent done(false, false); |
- child_message_loop_proxy_->PostTask( |
+ child_task_runner_->PostTask( |
FROM_HERE, base::Bind(&V4L2SliceVideoDecodeAccelerator::DismissPictures, |
weak_this_, picture_buffers_to_dismiss, &done)); |
done.Wait(); |
@@ -1407,7 +1406,7 @@ bool V4L2SliceVideoDecodeAccelerator::DestroyOutputBuffers() { |
void V4L2SliceVideoDecodeAccelerator::AssignPictureBuffers( |
const std::vector<media::PictureBuffer>& buffers) { |
DVLOGF(3); |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
if (buffers.size() != output_buffer_map_.size()) { |
DLOG(ERROR) << "Failed to provide requested picture buffers. " |
@@ -1466,7 +1465,7 @@ void V4L2SliceVideoDecodeAccelerator::AssignPictureBuffers( |
void V4L2SliceVideoDecodeAccelerator::ReusePictureBuffer( |
int32 picture_buffer_id) { |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
DVLOGF(4) << "picture_buffer_id=" << picture_buffer_id; |
if (!make_context_current_.Run()) { |
@@ -1529,7 +1528,7 @@ void V4L2SliceVideoDecodeAccelerator::ReusePictureBufferTask( |
void V4L2SliceVideoDecodeAccelerator::Flush() { |
DVLOGF(3); |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
decoder_thread_proxy_->PostTask( |
FROM_HERE, base::Bind(&V4L2SliceVideoDecodeAccelerator::FlushTask, |
@@ -1545,7 +1544,7 @@ void V4L2SliceVideoDecodeAccelerator::FlushTask() { |
// which - when reached - will trigger flush sequence. |
decoder_input_queue_.push( |
linked_ptr<BitstreamBufferRef>(new BitstreamBufferRef( |
- io_client_, io_message_loop_proxy_, nullptr, 0, kFlushBufferId))); |
+ io_client_, io_task_runner_, nullptr, 0, kFlushBufferId))); |
return; |
} |
@@ -1604,8 +1603,8 @@ void V4L2SliceVideoDecodeAccelerator::FinishFlushIfNeeded() { |
SendPictureReady(); |
- child_message_loop_proxy_->PostTask( |
- FROM_HERE, base::Bind(&Client::NotifyFlushDone, client_)); |
+ child_task_runner_->PostTask(FROM_HERE, |
+ base::Bind(&Client::NotifyFlushDone, client_)); |
decoder_flushing_ = false; |
@@ -1616,7 +1615,7 @@ void V4L2SliceVideoDecodeAccelerator::FinishFlushIfNeeded() { |
void V4L2SliceVideoDecodeAccelerator::Reset() { |
DVLOGF(3); |
- DCHECK(child_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(child_task_runner_->BelongsToCurrentThread()); |
decoder_thread_proxy_->PostTask( |
FROM_HERE, base::Bind(&V4L2SliceVideoDecodeAccelerator::ResetTask, |
@@ -1680,8 +1679,8 @@ void V4L2SliceVideoDecodeAccelerator::FinishResetIfNeeded() { |
decoder_resetting_ = false; |
- child_message_loop_proxy_->PostTask( |
- FROM_HERE, base::Bind(&Client::NotifyResetDone, client_)); |
+ child_task_runner_->PostTask(FROM_HERE, |
+ base::Bind(&Client::NotifyResetDone, client_)); |
DVLOGF(3) << "Reset finished"; |
@@ -2455,7 +2454,7 @@ void V4L2SliceVideoDecodeAccelerator::SendPictureReady() { |
<< picture.picture_buffer_id(); |
// This picture is cleared. Post it to IO thread to reduce latency. This |
// should be the case after all pictures are cleared at the beginning. |
- io_message_loop_proxy_->PostTask( |
+ io_task_runner_->PostTask( |
FROM_HERE, base::Bind(&Client::PictureReady, io_client_, picture)); |
pending_picture_ready_.pop(); |
} else if (!cleared || resetting_or_flushing) { |
@@ -2469,7 +2468,7 @@ void V4L2SliceVideoDecodeAccelerator::SendPictureReady() { |
// has to be cleared in the child thread. A picture only needs to be |
// cleared once. If the decoder is resetting or flushing, send all |
// pictures to ensure PictureReady arrive before reset or flush done. |
- child_message_loop_proxy_->PostTaskAndReply( |
+ child_task_runner_->PostTaskAndReply( |
FROM_HERE, base::Bind(&Client::PictureReady, client_, picture), |
// Unretained is safe. If Client::PictureReady gets to run, |this| is |
// alive. Destroy() will wait the decode thread to finish. |