Chromium Code Reviews| Index: media/blink/webmediaplayer_impl.cc |
| diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc |
| index 119810f9214b8611ebb33a8a391d5fc556132f9b..73f3c1cac8e998b9bc3495d213b101a80832f10b 100644 |
| --- a/media/blink/webmediaplayer_impl.cc |
| +++ b/media/blink/webmediaplayer_impl.cc |
| @@ -703,6 +703,15 @@ void WebMediaPlayerImpl::selectedVideoTrackChanged( |
| pipeline_controller_.OnSelectedVideoTrackChanged(selected_video_track_id); |
| } |
| +bool WebMediaPlayerImpl::getLastUploadedFrameInfo(unsigned* width, |
| + unsigned* height, |
| + double* timestamp) { |
| + *width = last_uploaded_frame_size_.width(); |
| + *height = last_uploaded_frame_size_.height(); |
| + *timestamp = last_uploaded_frame_timestamp_.InSecondsF(); |
| + return true; |
| +} |
| + |
| blink::WebSize WebMediaPlayerImpl::naturalSize() const { |
| DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| @@ -1833,8 +1842,15 @@ scoped_refptr<VideoFrame> WebMediaPlayerImpl::GetCurrentFrameFromCompositor() { |
| // Needed when the |main_task_runner_| and |compositor_task_runner_| are the |
| // same to avoid deadlock in the Wait() below. |
| - if (compositor_task_runner_->BelongsToCurrentThread()) |
| - return compositor_->GetCurrentFrameAndUpdateIfStale(); |
| + if (compositor_task_runner_->BelongsToCurrentThread()) { |
| + scoped_refptr<VideoFrame> video_frame = |
| + compositor_->GetCurrentFrameAndUpdateIfStale(); |
| + if (video_frame) { |
|
dglazkov
2017/03/27 20:08:21
Early return might be easier to read?
if (!video_
Kai Ninomiya
2017/03/28 21:33:23
Done.
|
| + last_uploaded_frame_size_ = video_frame->natural_size(); |
| + last_uploaded_frame_timestamp_ = video_frame->timestamp(); |
| + } |
| + return video_frame; |
| + } |
| // Use a posted task and waitable event instead of a lock otherwise |
| // WebGL/Canvas can see different content than what the compositor is seeing. |
| @@ -1846,6 +1862,11 @@ scoped_refptr<VideoFrame> WebMediaPlayerImpl::GetCurrentFrameFromCompositor() { |
| base::Bind(&GetCurrentFrameAndSignal, base::Unretained(compositor_), |
| &video_frame, &event)); |
| event.Wait(); |
| + |
| + if (video_frame) { |
|
dglazkov
2017/03/27 20:08:21
Same here.
Kai Ninomiya
2017/03/28 21:33:23
Done.
|
| + last_uploaded_frame_size_ = video_frame->natural_size(); |
| + last_uploaded_frame_timestamp_ = video_frame->timestamp(); |
| + } |
| return video_frame; |
| } |