Chromium Code Reviews| 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. |