Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Side by Side Diff: webrtc/common_video/h264/profile_level_id_unittest.cc

Issue 2481033003: Add helper functions for negotiating H264 profile level id (Closed)
Patch Set: Add more comments. Remove DecideSendProfileLevelId. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/common_video/h264/profile_level_id.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 } 117 }
118 118
119 TEST(H264ProfileLevelId, TestToStringInvalid) { 119 TEST(H264ProfileLevelId, TestToStringInvalid) {
120 EXPECT_FALSE(ProfileLevelIdToString(ProfileLevelId(kProfileHigh, kLevel1_b))); 120 EXPECT_FALSE(ProfileLevelIdToString(ProfileLevelId(kProfileHigh, kLevel1_b)));
121 EXPECT_FALSE(ProfileLevelIdToString( 121 EXPECT_FALSE(ProfileLevelIdToString(
122 ProfileLevelId(kProfileConstrainedHigh, kLevel1_b))); 122 ProfileLevelId(kProfileConstrainedHigh, kLevel1_b)));
123 EXPECT_FALSE(ProfileLevelIdToString( 123 EXPECT_FALSE(ProfileLevelIdToString(
124 ProfileLevelId(static_cast<Profile>(255), kLevel3_1))); 124 ProfileLevelId(static_cast<Profile>(255), kLevel3_1)));
125 } 125 }
126 126
127 TEST(H264ProfileLevelId, TestParseSdpProfileLevelIdEmpty) {
128 const rtc::Optional<ProfileLevelId> profile_level_id =
129 ParseSdpProfileLevelId(CodecParameterMap());
130 EXPECT_TRUE(profile_level_id);
131 EXPECT_EQ(kProfileConstrainedBaseline, profile_level_id->profile);
132 EXPECT_EQ(kLevel3_1, profile_level_id->level);
133 }
134
135 TEST(H264ProfileLevelId, TestParseSdpProfileLevelIdConstrainedHigh) {
136 CodecParameterMap params;
137 params["profile-level-id"] = "640c2a";
138 const rtc::Optional<ProfileLevelId> profile_level_id =
139 ParseSdpProfileLevelId(params);
140 EXPECT_TRUE(profile_level_id);
141 EXPECT_EQ(kProfileConstrainedHigh, profile_level_id->profile);
142 EXPECT_EQ(kLevel4_2, profile_level_id->level);
143 }
144
145 TEST(H264ProfileLevelId, TestParseSdpProfileLevelIdInvalid) {
146 CodecParameterMap params;
147 params["profile-level-id"] = "foobar";
148 EXPECT_FALSE(ParseSdpProfileLevelId(params));
149 }
150
151 TEST(H264ProfileLevelId, TestGenerateProfileLevelIdForAnswerEmpty) {
152 CodecParameterMap answer_params;
153 GenerateProfileLevelIdForAnswer(CodecParameterMap(), CodecParameterMap(),
154 &answer_params);
155 EXPECT_EQ("42e01f", answer_params["profile-level-id"]);
156 }
157
158 TEST(H264ProfileLevelId,
159 TestGenerateProfileLevelIdForAnswerLevelSymmetryCapped) {
160 CodecParameterMap low_level;
161 low_level["profile-level-id"] = "42e015";
162 CodecParameterMap high_level;
163 high_level["profile-level-id"] = "42e01f";
164
165 // Level asymmetry is not allowed; test that answer level is the lower of the
166 // local and remote levels.
167 CodecParameterMap answer_params;
168 GenerateProfileLevelIdForAnswer(low_level /* local_supported */,
169 high_level /* remote_offered */,
170 &answer_params);
171 EXPECT_EQ("42e015", answer_params["profile-level-id"]);
172
173 CodecParameterMap answer_params2;
174 GenerateProfileLevelIdForAnswer(high_level /* local_supported */,
175 low_level /* remote_offered */,
176 &answer_params2);
177 EXPECT_EQ("42e015", answer_params2["profile-level-id"]);
178 }
179
180 TEST(H264ProfileLevelId,
181 TestGenerateProfileLevelIdForAnswerConstrainedBaselineLevelAsymmetry) {
182 CodecParameterMap local_params;
183 local_params["profile-level-id"] = "42e01f";
184 local_params["level-asymmetry-allowed"] = "1";
185 CodecParameterMap remote_params;
186 remote_params["profile-level-id"] = "42e015";
187 remote_params["level-asymmetry-allowed"] = "1";
188 CodecParameterMap answer_params;
189 GenerateProfileLevelIdForAnswer(local_params, remote_params, &answer_params);
190 // When level asymmetry is allowed, we can answer a higher level than what was
191 // offered.
192 EXPECT_EQ("42e01f", answer_params["profile-level-id"]);
193 }
194
127 } // namespace H264 195 } // namespace H264
128 } // namespace webrtc 196 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/common_video/h264/profile_level_id.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698