• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2020 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 "call/adaptation/video_source_restrictions.h"
12 
13 #include "test/gtest.h"
14 
15 namespace webrtc {
16 
17 namespace {
18 
19 const size_t kHdPixels = 1280 * 720;
20 
21 const VideoSourceRestrictions kUnlimited;
22 const VideoSourceRestrictions k15fps(absl::nullopt, absl::nullopt, 15.0);
23 const VideoSourceRestrictions kHd(kHdPixels, kHdPixels, absl::nullopt);
24 const VideoSourceRestrictions kHd15fps(kHdPixels, kHdPixels, 15.0);
25 const VideoSourceRestrictions kVga7fps(kHdPixels / 2, kHdPixels / 2, 7.0);
26 
RestrictionsFromMaxPixelsPerFrame(size_t max_pixels_per_frame)27 VideoSourceRestrictions RestrictionsFromMaxPixelsPerFrame(
28     size_t max_pixels_per_frame) {
29   return VideoSourceRestrictions(max_pixels_per_frame, absl::nullopt,
30                                  absl::nullopt);
31 }
32 
RestrictionsFromMaxFrameRate(double max_frame_rate)33 VideoSourceRestrictions RestrictionsFromMaxFrameRate(double max_frame_rate) {
34   return VideoSourceRestrictions(absl::nullopt, absl::nullopt, max_frame_rate);
35 }
36 
37 }  // namespace
38 
TEST(VideoSourceRestrictionsTest,DidIncreaseResolution)39 TEST(VideoSourceRestrictionsTest, DidIncreaseResolution) {
40   // smaller restrictions -> larger restrictions
41   EXPECT_TRUE(DidIncreaseResolution(RestrictionsFromMaxPixelsPerFrame(10),
42                                     RestrictionsFromMaxPixelsPerFrame(11)));
43   // unrestricted -> restricted
44   EXPECT_FALSE(DidIncreaseResolution(VideoSourceRestrictions(),
45                                      RestrictionsFromMaxPixelsPerFrame(10)));
46   // restricted -> unrestricted
47   EXPECT_TRUE(DidIncreaseResolution(RestrictionsFromMaxPixelsPerFrame(10),
48                                     VideoSourceRestrictions()));
49   // restricted -> equally restricted
50   EXPECT_FALSE(DidIncreaseResolution(RestrictionsFromMaxPixelsPerFrame(10),
51                                      RestrictionsFromMaxPixelsPerFrame(10)));
52   // unrestricted -> unrestricted
53   EXPECT_FALSE(DidIncreaseResolution(VideoSourceRestrictions(),
54                                      VideoSourceRestrictions()));
55   // larger restrictions -> smaller restrictions
56   EXPECT_FALSE(DidIncreaseResolution(RestrictionsFromMaxPixelsPerFrame(10),
57                                      RestrictionsFromMaxPixelsPerFrame(9)));
58 }
59 
TEST(VideoSourceRestrictionsTest,DidDecreaseFrameRate)60 TEST(VideoSourceRestrictionsTest, DidDecreaseFrameRate) {
61   // samller restrictions -> larger restrictions
62   EXPECT_FALSE(DidDecreaseFrameRate(RestrictionsFromMaxFrameRate(10),
63                                     RestrictionsFromMaxFrameRate(11)));
64   // unrestricted -> restricted
65   EXPECT_TRUE(DidDecreaseFrameRate(VideoSourceRestrictions(),
66                                    RestrictionsFromMaxFrameRate(10)));
67   // restricted -> unrestricted
68   EXPECT_FALSE(DidDecreaseFrameRate(RestrictionsFromMaxFrameRate(10),
69                                     VideoSourceRestrictions()));
70   // restricted -> equally restricted
71   EXPECT_FALSE(DidDecreaseFrameRate(RestrictionsFromMaxFrameRate(10),
72                                     RestrictionsFromMaxFrameRate(10)));
73   // unrestricted -> unrestricted
74   EXPECT_FALSE(DidDecreaseFrameRate(VideoSourceRestrictions(),
75                                     VideoSourceRestrictions()));
76   // larger restrictions -> samller restrictions
77   EXPECT_TRUE(DidDecreaseFrameRate(RestrictionsFromMaxFrameRate(10),
78                                    RestrictionsFromMaxFrameRate(9)));
79 }
80 
TEST(VideoSourceRestrictionsTest,DidRestrictionsChangeFalseForSame)81 TEST(VideoSourceRestrictionsTest, DidRestrictionsChangeFalseForSame) {
82   EXPECT_FALSE(DidRestrictionsDecrease(kUnlimited, kUnlimited));
83   EXPECT_FALSE(DidRestrictionsIncrease(kUnlimited, kUnlimited));
84 
85   // Both resolution and fps restricted.
86   EXPECT_FALSE(DidRestrictionsDecrease(kHd15fps, kHd15fps));
87   EXPECT_FALSE(DidRestrictionsIncrease(kHd15fps, kHd15fps));
88 }
89 
TEST(VideoSourceRestrictions,DidRestrictionsIncreaseTrueWhenPixelsOrFrameRateDecreased)90 TEST(VideoSourceRestrictions,
91      DidRestrictionsIncreaseTrueWhenPixelsOrFrameRateDecreased) {
92   // Unlimited > Limited resolution.
93   EXPECT_TRUE(DidRestrictionsIncrease(kUnlimited, kHd));
94   // Unlimited > limited fps.
95   EXPECT_TRUE(DidRestrictionsIncrease(kUnlimited, k15fps));
96   // Unlimited > limited resolution + limited fps.
97   EXPECT_TRUE(DidRestrictionsIncrease(kUnlimited, kHd15fps));
98   // Limited resolution > limited resolution + limited fps.
99   EXPECT_TRUE(DidRestrictionsIncrease(kHd, kHd15fps));
100   // Limited fps > limited resolution + limited fps.
101   EXPECT_TRUE(DidRestrictionsIncrease(k15fps, kHd15fps));
102   // Limited resolution + fps > More limited resolution + more limited fps
103   EXPECT_TRUE(DidRestrictionsIncrease(kHd15fps, kVga7fps));
104 }
105 
TEST(VideoSourceRestrictions,DidRestrictionsDecreaseTrueWhenPixelsOrFrameRateIncreased)106 TEST(VideoSourceRestrictions,
107      DidRestrictionsDecreaseTrueWhenPixelsOrFrameRateIncreased) {
108   // Limited resolution < Unlimited.
109   EXPECT_TRUE(DidRestrictionsDecrease(kHd, kUnlimited));
110   // Limited fps < Unlimited.
111   EXPECT_TRUE(DidRestrictionsDecrease(k15fps, kUnlimited));
112   // Limited resolution + limited fps < unlimited.
113   EXPECT_TRUE(DidRestrictionsDecrease(kHd15fps, kUnlimited));
114   // Limited resolution + limited fps < limited resolution.
115   EXPECT_TRUE(DidRestrictionsDecrease(kHd15fps, kHd));
116   // Limited resolution + limited fps < limited fps.
117   EXPECT_TRUE(DidRestrictionsDecrease(kHd15fps, k15fps));
118   // More limited resolution + more limited fps < limited resolution + fps
119   EXPECT_TRUE(DidRestrictionsDecrease(kVga7fps, kHd15fps));
120 }
121 
TEST(VideoSourceRestrictions,DidRestrictionsChangeFalseWhenFrameRateAndPixelsChangeDifferently)122 TEST(VideoSourceRestrictions,
123      DidRestrictionsChangeFalseWhenFrameRateAndPixelsChangeDifferently) {
124   // One changed framerate, the other resolution; not an increase or decrease.
125   EXPECT_FALSE(DidRestrictionsIncrease(kHd, k15fps));
126   EXPECT_FALSE(DidRestrictionsDecrease(kHd, k15fps));
127 }
128 
129 }  // namespace webrtc
130