Index: media/blink/video_frame_compositor.cc |
diff --git a/media/blink/video_frame_compositor.cc b/media/blink/video_frame_compositor.cc |
index 017bedc9ae9fc0b29b18e12c300790a24ca54f3b..ec2034240c4f13b5ea188176159c35b8774e08c1 100644 |
--- a/media/blink/video_frame_compositor.cc |
+++ b/media/blink/video_frame_compositor.cc |
@@ -5,8 +5,8 @@ |
#include "media/blink/video_frame_compositor.h" |
#include "base/bind.h" |
+#include "base/callback_helpers.h" |
#include "base/message_loop/message_loop.h" |
-#include "base/metrics/histogram_macros.h" |
#include "base/time/default_tick_clock.h" |
#include "base/trace_event/auto_open_close_event.h" |
#include "base/trace_event/trace_event.h" |
@@ -139,6 +139,7 @@ void VideoFrameCompositor::Stop() { |
compositor_task_runner_->PostTask( |
FROM_HERE, base::Bind(&VideoFrameCompositor::OnRendererStateUpdate, |
base::Unretained(this), false)); |
+ new_processed_frame_cb_.Reset(); |
} |
void VideoFrameCompositor::PaintSingleFrame( |
@@ -189,9 +190,10 @@ base::TimeDelta VideoFrameCompositor::GetCurrentFrameTimestamp() const { |
return current_frame_->timestamp(); |
} |
-void VideoFrameCompositor::SetForegroundTime(base::TimeTicks when) { |
+void VideoFrameCompositor::SetOnNewProcessedFrameCallback( |
+ const OnNewProcessedFrameCB& cb) { |
DCHECK(compositor_task_runner_->BelongsToCurrentThread()); |
- foreground_time_ = when; |
+ new_processed_frame_cb_ = cb; |
} |
bool VideoFrameCompositor::ProcessNewFrame( |
@@ -210,13 +212,8 @@ bool VideoFrameCompositor::ProcessNewFrame( |
current_frame_ = frame; |
- if (!foreground_time_.is_null()) { |
- base::TimeDelta time_to_first_frame = |
- base::TimeTicks::Now() - foreground_time_; |
- UMA_HISTOGRAM_TIMES("Media.Video.TimeFromForegroundToFirstFrame", |
- time_to_first_frame); |
- foreground_time_ = base::TimeTicks(); |
- } |
+ if (!new_processed_frame_cb_.is_null()) |
+ base::ResetAndReturn(&new_processed_frame_cb_).Run(base::TimeTicks::Now()); |
return true; |
} |