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
3 // found in the LICENSE file.
5 #ifndef MEDIA_FILTERS_TEST_VIDEO_FRAME_SCHEDULER_H_
6 #define MEDIA_FILTERS_TEST_VIDEO_FRAME_SCHEDULER_H_
10 #include "media/filters/video_frame_scheduler.h"
14 // A scheduler that queues frames until told otherwise.
15 class TestVideoFrameScheduler : public VideoFrameScheduler {
17 struct ScheduledFrame {
18 ScheduledFrame(const scoped_refptr<VideoFrame> frame,
19 base::TimeTicks wall_ticks,
20 const DoneCB& done_cb);
23 scoped_refptr<VideoFrame> frame;
24 base::TimeTicks wall_ticks;
28 TestVideoFrameScheduler();
29 ~TestVideoFrameScheduler() override;
31 // VideoFrameScheduler implementation.
32 void ScheduleVideoFrame(const scoped_refptr<VideoFrame>& frame,
33 base::TimeTicks wall_ticks,
34 const DoneCB& done_cb) override;
35 void Reset() override;
37 // Displays all frames with scheduled times <= |wall_ticks|.
38 void DisplayFramesUpTo(base::TimeTicks wall_ticks);
40 // Drops all frames with scheduled times <= |wall_ticks|.
41 void DropFramesUpTo(base::TimeTicks wall_ticks);
43 const std::vector<ScheduledFrame>& scheduled_frames() const {
44 return scheduled_frames_;
48 void RunDoneCBForFramesUpTo(base::TimeTicks wall_ticks, Reason reason);
50 std::vector<ScheduledFrame> scheduled_frames_;
52 DISALLOW_COPY_AND_ASSIGN(TestVideoFrameScheduler);
57 #endif // MEDIA_FILTERS_TEST_VIDEO_FRAME_SCHEDULER_H_