Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / media / cast / test / fake_video_encode_accelerator.h
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.
4
5 #ifndef MEDIA_CAST_TEST_FAKE_MOCK_VIDEO_ENCODE_ACCELERATOR_H_
6 #define MEDIA_CAST_TEST_FAKE_MOCK_VIDEO_ENCODE_ACCELERATOR_H_
7
8 #include "media/video/video_encode_accelerator.h"
9
10 #include <list>
11 #include <vector>
12
13 #include "base/memory/weak_ptr.h"
14 #include "media/base/bitstream_buffer.h"
15
16 namespace base {
17 class SingleThreadTaskRunner;
18 }  // namespace base
19
20 namespace media {
21 namespace cast {
22 namespace test {
23
24 class FakeVideoEncodeAccelerator : public VideoEncodeAccelerator {
25  public:
26   explicit FakeVideoEncodeAccelerator(
27       const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
28       std::vector<uint32>* stored_bitrates);
29   virtual ~FakeVideoEncodeAccelerator();
30
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;
36
37   virtual void Encode(const scoped_refptr<VideoFrame>& frame,
38                       bool force_keyframe) OVERRIDE;
39
40   virtual void UseOutputBitstreamBuffer(const BitstreamBuffer& buffer) OVERRIDE;
41
42   virtual void RequestEncodingParametersChange(uint32 bitrate,
43                                                uint32 framerate) OVERRIDE;
44
45   virtual void Destroy() OVERRIDE;
46
47   void SendDummyFrameForTesting(bool key_frame);
48
49  private:
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,
54                               size_t payload_size,
55                               bool key_frame) const;
56
57   const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
58   std::vector<uint32>* const stored_bitrates_;
59   VideoEncodeAccelerator::Client* client_;
60   bool first_;
61
62   std::list<int32> available_buffer_ids_;
63
64   base::WeakPtrFactory<FakeVideoEncodeAccelerator> weak_this_factory_;
65
66   DISALLOW_COPY_AND_ASSIGN(FakeVideoEncodeAccelerator);
67 };
68
69 }  // namespace test
70 }  // namespace cast
71 }  // namespace media
72
73 #endif  // MEDIA_CAST_TEST_FAKE_MOCK_VIDEO_ENCODE_ACCELERATOR_H_