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_CAST_TEST_FAKE_MOCK_VIDEO_ENCODE_ACCELERATOR_H_
6 #define MEDIA_CAST_TEST_FAKE_MOCK_VIDEO_ENCODE_ACCELERATOR_H_
8 #include "media/video/video_encode_accelerator.h"
13 #include "base/memory/weak_ptr.h"
14 #include "media/base/bitstream_buffer.h"
17 class SingleThreadTaskRunner;
24 class FakeVideoEncodeAccelerator : public VideoEncodeAccelerator {
26 explicit FakeVideoEncodeAccelerator(
27 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
28 std::vector<uint32>* stored_bitrates);
29 virtual ~FakeVideoEncodeAccelerator();
31 virtual bool Initialize(media::VideoFrame::Format input_format,
32 const gfx::Size& input_visible_size,
33 VideoCodecProfile output_profile,
34 uint32 initial_bitrate,
35 Client* client) OVERRIDE;
37 virtual void Encode(const scoped_refptr<VideoFrame>& frame,
38 bool force_keyframe) OVERRIDE;
40 virtual void UseOutputBitstreamBuffer(const BitstreamBuffer& buffer) OVERRIDE;
42 virtual void RequestEncodingParametersChange(uint32 bitrate,
43 uint32 framerate) OVERRIDE;
45 virtual void Destroy() OVERRIDE;
47 void SendDummyFrameForTesting(bool key_frame);
50 void DoRequireBitstreamBuffers(unsigned int input_count,
51 const gfx::Size& input_coded_size,
52 size_t output_buffer_size) const;
53 void DoBitstreamBufferReady(int32 bitstream_buffer_id,
55 bool key_frame) const;
57 const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
58 std::vector<uint32>* const stored_bitrates_;
59 VideoEncodeAccelerator::Client* client_;
62 std::list<int32> available_buffer_ids_;
64 base::WeakPtrFactory<FakeVideoEncodeAccelerator> weak_this_factory_;
66 DISALLOW_COPY_AND_ASSIGN(FakeVideoEncodeAccelerator);
73 #endif // MEDIA_CAST_TEST_FAKE_MOCK_VIDEO_ENCODE_ACCELERATOR_H_