1 /*
2 * Copyright (c) 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 "api/video_codecs/sdp_video_format.h"
12
13 #include <stdint.h>
14
15 #include "media/base/media_constants.h"
16 #include "test/gtest.h"
17
18 namespace webrtc {
19
20 typedef SdpVideoFormat Sdp;
21 typedef SdpVideoFormat::Parameters Params;
22
TEST(SdpVideoFormatTest,SameCodecNameNoParameters)23 TEST(SdpVideoFormatTest, SameCodecNameNoParameters) {
24 EXPECT_TRUE(Sdp("H264").IsSameCodec(Sdp("h264")));
25 EXPECT_TRUE(Sdp("VP8").IsSameCodec(Sdp("vp8")));
26 EXPECT_TRUE(Sdp("VP9").IsSameCodec(Sdp("vp9")));
27 EXPECT_TRUE(Sdp("AV1").IsSameCodec(Sdp("Av1")));
28 }
29
TEST(SdpVideoFormatTest,DifferentCodecNameNoParameters)30 TEST(SdpVideoFormatTest, DifferentCodecNameNoParameters) {
31 EXPECT_FALSE(Sdp("H264").IsSameCodec(Sdp("VP8")));
32 EXPECT_FALSE(Sdp("VP8").IsSameCodec(Sdp("VP9")));
33 EXPECT_FALSE(Sdp("AV1").IsSameCodec(Sdp("VP8")));
34 }
35
TEST(SdpVideoFormatTest,SameCodecNameSameParameters)36 TEST(SdpVideoFormatTest, SameCodecNameSameParameters) {
37 EXPECT_TRUE(Sdp("VP9").IsSameCodec(Sdp("VP9", Params{{"profile-id", "0"}})));
38 EXPECT_TRUE(Sdp("VP9", Params{{"profile-id", "0"}})
39 .IsSameCodec(Sdp("VP9", Params{{"profile-id", "0"}})));
40 EXPECT_TRUE(Sdp("VP9", Params{{"profile-id", "2"}})
41 .IsSameCodec(Sdp("VP9", Params{{"profile-id", "2"}})));
42 EXPECT_TRUE(
43 Sdp("H264", Params{{"profile-level-id", "42e01f"}})
44 .IsSameCodec(Sdp("H264", Params{{"profile-level-id", "42e01f"}})));
45 EXPECT_TRUE(
46 Sdp("H264", Params{{"profile-level-id", "640c34"}})
47 .IsSameCodec(Sdp("H264", Params{{"profile-level-id", "640c34"}})));
48 EXPECT_TRUE(Sdp("AV1").IsSameCodec(Sdp("AV1", Params{{"profile", "0"}})));
49 EXPECT_TRUE(Sdp("AV1", Params{{"profile", "0"}})
50 .IsSameCodec(Sdp("AV1", Params{{"profile", "0"}})));
51 EXPECT_TRUE(Sdp("AV1", Params{{"profile", "2"}})
52 .IsSameCodec(Sdp("AV1", Params{{"profile", "2"}})));
53 }
54
TEST(SdpVideoFormatTest,SameCodecNameDifferentParameters)55 TEST(SdpVideoFormatTest, SameCodecNameDifferentParameters) {
56 EXPECT_FALSE(Sdp("VP9").IsSameCodec(Sdp("VP9", Params{{"profile-id", "2"}})));
57 EXPECT_FALSE(Sdp("VP9", Params{{"profile-id", "0"}})
58 .IsSameCodec(Sdp("VP9", Params{{"profile-id", "1"}})));
59 EXPECT_FALSE(Sdp("VP9", Params{{"profile-id", "2"}})
60 .IsSameCodec(Sdp("VP9", Params{{"profile-id", "0"}})));
61 EXPECT_FALSE(
62 Sdp("H264", Params{{"profile-level-id", "42e01f"}})
63 .IsSameCodec(Sdp("H264", Params{{"profile-level-id", "640c34"}})));
64 EXPECT_FALSE(
65 Sdp("H264", Params{{"profile-level-id", "640c34"}})
66 .IsSameCodec(Sdp("H264", Params{{"profile-level-id", "42f00b"}})));
67 EXPECT_FALSE(Sdp("AV1").IsSameCodec(Sdp("AV1", Params{{"profile", "1"}})));
68 EXPECT_FALSE(Sdp("AV1", Params{{"profile", "0"}})
69 .IsSameCodec(Sdp("AV1", Params{{"profile", "1"}})));
70 EXPECT_FALSE(Sdp("AV1", Params{{"profile", "1"}})
71 .IsSameCodec(Sdp("AV1", Params{{"profile", "2"}})));
72 }
73
TEST(SdpVideoFormatTest,DifferentCodecNameSameParameters)74 TEST(SdpVideoFormatTest, DifferentCodecNameSameParameters) {
75 EXPECT_FALSE(Sdp("VP9", Params{{"profile-id", "0"}})
76 .IsSameCodec(Sdp("H264", Params{{"profile-id", "0"}})));
77 EXPECT_FALSE(Sdp("VP9", Params{{"profile-id", "2"}})
78 .IsSameCodec(Sdp("VP8", Params{{"profile-id", "2"}})));
79 EXPECT_FALSE(
80 Sdp("H264", Params{{"profile-level-id", "42e01f"}})
81 .IsSameCodec(Sdp("VP9", Params{{"profile-level-id", "42e01f"}})));
82 EXPECT_FALSE(
83 Sdp("H264", Params{{"profile-level-id", "640c34"}})
84 .IsSameCodec(Sdp("VP8", Params{{"profile-level-id", "640c34"}})));
85 EXPECT_FALSE(Sdp("AV1", Params{{"profile", "0"}})
86 .IsSameCodec(Sdp("H264", Params{{"profile", "0"}})));
87 EXPECT_FALSE(Sdp("AV1", Params{{"profile", "2"}})
88 .IsSameCodec(Sdp("VP9", Params{{"profile", "2"}})));
89 }
90
TEST(SdpVideoFormatTest,H264PacketizationMode)91 TEST(SdpVideoFormatTest, H264PacketizationMode) {
92 // The default packetization mode is 0.
93 EXPECT_TRUE(Sdp("H264", Params{{cricket::kH264FmtpPacketizationMode, "0"}})
94 .IsSameCodec(Sdp("H264")));
95 EXPECT_FALSE(Sdp("H264", Params{{cricket::kH264FmtpPacketizationMode, "1"}})
96 .IsSameCodec(Sdp("H264")));
97
98 EXPECT_TRUE(
99 Sdp("H264", Params{{cricket::kH264FmtpPacketizationMode, "1"}})
100 .IsSameCodec(
101 Sdp("H264", Params{{cricket::kH264FmtpPacketizationMode, "1"}})));
102 }
103 } // namespace webrtc
104