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