xref: /aosp_15_r20/external/webrtc/api/video_codecs/test/sdp_video_format_unittest.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
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