diff --git a/pc/media_protocol_names.cc b/pc/media_protocol_names.cc
index 0b091ee..667535b 100644
--- a/pc/media_protocol_names.cc
+++ b/pc/media_protocol_names.cc
@@ -17,16 +17,42 @@
 
 namespace cricket {
 
+// The official registry of RTP parameters is at
+// http://www.iana.org/assignments/rtp-parameters/rtp-parameters.xml
+// The UDP/DTLS and TCP/DTLS prefixes are not registered there.
+
 // There are multiple variants of the RTP protocol stack, including
 // UDP/TLS/RTP/SAVPF (WebRTC default), RTP/AVP, RTP/AVPF, RTP/SAVPF,
 // TCP/DTLS/RTP/SAVPF and so on. We accept anything that has RTP/
 // embedded in it somewhere as being an RTP protocol.
 const char kMediaProtocolRtpPrefix[] = "RTP/";
 
+// Protocol names generated by WebRTC
 const char kMediaProtocolSctp[] = "SCTP";
-const char kMediaProtocolDtlsSctp[] = "DTLS/SCTP";
 const char kMediaProtocolUdpDtlsSctp[] = "UDP/DTLS/SCTP";
+const char kMediaProtocolDtlsSctp[] = "DTLS/SCTP";
 const char kMediaProtocolTcpDtlsSctp[] = "TCP/DTLS/SCTP";
+// RFC5124
+const char kMediaProtocolDtlsSavpf[] = "UDP/TLS/RTP/SAVPF";
+const char kMediaProtocolSavpf[] = "RTP/SAVPF";
+const char kMediaProtocolAvpf[] = "RTP/AVPF";
+
+namespace {
+
+// Protocol names that we tolerate, but do not generate.
+// We always generate offers with "UDP/TLS/RTP/SAVPF" when using DTLS-SRTP,
+// but we tolerate "RTP/SAVPF" and "RTP/SAVP" and the "UDP/TLS" and "TCP/TLS"
+// prefixes in offers we receive, for compatibility.
+// RFC4585
+const char kMediaProtocolSavp[] = "RTP/SAVP";
+const char kMediaProtocolAvp[] = "RTP/AVP";
+
+const char kMediaProtocolTcpTlsSavpf[] = "TCP/TLS/RTP/SAVPF";
+const char kMediaProtocolUdpTlsSavpf[] = "UDP/TLS/RTP/SAVPF";
+const char kMediaProtocolTcpTlsSavp[] = "TCP/TLS/RTP/SAVP";
+const char kMediaProtocolUdpTlsSavp[] = "UDP/TLS/RTP/SAVP";
+
+}  // namespace
 
 bool IsDtlsSctp(absl::string_view protocol) {
   return protocol == kMediaProtocolDtlsSctp ||
@@ -38,6 +64,10 @@
   return protocol == kMediaProtocolSctp;
 }
 
+bool IsSctpProtocol(absl::string_view protocol) {
+  return IsPlainSctp(protocol) || IsDtlsSctp(protocol);
+}
+
 bool IsRtpProtocol(absl::string_view protocol) {
   if (protocol.empty()) {
     return true;
@@ -53,8 +83,23 @@
   return false;
 }
 
-bool IsSctpProtocol(absl::string_view protocol) {
-  return IsPlainSctp(protocol) || IsDtlsSctp(protocol);
+// Note that the below functions support some protocol strings purely for
+// legacy compatibility, as required by JSEP in Section 5.1.2, Profile Names
+// and Interoperability.
+
+bool IsDtlsRtp(absl::string_view protocol) {
+  // Most-likely values first.
+  return protocol == kMediaProtocolDtlsSavpf ||
+         protocol == kMediaProtocolTcpTlsSavpf ||
+         protocol == kMediaProtocolUdpTlsSavpf ||
+         protocol == kMediaProtocolUdpTlsSavp ||
+         protocol == kMediaProtocolTcpTlsSavp;
+}
+
+bool IsPlainRtp(absl::string_view protocol) {
+  // Most-likely values first.
+  return protocol == kMediaProtocolSavpf || protocol == kMediaProtocolAvpf ||
+         protocol == kMediaProtocolSavp || protocol == kMediaProtocolAvp;
 }
 
 }  // namespace cricket
diff --git a/pc/media_protocol_names.h b/pc/media_protocol_names.h
index 048cafa..989c1da 100644
--- a/pc/media_protocol_names.h
+++ b/pc/media_protocol_names.h
@@ -15,21 +15,33 @@
 
 namespace cricket {
 
-// Names or name prefixes of protocols as defined by SDP specifications.
-extern const char kMediaProtocolRtpPrefix[];
+// Names or name prefixes of protocols as defined by SDP specifications,
+// and generated in SDP produced by WebRTC.
 extern const char kMediaProtocolSctp[];
-extern const char kMediaProtocolDtlsSctp[];
 extern const char kMediaProtocolUdpDtlsSctp[];
-extern const char kMediaProtocolTcpDtlsSctp[];
+extern const char kMediaProtocolDtlsSavpf[];
+extern const char kMediaProtocolSavpf[];
+extern const char kMediaProtocolAvpf[];
 
-bool IsDtlsSctp(absl::string_view protocol);
-bool IsPlainSctp(absl::string_view protocol);
+// Exported for testing only
+extern const char kMediaProtocolTcpDtlsSctp[];
+extern const char kMediaProtocolDtlsSctp[];
 
 // Returns true if the given media section protocol indicates use of RTP.
 bool IsRtpProtocol(absl::string_view protocol);
 // Returns true if the given media section protocol indicates use of SCTP.
 bool IsSctpProtocol(absl::string_view protocol);
 
+// Returns true if the given media protocol is unencrypted SCTP
+bool IsPlainSctp(absl::string_view protocol);
+// Returns true if the given media protocol is encrypted SCTP
+bool IsDtlsSctp(absl::string_view protocol);
+
+// Returns true if the given media protocol is unencrypted RTP
+bool IsPlainRtp(absl::string_view protocol);
+// Returns true if the given media protocol is encrypted RTP
+bool IsDtlsRtp(absl::string_view protocol);
+
 }  // namespace cricket
 
 #endif  // PC_MEDIA_PROTOCOL_NAMES_H_
diff --git a/pc/media_session.cc b/pc/media_session.cc
index 21da2da..a53a164 100644
--- a/pc/media_session.cc
+++ b/pc/media_session.cc
@@ -116,33 +116,6 @@
 
 namespace cricket {
 
-// RTP Profile names
-// http://www.iana.org/assignments/rtp-parameters/rtp-parameters.xml
-// RFC4585
-const char kMediaProtocolAvpf[] = "RTP/AVPF";
-// RFC5124
-const char kMediaProtocolDtlsSavpf[] = "UDP/TLS/RTP/SAVPF";
-
-// We always generate offers with "UDP/TLS/RTP/SAVPF" when using DTLS-SRTP,
-// but we tolerate "RTP/SAVPF" in offers we receive, for compatibility.
-const char kMediaProtocolSavpf[] = "RTP/SAVPF";
-
-// Note that the below functions support some protocol strings purely for
-// legacy compatibility, as required by JSEP in Section 5.1.2, Profile Names
-// and Interoperability.
-
-static bool IsDtlsRtp(const std::string& protocol) {
-  // Most-likely values first.
-  return protocol == "UDP/TLS/RTP/SAVPF" || protocol == "TCP/TLS/RTP/SAVPF" ||
-         protocol == "UDP/TLS/RTP/SAVP" || protocol == "TCP/TLS/RTP/SAVP";
-}
-
-static bool IsPlainRtp(const std::string& protocol) {
-  // Most-likely values first.
-  return protocol == "RTP/SAVPF" || protocol == "RTP/AVPF" ||
-         protocol == "RTP/SAVP" || protocol == "RTP/AVP";
-}
-
 static RtpTransceiverDirection NegotiateRtpTransceiverDirection(
     RtpTransceiverDirection offer,
     RtpTransceiverDirection wants) {
@@ -1436,14 +1409,12 @@
   }
 
   if (type == MEDIA_TYPE_DATA) {
-    // Check for SCTP, but also for RTP for RTP-based data channels.
-    // TODO(pthatcher): Remove RTP once RTP-based data channels are gone.
+    // Check for SCTP
     if (secure_transport) {
       // Most likely scenarios first.
-      return IsDtlsSctp(protocol) || IsDtlsRtp(protocol) ||
-             IsPlainRtp(protocol);
+      return IsDtlsSctp(protocol);
     } else {
-      return IsPlainSctp(protocol) || IsPlainRtp(protocol);
+      return IsPlainSctp(protocol);
     }
   }
 
diff --git a/pc/session_description.h b/pc/session_description.h
index fed0839..ee7a91c 100644
--- a/pc/session_description.h
+++ b/pc/session_description.h
@@ -47,13 +47,6 @@
 typedef std::vector<CryptoParams> CryptoParamsVec;
 typedef std::vector<webrtc::RtpExtension> RtpHeaderExtensions;
 
-// RTC4585 RTP/AVPF
-extern const char kMediaProtocolAvpf[];
-// RFC5124 RTP/SAVPF
-extern const char kMediaProtocolSavpf[];
-
-extern const char kMediaProtocolDtlsSavpf[];
-
 // Options to control how session descriptions are generated.
 const int kAutoBandwidth = -1;
 
