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

Unified Diff: webrtc/media/base/codec_unittest.cc

Issue 2459633002: Add functionality for parsing H264 profile-level-id (Closed)
Patch Set: Created 4 years, 2 months 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/media/base/codec_unittest.cc
diff --git a/webrtc/media/base/codec_unittest.cc b/webrtc/media/base/codec_unittest.cc
index 53880043b19da66a1f8ad6a296f0c83dc15d54d1..488eeba76e58bf5a1e435c1856c5c19167df1618 100644
--- a/webrtc/media/base/codec_unittest.cc
+++ b/webrtc/media/base/codec_unittest.cc
@@ -9,6 +9,7 @@
*/
#include "webrtc/base/gunit.h"
+#include "webrtc/common_types.h"
#include "webrtc/media/base/codec.h"
using cricket::AudioCodec;
@@ -317,3 +318,67 @@ TEST_F(CodecTest, TestToCodecParameters) {
EXPECT_EQ(44100, codec_params_2.clock_rate);
EXPECT_EQ(2, codec_params_2.channels);
}
+
+TEST(H264ProfileLevelIdParsing, TestInvalid) {
+ // Malformed strings.
tommi 2016/10/28 10:09:47 test too long strings too?
magjed_webrtc 2016/10/28 14:59:27 Done, I added a test with 8 hex characters. I also
+ EXPECT_FALSE(webrtc::ParseH264ProfileLevelId(""));
+ EXPECT_FALSE(webrtc::ParseH264ProfileLevelId(" 42e01f"));
+ EXPECT_FALSE(webrtc::ParseH264ProfileLevelId("e01f"));
+ EXPECT_FALSE(webrtc::ParseH264ProfileLevelId("gggggg"));
+
+ // Invalid level.
+ EXPECT_FALSE(webrtc::ParseH264ProfileLevelId("42e000"));
+ EXPECT_FALSE(webrtc::ParseH264ProfileLevelId("42e00f"));
+ EXPECT_FALSE(webrtc::ParseH264ProfileLevelId("42e0ff"));
+
+ // Invalid profile.
+ EXPECT_FALSE(webrtc::ParseH264ProfileLevelId("42e11f"));
+ EXPECT_FALSE(webrtc::ParseH264ProfileLevelId("58601f"));
+ EXPECT_FALSE(webrtc::ParseH264ProfileLevelId("64e01f"));
+}
+
+TEST(H264ProfileLevelIdParsing, TestLevel) {
+ EXPECT_EQ(webrtc::kH264Level3_1,
+ webrtc::ParseH264ProfileLevelId("42e01f")->level);
+ EXPECT_EQ(webrtc::kH264Level1_1,
+ webrtc::ParseH264ProfileLevelId("42e00b")->level);
+ EXPECT_EQ(webrtc::kH264Level1_b,
+ webrtc::ParseH264ProfileLevelId("42f00b")->level);
+ EXPECT_EQ(webrtc::kH264Level4_2,
+ webrtc::ParseH264ProfileLevelId("42C02A")->level);
+ EXPECT_EQ(webrtc::kH264Level5_2,
+ webrtc::ParseH264ProfileLevelId("640c34")->level);
+}
+
+TEST(H264ProfileLevelIdParsing, TestConstrainedBaseline) {
+ EXPECT_EQ(webrtc::kProfileConstrainedBaseline,
+ webrtc::ParseH264ProfileLevelId("42e01f")->profile);
+ EXPECT_EQ(webrtc::kProfileConstrainedBaseline,
+ webrtc::ParseH264ProfileLevelId("42C02A")->profile);
+ EXPECT_EQ(webrtc::kProfileConstrainedBaseline,
+ webrtc::ParseH264ProfileLevelId("4de01f")->profile);
+ EXPECT_EQ(webrtc::kProfileConstrainedBaseline,
+ webrtc::ParseH264ProfileLevelId("58f01f")->profile);
+}
+
+TEST(H264ProfileLevelIdParsing, TestBaseline) {
+ EXPECT_EQ(webrtc::kProfileBaseline,
+ webrtc::ParseH264ProfileLevelId("42a01f")->profile);
+ EXPECT_EQ(webrtc::kProfileBaseline,
+ webrtc::ParseH264ProfileLevelId("58A01F")->profile);
+}
+
+TEST(H264ProfileLevelIdParsing, TestMain) {
+ EXPECT_EQ(webrtc::kProfileMain,
+ webrtc::ParseH264ProfileLevelId("4D401f")->profile);
+}
+
+TEST(H264ProfileLevelIdParsing, TestHigh) {
+ EXPECT_EQ(webrtc::kProfileHigh,
+ webrtc::ParseH264ProfileLevelId("64001f")->profile);
+}
+
+TEST(H264ProfileLevelIdParsing, TestConstrainedHigh) {
+ EXPECT_EQ(webrtc::kProfileConstrainedHigh,
+ webrtc::ParseH264ProfileLevelId("640c1f")->profile);
+}

Powered by Google App Engine
This is Rietveld 408576698