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..ba83b8bfc4a132c537e92047fda410f18b255d1b 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", |
+ "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,15 @@ 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 +544,6 @@ void WebMediaPlayerMS::OnFrameAvailable( |
if (size_changed) |
GetClient()->sizeChanged(); |
- |
- GetClient()->repaint(); |
} |
void WebMediaPlayerMS::RepaintInternal() { |