Don't write spaces after semicolons in FMTP lines.

Reference: RFC 6184 section 8.2.1 and examples.

BUG=webrtc:5793
NOTRY=True

Review URL: https://codereview.webrtc.org/1888373002

Cr-Commit-Position: refs/heads/master@{#12383}
diff --git a/webrtc/api/objctests/RTCSessionDescriptionTest.mm b/webrtc/api/objctests/RTCSessionDescriptionTest.mm
index 605c5f1..37ac65c 100644
--- a/webrtc/api/objctests/RTCSessionDescriptionTest.mm
+++ b/webrtc/api/objctests/RTCSessionDescriptionTest.mm
@@ -81,7 +81,7 @@
            "a=sendrecv\r\n"
            "a=rtcp-mux\r\n"
            "a=rtpmap:111 opus/48000/2\r\n"
-           "a=fmtp:111 minptime=10; useinbandfec=1\r\n"
+           "a=fmtp:111 minptime=10;useinbandfec=1\r\n"
            "a=rtpmap:103 ISAC/16000\r\n"
            "a=rtpmap:9 G722/8000\r\n"
            "a=rtpmap:0 PCMU/8000\r\n"
diff --git a/webrtc/api/webrtcsdp.cc b/webrtc/api/webrtcsdp.cc
index 8497f4c..10f9922 100644
--- a/webrtc/api/webrtcsdp.cc
+++ b/webrtc/api/webrtcsdp.cc
@@ -1564,11 +1564,13 @@
                          std::ostringstream* os) {
   for (cricket::CodecParameterMap::const_iterator fmtp = parameters.begin();
        fmtp != parameters.end(); ++fmtp) {
-    // Each new parameter, except the first one starts with ";" and " ".
-    if (fmtp != parameters.begin()) {
+    // Parameters are a semicolon-separated list, no spaces.
+    // The list is separated from the header by a space.
+    if (fmtp == parameters.begin()) {
+      *os << kSdpDelimiterSpace;
+    } else {
       *os << kSdpDelimiterSemicolon;
     }
-    *os << kSdpDelimiterSpace;
     WriteFmtpParameter(fmtp->first, fmtp->second, os);
   }
 }
diff --git a/webrtc/api/webrtcsdp_unittest.cc b/webrtc/api/webrtcsdp_unittest.cc
index 2b63c79..f222b3f 100644
--- a/webrtc/api/webrtcsdp_unittest.cc
+++ b/webrtc/api/webrtcsdp_unittest.cc
@@ -2114,6 +2114,9 @@
   EXPECT_NE(std::string::npos, fmtp_value.find("level-asymmetry-allowed=1"));
   EXPECT_NE(std::string::npos, fmtp_value.find("packetization-mode=1"));
   EXPECT_NE(std::string::npos, fmtp_value.find("profile-level-id=42e01f"));
+  // Check that there are no spaces after semicolons.
+  // https://bugs.webrtc.org/5793
+  EXPECT_EQ(std::string::npos, fmtp_value.find("; "));
 }
 
 TEST_F(WebRtcSdpTest, DeserializeSessionDescription) {