RFC 3984 sprop-parameter-sets SDP unit test
BUG=webrtc:5948
Review-Url: https://codereview.webrtc.org/2023913002
Cr-Commit-Position: refs/heads/master@{#13026}
diff --git a/webrtc/api/webrtcsdp_unittest.cc b/webrtc/api/webrtcsdp_unittest.cc
index 5c69d50..10ff0ae 100644
--- a/webrtc/api/webrtcsdp_unittest.cc
+++ b/webrtc/api/webrtcsdp_unittest.cc
@@ -2915,6 +2915,42 @@
EXPECT_EQ(found->second, "40");
}
+TEST_F(WebRtcSdpTest, DeserializeVideoFmtpWithSprops) {
+ JsepSessionDescription jdesc_output(kDummyString);
+
+ const char kSdpWithFmtpString[] =
+ "v=0\r\n"
+ "o=- 18446744069414584320 18446462598732840960 IN IP4 127.0.0.1\r\n"
+ "s=-\r\n"
+ "t=0 0\r\n"
+ "m=video 49170 RTP/AVP 98\r\n"
+ "a=rtpmap:98 H264/90000\r\n"
+ "a=fmtp:98 profile-level-id=42A01E; "
+ "sprop-parameter-sets=Z0IACpZTBYmI,aMljiA==\r\n";
+
+ // Deserialize.
+ SdpParseError error;
+ EXPECT_TRUE(
+ webrtc::SdpDeserialize(kSdpWithFmtpString, &jdesc_output, &error));
+
+ const ContentInfo* vc = GetFirstVideoContent(jdesc_output.description());
+ ASSERT_TRUE(vc != NULL);
+ const VideoContentDescription* vcd =
+ static_cast<const VideoContentDescription*>(vc->description);
+ ASSERT_TRUE(vcd != NULL);
+ ASSERT_FALSE(vcd->codecs().empty());
+ cricket::VideoCodec h264 = vcd->codecs()[0];
+ EXPECT_EQ("H264", h264.name);
+ EXPECT_EQ(98, h264.id);
+ cricket::CodecParameterMap::const_iterator found =
+ h264.params.find("profile-level-id");
+ ASSERT_TRUE(found != h264.params.end());
+ EXPECT_EQ(found->second, "42A01E");
+ found = h264.params.find("sprop-parameter-sets");
+ ASSERT_TRUE(found != h264.params.end());
+ EXPECT_EQ(found->second, "Z0IACpZTBYmI,aMljiA==");
+}
+
TEST_F(WebRtcSdpTest, DeserializeVideoFmtpWithSpace) {
JsepSessionDescription jdesc_output(kDummyString);