Chromium Code Reviews| Index: content/renderer/media/webmediaplayer_ms.cc |
| diff --git a/content/renderer/media/webmediaplayer_ms.cc b/content/renderer/media/webmediaplayer_ms.cc |
| index 80bd723099090ab737278b2bbc21ffd751554805..a68f09a9ac2715b351280940063b7f2a2dd1f761 100644 |
| --- a/content/renderer/media/webmediaplayer_ms.cc |
| +++ b/content/renderer/media/webmediaplayer_ms.cc |
| @@ -451,14 +451,27 @@ void WebMediaPlayerMS::SetVideoFrameProviderClient( |
| if (video_frame_provider_client_) |
| video_frame_provider_client_->StopUsingProvider(); |
| video_frame_provider_client_ = client; |
| + if (client) |
| + client->StartRendering(); |
| } |
| bool WebMediaPlayerMS::UpdateCurrentFrame(base::TimeTicks deadline_min, |
| base::TimeTicks deadline_max) { |
| + TRACE_EVENT_BEGIN2("webrtc", "WebMediaPlayerMS::UpdateCurrentFrame", |
|
DaleCurtis
2015/07/31 17:48:27
No need for BEGIN, END since your trace is within
qiangchen
2015/07/31 20:06:07
The point is that after implementing the algorithm
|
| + "Actual Render Begin", deadline_min.ToInternalValue(), |
| + "Actual Render End", deadline_max.ToInternalValue()); |
| + |
| // TODO(dalecurtis): This should make use of the deadline interval to ensure |
| // the painted frame is correct for the given interval. |
| - NOTREACHED(); |
| - return false; |
| + |
| + base::TimeTicks render_time; |
| + if (!current_frame_->metadata()->GetTimeTicks( |
| + media::VideoFrameMetadata::REFERENCE_TIME, &render_time)) { |
| + render_time = base::TimeTicks(); |
| + } |
| + TRACE_EVENT_END1("webrtc", "WebMediaPlayerMS::UpdateCurrentFrame", |
| + "Ideal Render Instant", render_time.ToInternalValue()); |
| + return !current_frame_used_; |
| } |
| bool WebMediaPlayerMS::HasCurrentFrame() { |
| @@ -483,6 +496,16 @@ void WebMediaPlayerMS::OnFrameAvailable( |
| const scoped_refptr<media::VideoFrame>& frame) { |
| DVLOG(3) << "WebMediaPlayerMS::OnFrameAvailable"; |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + base::TimeTicks render_time; |
| + if (!frame->metadata()->GetTimeTicks( |
| + media::VideoFrameMetadata::REFERENCE_TIME, |
| + &render_time)) { |
| + render_time = base::TimeTicks(); |
| + } |
| + TRACE_EVENT1("webrtc", "WebMediaPlayerMS::OnFrameAvailable", |
| + "Ideal Render Instant", render_time.ToInternalValue()); |
| + |
| ++total_frame_count_; |
| if (!received_first_frame_) { |
| received_first_frame_ = true; |
| @@ -522,8 +545,6 @@ void WebMediaPlayerMS::OnFrameAvailable( |
| if (size_changed) |
| GetClient()->sizeChanged(); |
| - |
| - GetClient()->repaint(); |
| } |
| void WebMediaPlayerMS::RepaintInternal() { |