// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_TEST_TEST_VIDEO_FRAME_PROVIDER_H_ #define CONTENT_TEST_TEST_VIDEO_FRAME_PROVIDER_H_ #include "base/time/time.h" #include "content/renderer/media/video_frame_provider.h" #include "ui/gfx/geometry/size.h" namespace base { class MessageLoopProxy; } namespace content { // A simple implementation of VideoFrameProvider generates raw frames and // passes them to webmediaplayer. // Since non-black pixel values are required in the layout test, e.g., // media/video-capture-canvas.html, this class should generate frame with // only non-black pixels. class TestVideoFrameProvider : public VideoFrameProvider { public: TestVideoFrameProvider( const gfx::Size& size, const base::TimeDelta& frame_duration, const base::Closure& error_cb, const RepaintCB& repaint_cb); // VideoFrameProvider implementation. void Start() override; void Stop() override; void Play() override; void Pause() override; protected: ~TestVideoFrameProvider() override; private: enum State { kStarted, kPaused, kStopped, }; void GenerateFrame(); scoped_refptr message_loop_proxy_; gfx::Size size_; State state_; base::TimeDelta current_time_; base::TimeDelta frame_duration_; base::Closure error_cb_; RepaintCB repaint_cb_; DISALLOW_COPY_AND_ASSIGN(TestVideoFrameProvider); }; } // namespace content #endif // CONTENT_TEST_TEST_VIDEO_FRAME_PROVIDER_H_