• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef TEST_FAKE_VP8_ENCODER_H_
12 #define TEST_FAKE_VP8_ENCODER_H_
13 
14 #include <stddef.h>
15 #include <stdint.h>
16 
17 #include <memory>
18 
19 #include "api/fec_controller_override.h"
20 #include "api/video/encoded_image.h"
21 #include "api/video_codecs/video_codec.h"
22 #include "api/video_codecs/video_encoder.h"
23 #include "api/video_codecs/vp8_frame_buffer_controller.h"
24 #include "api/video_codecs/vp8_temporal_layers.h"
25 #include "modules/include/module_common_types.h"
26 #include "modules/video_coding/include/video_codec_interface.h"
27 #include "rtc_base/synchronization/sequence_checker.h"
28 #include "rtc_base/thread_annotations.h"
29 #include "system_wrappers/include/clock.h"
30 #include "test/fake_encoder.h"
31 
32 namespace webrtc {
33 namespace test {
34 
35 class FakeVp8Encoder : public FakeEncoder {
36  public:
37   explicit FakeVp8Encoder(Clock* clock);
38   virtual ~FakeVp8Encoder() = default;
39 
40   int32_t InitEncode(const VideoCodec* config,
41                      const Settings& settings) override;
42 
43   int32_t Release() override;
44 
45   EncoderInfo GetEncoderInfo() const override;
46 
47  private:
48   void PopulateCodecSpecific(CodecSpecificInfo* codec_specific,
49                              size_t size_bytes,
50                              VideoFrameType frame_type,
51                              int stream_idx,
52                              uint32_t timestamp);
53 
54   std::unique_ptr<RTPFragmentationHeader> EncodeHook(
55       EncodedImage* encoded_image,
56       CodecSpecificInfo* codec_specific) override;
57 
58   SequenceChecker sequence_checker_;
59 
60   class FakeFecControllerOverride : public FecControllerOverride {
61    public:
62     ~FakeFecControllerOverride() override = default;
63 
SetFecAllowed(bool fec_allowed)64     void SetFecAllowed(bool fec_allowed) override {}
65   };
66 
67   FakeFecControllerOverride fec_controller_override_
68       RTC_GUARDED_BY(sequence_checker_);
69 
70   std::unique_ptr<Vp8FrameBufferController> frame_buffer_controller_
71       RTC_GUARDED_BY(sequence_checker_);
72 };
73 
74 }  // namespace test
75 }  // namespace webrtc
76 
77 #endif  // TEST_FAKE_VP8_ENCODER_H_
78