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