 Chromium Code Reviews
 Chromium Code Reviews Issue 1880913002:
  Accept all the media profiles required by JSEP.  (Closed) 
  Base URL: https://chromium.googlesource.com/external/webrtc.git@master
    
  
    Issue 1880913002:
  Accept all the media profiles required by JSEP.  (Closed) 
  Base URL: https://chromium.googlesource.com/external/webrtc.git@master| OLD | NEW | 
|---|---|
| 1 /* | 1 /* | 
| 2 * Copyright 2004 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2004 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 1097 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1108 : MD_SENDRECV); | 1108 : MD_SENDRECV); | 
| 1109 break; | 1109 break; | 
| 1110 default: | 1110 default: | 
| 1111 RTC_DCHECK(false && "MediaContentDescription has unexpected direction."); | 1111 RTC_DCHECK(false && "MediaContentDescription has unexpected direction."); | 
| 1112 break; | 1112 break; | 
| 1113 } | 1113 } | 
| 1114 | 1114 | 
| 1115 return true; | 1115 return true; | 
| 1116 } | 1116 } | 
| 1117 | 1117 | 
| 1118 static bool IsProtocolFound(const std::vector<std::string> protocols, | |
| 
tommi
2016/04/14 12:59:09
Maybe this is by accident - but please don't pass
 
pthatcher1
2016/04/14 19:31:08
Good catch.
 | |
| 1119 const std::string& protocol) { | |
| 1120 return std::find(protocols.begin(), protocols.end(), protocol) != | |
| 1121 protocols.end(); | |
| 1122 } | |
| 1123 | |
| 1118 static bool IsMediaProtocolSupported(MediaType type, | 1124 static bool IsMediaProtocolSupported(MediaType type, | 
| 1119 const std::string& protocol, | 1125 const std::string& protocol, | 
| 1120 bool secure_transport) { | 1126 bool secure_transport) { | 
| 1127 // The accepted pattern for media protocol (JSEP Section 5.1.3) | |
| 1128 const std::vector<std::string> kMediaProtocols = {"RTP/SAVPF", "RTP/SAVP", | |
| 1129 "RTP/AVPF", "RTP/AVP"}; | |
| 
tommi
2016/04/14 12:59:09
I don't think this needs to be std::vector.  It co
 
pthatcher1
2016/04/14 19:31:08
Your idea of using  static const char* is a good o
 | |
| 1130 const std::vector<std::string> kMediaProtocolsDtls = { | |
| 1131 "UDP/TLS/RTP/SAVPF", "UDP/TLS/RTP/SAVP", "TCP/TLS/RTP/SAVPF", | |
| 1132 "TCP/TLS/RTP/SAVP"}; | |
| 1133 | |
| 1121 // Data channels can have a protocol of SCTP or SCTP/DTLS. | 1134 // Data channels can have a protocol of SCTP or SCTP/DTLS. | 
| 1122 if (type == MEDIA_TYPE_DATA && | 1135 if (type == MEDIA_TYPE_DATA && | 
| 1123 ((protocol == kMediaProtocolSctp && !secure_transport)|| | 1136 ((protocol == kMediaProtocolSctp && !secure_transport)|| | 
| 
tommi
2016/04/14 12:59:09
check secure_transport first here and on the next
 | |
| 1124 (protocol == kMediaProtocolDtlsSctp && secure_transport))) { | 1137 (protocol == kMediaProtocolDtlsSctp && secure_transport))) { | 
| 1125 return true; | 1138 return true; | 
| 1126 } | 1139 } | 
| 1127 | 1140 | 
| 1128 // Since not all applications serialize and deserialize the media protocol, | 1141 // Since not all applications serialize and deserialize the media protocol, | 
| 
tommi
2016/04/14 12:59:10
If type is MEDIA_TYPE_DATA when we get here, shoul
 
Taylor Brandstetter
2016/04/14 16:54:28
This is for RTP data channels, which some downstre
 | |
| 1129 // we will have to accept |protocol| to be empty. | 1142 // we will have to accept |protocol| to be empty. | 
| 1130 return protocol == kMediaProtocolAvpf || protocol.empty() || | 1143 return protocol.empty() || IsProtocolFound(kMediaProtocols, protocol) || | 
| 
tommi
2016/04/14 12:59:09
the |protocol.empty()| check should be done at the
 | |
| 1131 protocol == kMediaProtocolSavpf || | 1144 (IsProtocolFound(kMediaProtocolsDtls, protocol) && secure_transport); | 
| 
tommi
2016/04/14 12:59:10
|secure_transport| should be checked before doing
 
Taylor Brandstetter
2016/04/14 16:54:28
Yes. JSEP says we should accept these protocols as
 | |
| 1132 (protocol == kMediaProtocolDtlsSavpf && secure_transport); | |
| 1133 } | 1145 } | 
| 1134 | 1146 | 
| 1135 static void SetMediaProtocol(bool secure_transport, | 1147 static void SetMediaProtocol(bool secure_transport, | 
| 1136 MediaContentDescription* desc) { | 1148 MediaContentDescription* desc) { | 
| 1137 if (!desc->cryptos().empty()) | 1149 if (!desc->cryptos().empty()) | 
| 1138 desc->set_protocol(kMediaProtocolSavpf); | 1150 desc->set_protocol(kMediaProtocolSavpf); | 
| 1139 else if (secure_transport) | 1151 else if (secure_transport) | 
| 1140 desc->set_protocol(kMediaProtocolDtlsSavpf); | 1152 desc->set_protocol(kMediaProtocolDtlsSavpf); | 
| 1141 else | 1153 else | 
| 1142 desc->set_protocol(kMediaProtocolAvpf); | 1154 desc->set_protocol(kMediaProtocolAvpf); | 
| (...skipping 861 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2004 GetFirstMediaContentDescription(sdesc, MEDIA_TYPE_VIDEO)); | 2016 GetFirstMediaContentDescription(sdesc, MEDIA_TYPE_VIDEO)); | 
| 2005 } | 2017 } | 
| 2006 | 2018 | 
| 2007 const DataContentDescription* GetFirstDataContentDescription( | 2019 const DataContentDescription* GetFirstDataContentDescription( | 
| 2008 const SessionDescription* sdesc) { | 2020 const SessionDescription* sdesc) { | 
| 2009 return static_cast<const DataContentDescription*>( | 2021 return static_cast<const DataContentDescription*>( | 
| 2010 GetFirstMediaContentDescription(sdesc, MEDIA_TYPE_DATA)); | 2022 GetFirstMediaContentDescription(sdesc, MEDIA_TYPE_DATA)); | 
| 2011 } | 2023 } | 
| 2012 | 2024 | 
| 2013 } // namespace cricket | 2025 } // namespace cricket | 
| OLD | NEW |