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