• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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.
4 
5 #ifndef CONTENT_TEST_TEST_VIDEO_FRAME_PROVIDER_H_
6 #define CONTENT_TEST_TEST_VIDEO_FRAME_PROVIDER_H_
7 
8 #include "base/time/time.h"
9 #include "content/renderer/media/video_frame_provider.h"
10 #include "ui/gfx/size.h"
11 
12 namespace base {
13 class MessageLoopProxy;
14 }
15 
16 namespace content {
17 
18 // A simple implementation of VideoFrameProvider generates raw frames and
19 // passes them to webmediaplayer.
20 // Since non-black pixel values are required in the layout test, e.g.,
21 // media/video-capture-canvas.html, this class should generate frame with
22 // only non-black pixels.
23 class TestVideoFrameProvider : public VideoFrameProvider {
24  public:
25   TestVideoFrameProvider(
26       const gfx::Size& size,
27       const base::TimeDelta& frame_duration,
28       const base::Closure& error_cb,
29       const RepaintCB& repaint_cb);
30 
31   // VideoFrameProvider implementation.
32   virtual void Start() OVERRIDE;
33   virtual void Stop() OVERRIDE;
34   virtual void Play() OVERRIDE;
35   virtual void Pause() OVERRIDE;
36 
37  protected:
38   virtual ~TestVideoFrameProvider();
39 
40  private:
41   enum State {
42     kStarted,
43     kPaused,
44     kStopped,
45   };
46 
47   void GenerateFrame();
48 
49   scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
50   gfx::Size size_;
51   State state_;
52 
53   base::TimeDelta current_time_;
54   base::TimeDelta frame_duration_;
55   base::Closure error_cb_;
56   RepaintCB repaint_cb_;
57 
58   DISALLOW_COPY_AND_ASSIGN(TestVideoFrameProvider);
59 };
60 
61 }  // namespace content
62 
63 #endif  // CONTENT_TEST_TEST_VIDEO_FRAME_PROVIDER_H_
64