Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(217)

Side by Side Diff: media/filters/video_frame_scheduler_impl.cc

Issue 237353007: Refactor VideoRendererImpl to use VideoFrameScheduler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/filters/video_frame_scheduler_impl.h" 5 #include "media/filters/video_frame_scheduler_impl.h"
6 6
7 #include <list> 7 #include <list>
8 8
9 #include "base/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "base/time/default_tick_clock.h" 10 #include "base/time/default_tick_clock.h"
(...skipping 16 matching lines...) Expand all
27 const scoped_refptr<VideoFrame>& frame, 27 const scoped_refptr<VideoFrame>& frame,
28 base::TimeTicks wall_ticks, 28 base::TimeTicks wall_ticks,
29 const DoneCB& done_cb) { 29 const DoneCB& done_cb) {
30 DCHECK(task_runner_->BelongsToCurrentThread()); 30 DCHECK(task_runner_->BelongsToCurrentThread());
31 DCHECK(!frame->end_of_stream()); 31 DCHECK(!frame->end_of_stream());
32 pending_frames_.push(PendingFrame(frame, wall_ticks, done_cb)); 32 pending_frames_.push(PendingFrame(frame, wall_ticks, done_cb));
33 ResetTimerIfNecessary(); 33 ResetTimerIfNecessary();
34 } 34 }
35 35
36 void VideoFrameSchedulerImpl::Reset() { 36 void VideoFrameSchedulerImpl::Reset() {
37 DCHECK(task_runner_->BelongsToCurrentThread()); 37 PendingFrameQueue empty;
38 while (!pending_frames_.empty()) { 38 pending_frames_.swap(empty);
39 pending_frames_.top().done_cb.Run(pending_frames_.top().frame, RESET);
40 pending_frames_.pop();
41 }
42 } 39 }
43 40
44 void VideoFrameSchedulerImpl::SetTickClockForTesting( 41 void VideoFrameSchedulerImpl::SetTickClockForTesting(
45 scoped_ptr<base::TickClock> tick_clock) { 42 scoped_ptr<base::TickClock> tick_clock) {
46 tick_clock_.swap(tick_clock); 43 tick_clock_.swap(tick_clock);
47 } 44 }
48 45
49 void VideoFrameSchedulerImpl::ResetTimerIfNecessary() { 46 void VideoFrameSchedulerImpl::ResetTimerIfNecessary() {
50 if (pending_frames_.empty()) { 47 if (pending_frames_.empty()) {
51 DCHECK(!timer_.IsRunning()); 48 DCHECK(!timer_.IsRunning());
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 bool VideoFrameSchedulerImpl::PendingFrame::operator<( 96 bool VideoFrameSchedulerImpl::PendingFrame::operator<(
100 const PendingFrame& other) const { 97 const PendingFrame& other) const {
101 // Flip the comparison as std::priority_queue<T>::top() returns the largest 98 // Flip the comparison as std::priority_queue<T>::top() returns the largest
102 // element. 99 // element.
103 // 100 //
104 // Assume video frames with identical timestamps contain identical content. 101 // Assume video frames with identical timestamps contain identical content.
105 return wall_ticks > other.wall_ticks; 102 return wall_ticks > other.wall_ticks;
106 } 103 }
107 104
108 } // namespace media 105 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698