| Index: media/filters/gpu_video_decoder.cc
|
| diff --git a/media/filters/gpu_video_decoder.cc b/media/filters/gpu_video_decoder.cc
|
| index b96ff4361a3cccfe68f7437c018eae4e6f64b272..2699a44cac66d920e7d8efe12e49f7a140a5e152 100644
|
| --- a/media/filters/gpu_video_decoder.cc
|
| +++ b/media/filters/gpu_video_decoder.cc
|
| @@ -13,6 +13,7 @@
|
| #include "base/metrics/histogram.h"
|
| #include "base/stl_util.h"
|
| #include "base/task_runner_util.h"
|
| +#include "gpu/command_buffer/common/mailbox_holder.h"
|
| #include "media/base/bind_to_current_loop.h"
|
| #include "media/base/decoder_buffer.h"
|
| #include "media/base/media_log.h"
|
| @@ -442,13 +443,11 @@ void GpuVideoDecoder::PictureReady(const media::Picture& picture) {
|
| DCHECK(decoder_texture_target_);
|
|
|
| scoped_refptr<VideoFrame> frame(VideoFrame::WrapNativeTexture(
|
| - make_scoped_ptr(new VideoFrame::MailboxHolder(
|
| - pb.texture_mailbox(),
|
| - 0, // sync_point
|
| - BindToCurrentLoop(base::Bind(&GpuVideoDecoder::ReusePictureBuffer,
|
| - weak_this_,
|
| - picture.picture_buffer_id())))),
|
| - decoder_texture_target_,
|
| + make_scoped_ptr(new gpu::MailboxHolder(
|
| + pb.texture_mailbox(), decoder_texture_target_, 0 /* sync_point */)),
|
| + BindToCurrentLoop(base::Bind(&GpuVideoDecoder::ReusePictureBuffer,
|
| + weak_this_,
|
| + picture.picture_buffer_id())),
|
| pb.size(),
|
| visible_rect,
|
| natural_size,
|
| @@ -456,8 +455,7 @@ void GpuVideoDecoder::PictureReady(const media::Picture& picture) {
|
| base::Bind(&GpuVideoAcceleratorFactories::ReadPixels,
|
| factories_,
|
| pb.texture_id(),
|
| - gfx::Size(visible_rect.width(), visible_rect.height())),
|
| - base::Closure()));
|
| + gfx::Size(visible_rect.width(), visible_rect.height()))));
|
| CHECK_GT(available_pictures_, 0);
|
| --available_pictures_;
|
| bool inserted =
|
| @@ -489,8 +487,9 @@ void GpuVideoDecoder::EnqueueFrameAndTriggerFrameDelivery(
|
| ready_video_frames_.pop_front();
|
| }
|
|
|
| -void GpuVideoDecoder::ReusePictureBuffer(int64 picture_buffer_id,
|
| - uint32 sync_point) {
|
| +void GpuVideoDecoder::ReusePictureBuffer(
|
| + int64 picture_buffer_id,
|
| + scoped_ptr<gpu::MailboxHolder> mailbox_holder) {
|
| DVLOG(3) << "ReusePictureBuffer(" << picture_buffer_id << ")";
|
| DCheckGpuVideoAcceleratorFactoriesTaskRunnerIsCurrent();
|
|
|
| @@ -514,7 +513,7 @@ void GpuVideoDecoder::ReusePictureBuffer(int64 picture_buffer_id,
|
| return;
|
| }
|
|
|
| - factories_->WaitSyncPoint(sync_point);
|
| + factories_->WaitSyncPoint(mailbox_holder->sync_point);
|
| ++available_pictures_;
|
|
|
| vda_->ReusePictureBuffer(picture_buffer_id);
|
|
|