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 virtual ~TestVideoFrameScheduler();
31 // VideoFrameScheduler implementation.
32 virtual void ScheduleVideoFrame(const scoped_refptr
<VideoFrame
>& frame
,
33 base::TimeTicks wall_ticks
,
34 const DoneCB
& done_cb
) override
;
35 virtual 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_