blob: 0208c0dd66080311f478786ef387d0413d9543b6 [file] [log] [blame]
Åsa Perssona7e34d32021-01-20 15:36:13 +01001/*
2 * Copyright 2021 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#include "rtc_base/experiments/encoder_info_settings.h"
12
13#include "rtc_base/gunit.h"
14#include "test/field_trial.h"
15#include "test/gmock.h"
16
17namespace webrtc {
18
19TEST(SimulcastEncoderAdapterSettingsTest, NoValuesWithoutFieldTrial) {
20 SimulcastEncoderAdapterEncoderInfoSettings settings;
21 EXPECT_EQ(absl::nullopt, settings.requested_resolution_alignment());
22 EXPECT_FALSE(settings.apply_alignment_to_all_simulcast_layers());
23 EXPECT_TRUE(settings.resolution_bitrate_limits().empty());
24}
25
26TEST(SimulcastEncoderAdapterSettingsTest, NoValueForInvalidAlignment) {
27 webrtc::test::ScopedFieldTrials field_trials(
28 "WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
29 "requested_resolution_alignment:0/");
30
31 SimulcastEncoderAdapterEncoderInfoSettings settings;
32 EXPECT_EQ(absl::nullopt, settings.requested_resolution_alignment());
33}
34
35TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionAlignment) {
36 webrtc::test::ScopedFieldTrials field_trials(
37 "WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
38 "requested_resolution_alignment:2/");
39
40 SimulcastEncoderAdapterEncoderInfoSettings settings;
41 EXPECT_EQ(2, settings.requested_resolution_alignment());
42 EXPECT_FALSE(settings.apply_alignment_to_all_simulcast_layers());
43 EXPECT_TRUE(settings.resolution_bitrate_limits().empty());
44}
45
46TEST(SimulcastEncoderAdapterSettingsTest, GetApplyAlignment) {
47 webrtc::test::ScopedFieldTrials field_trials(
48 "WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
49 "requested_resolution_alignment:3,"
50 "apply_alignment_to_all_simulcast_layers/");
51
52 SimulcastEncoderAdapterEncoderInfoSettings settings;
53 EXPECT_EQ(3, settings.requested_resolution_alignment());
54 EXPECT_TRUE(settings.apply_alignment_to_all_simulcast_layers());
55 EXPECT_TRUE(settings.resolution_bitrate_limits().empty());
56}
57
58TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionBitrateLimits) {
59 webrtc::test::ScopedFieldTrials field_trials(
60 "WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
61 "frame_size_pixels:123,"
62 "min_start_bitrate_bps:11000,"
63 "min_bitrate_bps:44000,"
64 "max_bitrate_bps:77000/");
65
66 SimulcastEncoderAdapterEncoderInfoSettings settings;
67 EXPECT_EQ(absl::nullopt, settings.requested_resolution_alignment());
68 EXPECT_FALSE(settings.apply_alignment_to_all_simulcast_layers());
69 EXPECT_THAT(settings.resolution_bitrate_limits(),
70 ::testing::ElementsAre(VideoEncoder::ResolutionBitrateLimits{
71 123, 11000, 44000, 77000}));
72}
73
74TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionBitrateLimitsWithList) {
75 webrtc::test::ScopedFieldTrials field_trials(
76 "WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
77 "frame_size_pixels:123|456|789,"
78 "min_start_bitrate_bps:11000|22000|33000,"
79 "min_bitrate_bps:44000|55000|66000,"
80 "max_bitrate_bps:77000|88000|99000/");
81
82 SimulcastEncoderAdapterEncoderInfoSettings settings;
83 EXPECT_THAT(
84 settings.resolution_bitrate_limits(),
85 ::testing::ElementsAre(
86 VideoEncoder::ResolutionBitrateLimits{123, 11000, 44000, 77000},
87 VideoEncoder::ResolutionBitrateLimits{456, 22000, 55000, 88000},
88 VideoEncoder::ResolutionBitrateLimits{789, 33000, 66000, 99000}));
89}
90
91} // namespace webrtc