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