Bug 1864652 - Expose settings for Global Privacy Control. r=geckoview-reviewers,ohall...
[gecko.git] / third_party / libwebrtc / test / video_decoder_proxy_factory.h
blobf2b318eadf7bb9a003b42d62d54eaca0454ae4b9
1 /*
2 * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
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 */
11 #ifndef TEST_VIDEO_DECODER_PROXY_FACTORY_H_
12 #define TEST_VIDEO_DECODER_PROXY_FACTORY_H_
14 #include <memory>
15 #include <vector>
17 #include "api/video_codecs/video_decoder.h"
18 #include "api/video_codecs/video_decoder_factory.h"
20 namespace webrtc {
21 namespace test {
23 // A decoder factory with a single underlying VideoDecoder object, intended for
24 // test purposes. Each call to CreateVideoDecoder returns a proxy for the same
25 // decoder, typically an instance of FakeDecoder or MockEncoder.
26 class VideoDecoderProxyFactory final : public VideoDecoderFactory {
27 public:
28 explicit VideoDecoderProxyFactory(VideoDecoder* decoder)
29 : decoder_(decoder) {}
31 // Unused by tests.
32 std::vector<SdpVideoFormat> GetSupportedFormats() const override {
33 RTC_DCHECK_NOTREACHED();
34 return {};
37 std::unique_ptr<VideoDecoder> CreateVideoDecoder(
38 const SdpVideoFormat& format) override {
39 return std::make_unique<DecoderProxy>(decoder_);
42 private:
43 // Wrapper class, since CreateVideoDecoder needs to surrender
44 // ownership to the object it returns.
45 class DecoderProxy final : public VideoDecoder {
46 public:
47 explicit DecoderProxy(VideoDecoder* decoder) : decoder_(decoder) {}
49 private:
50 int32_t Decode(const EncodedImage& input_image,
51 int64_t render_time_ms) override {
52 return decoder_->Decode(input_image, render_time_ms);
54 bool Configure(const Settings& settings) override {
55 return decoder_->Configure(settings);
57 int32_t RegisterDecodeCompleteCallback(
58 DecodedImageCallback* callback) override {
59 return decoder_->RegisterDecodeCompleteCallback(callback);
61 int32_t Release() override { return decoder_->Release(); }
62 DecoderInfo GetDecoderInfo() const override {
63 return decoder_->GetDecoderInfo();
65 const char* ImplementationName() const override {
66 return decoder_->ImplementationName();
69 VideoDecoder* const decoder_;
72 VideoDecoder* const decoder_;
75 } // namespace test
76 } // namespace webrtc
78 #endif // TEST_VIDEO_DECODER_PROXY_FACTORY_H_