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 12namespace base { 13class MessageLoopProxy; 14} 15 16namespace 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. 23class 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