• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2019 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 "media/base/sdp_fmtp_utils.h"
12 
13 #include <string.h>
14 #include <map>
15 #include <utility>
16 
17 #include "rtc_base/string_to_number.h"
18 #include "test/gtest.h"
19 
20 namespace webrtc {
21 namespace {
22 // Max frame rate for VP8 and VP9 video.
23 const char kVPxFmtpMaxFrameRate[] = "max-fr";
24 // Max frame size for VP8 and VP9 video.
25 const char kVPxFmtpMaxFrameSize[] = "max-fs";
26 }  // namespace
27 
TEST(SdpFmtpUtilsTest,MaxFrameRateIsMissingOrInvalid)28 TEST(SdpFmtpUtilsTest, MaxFrameRateIsMissingOrInvalid) {
29   SdpVideoFormat::Parameters params;
30   absl::optional<int> empty = ParseSdpForVPxMaxFrameRate(params);
31   EXPECT_FALSE(empty);
32   params[kVPxFmtpMaxFrameRate] = "-1";
33   EXPECT_FALSE(ParseSdpForVPxMaxFrameRate(params));
34   params[kVPxFmtpMaxFrameRate] = "0";
35   EXPECT_FALSE(ParseSdpForVPxMaxFrameRate(params));
36   params[kVPxFmtpMaxFrameRate] = "abcde";
37   EXPECT_FALSE(ParseSdpForVPxMaxFrameRate(params));
38 }
39 
TEST(SdpFmtpUtilsTest,MaxFrameRateIsSpecified)40 TEST(SdpFmtpUtilsTest, MaxFrameRateIsSpecified) {
41   SdpVideoFormat::Parameters params;
42   params[kVPxFmtpMaxFrameRate] = "30";
43   EXPECT_EQ(ParseSdpForVPxMaxFrameRate(params), 30);
44   params[kVPxFmtpMaxFrameRate] = "60";
45   EXPECT_EQ(ParseSdpForVPxMaxFrameRate(params), 60);
46 }
47 
TEST(SdpFmtpUtilsTest,MaxFrameSizeIsMissingOrInvalid)48 TEST(SdpFmtpUtilsTest, MaxFrameSizeIsMissingOrInvalid) {
49   SdpVideoFormat::Parameters params;
50   absl::optional<int> empty = ParseSdpForVPxMaxFrameSize(params);
51   EXPECT_FALSE(empty);
52   params[kVPxFmtpMaxFrameSize] = "-1";
53   EXPECT_FALSE(ParseSdpForVPxMaxFrameSize(params));
54   params[kVPxFmtpMaxFrameSize] = "0";
55   EXPECT_FALSE(ParseSdpForVPxMaxFrameSize(params));
56   params[kVPxFmtpMaxFrameSize] = "abcde";
57   EXPECT_FALSE(ParseSdpForVPxMaxFrameSize(params));
58 }
59 
TEST(SdpFmtpUtilsTest,MaxFrameSizeIsSpecified)60 TEST(SdpFmtpUtilsTest, MaxFrameSizeIsSpecified) {
61   SdpVideoFormat::Parameters params;
62   params[kVPxFmtpMaxFrameSize] = "8100";  // 1920 x 1080 / (16^2)
63   EXPECT_EQ(ParseSdpForVPxMaxFrameSize(params), 1920 * 1080);
64   params[kVPxFmtpMaxFrameSize] = "32400";  // 3840 x 2160 / (16^2)
65   EXPECT_EQ(ParseSdpForVPxMaxFrameSize(params), 3840 * 2160);
66 }
67 
68 }  // namespace webrtc
69