| Index: content/renderer/media/rtc_video_decoder.cc
|
| diff --git a/content/renderer/media/rtc_video_decoder.cc b/content/renderer/media/rtc_video_decoder.cc
|
| index 0e9086fdd5fe9a11785444a14fe3ab0275056463..71fe3f62c3266e55960d521a2c1d10bfaa276eb4 100644
|
| --- a/content/renderer/media/rtc_video_decoder.cc
|
| +++ b/content/renderer/media/rtc_video_decoder.cc
|
| @@ -403,24 +403,24 @@ void RTCVideoDecoder::PictureReady(const media::Picture& picture) {
|
| static void ReadPixelsSyncInner(
|
| const scoped_refptr<media::GpuVideoAcceleratorFactories>& factories,
|
| uint32 texture_id,
|
| - const gfx::Rect& visible_rect,
|
| + const scoped_refptr<media::VideoFrame>& frame,
|
| const SkBitmap& pixels,
|
| base::WaitableEvent* event) {
|
| - factories->ReadPixels(texture_id, visible_rect, pixels);
|
| + factories->ReadPixels(texture_id, frame, pixels);
|
| event->Signal();
|
| }
|
|
|
| static void ReadPixelsSync(
|
| const scoped_refptr<media::GpuVideoAcceleratorFactories>& factories,
|
| uint32 texture_id,
|
| - const gfx::Rect& visible_rect,
|
| + const scoped_refptr<media::VideoFrame>& frame,
|
| const SkBitmap& pixels) {
|
| base::WaitableEvent event(true, false);
|
| if (!factories->GetTaskRunner()->PostTask(FROM_HERE,
|
| base::Bind(&ReadPixelsSyncInner,
|
| factories,
|
| texture_id,
|
| - visible_rect,
|
| + frame,
|
| pixels,
|
| &event)))
|
| return;
|
| @@ -449,7 +449,7 @@ scoped_refptr<media::VideoFrame> RTCVideoDecoder::CreateVideoFrame(
|
| visible_rect,
|
| visible_rect.size(),
|
| timestamp_ms,
|
| - base::Bind(&ReadPixelsSync, factories_, pb.texture_id(), visible_rect));
|
| + base::Bind(&ReadPixelsSync, factories_, pb.texture_id()));
|
| }
|
|
|
| void RTCVideoDecoder::NotifyEndOfBitstreamBuffer(int32 id) {
|
| @@ -640,7 +640,8 @@ void RTCVideoDecoder::ResetInternal() {
|
|
|
| void RTCVideoDecoder::ReusePictureBuffer(
|
| int64 picture_buffer_id,
|
| - scoped_ptr<gpu::MailboxHolder> mailbox_holder) {
|
| + scoped_ptr<gpu::MailboxHolder> mailbox_holder,
|
| + const std::vector<uint32>& release_sync_points) {
|
| DCHECK(vda_task_runner_->BelongsToCurrentThread());
|
| DVLOG(3) << "ReusePictureBuffer. id=" << picture_buffer_id;
|
|
|
| @@ -664,7 +665,8 @@ void RTCVideoDecoder::ReusePictureBuffer(
|
| return;
|
| }
|
|
|
| - factories_->WaitSyncPoint(mailbox_holder->sync_point);
|
| + for (size_t i = 0; i < release_sync_points.size(); i++)
|
| + factories_->WaitSyncPoint(release_sync_points[i]);
|
|
|
| vda_->ReusePictureBuffer(picture_buffer_id);
|
| }
|
|
|