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); |
} |