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

Side by Side Diff: webrtc/pc/webrtcsdp.cc

Issue 2761143002: Support encrypted RTP extensions (RFC 6904) (Closed)
Patch Set: Fix compile error on win_x64 bots. Created 3 years, 5 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 unified diff | Download patch
« no previous file with comments | « webrtc/pc/srtpfilter_unittest.cc ('k') | webrtc/pc/webrtcsdp_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2011 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 1158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1169 if (!GetValue(fields[0], kAttributeExtmap, &value_direction, error)) { 1169 if (!GetValue(fields[0], kAttributeExtmap, &value_direction, error)) {
1170 return false; 1170 return false;
1171 } 1171 }
1172 std::vector<std::string> sub_fields; 1172 std::vector<std::string> sub_fields;
1173 rtc::split(value_direction, kSdpDelimiterSlash, &sub_fields); 1173 rtc::split(value_direction, kSdpDelimiterSlash, &sub_fields);
1174 int value = 0; 1174 int value = 0;
1175 if (!GetValueFromString(line, sub_fields[0], &value, error)) { 1175 if (!GetValueFromString(line, sub_fields[0], &value, error)) {
1176 return false; 1176 return false;
1177 } 1177 }
1178 1178
1179 *extmap = RtpExtension(uri, value); 1179 bool encrypted = false;
1180 if (uri == RtpExtension::kEncryptHeaderExtensionsUri) {
1181 // RFC 6904
1182 // a=extmap:<value["/"<direction>] urn:ietf:params:rtp-hdrext:encrypt \
1183 // <URI> <extensionattributes>
1184 const size_t expected_min_fields_encrypted = expected_min_fields + 1;
1185 if (fields.size() < expected_min_fields_encrypted) {
1186 return ParseFailedExpectMinFieldNum(line, expected_min_fields_encrypted,
1187 error);
1188 }
1189
1190 encrypted = true;
1191 uri = fields[2];
1192 if (uri == RtpExtension::kEncryptHeaderExtensionsUri) {
1193 return ParseFailed(line, "Recursive encrypted header.", error);
1194 }
1195 }
1196
1197 *extmap = RtpExtension(uri, value, encrypted);
1180 return true; 1198 return true;
1181 } 1199 }
1182 1200
1183 void BuildMediaDescription(const ContentInfo* content_info, 1201 void BuildMediaDescription(const ContentInfo* content_info,
1184 const TransportInfo* transport_info, 1202 const TransportInfo* transport_info,
1185 const MediaType media_type, 1203 const MediaType media_type,
1186 const std::vector<Candidate>& candidates, 1204 const std::vector<Candidate>& candidates,
1187 bool unified_plan_sdp, 1205 bool unified_plan_sdp,
1188 std::string* message) { 1206 std::string* message) {
1189 RTC_DCHECK(message != NULL); 1207 RTC_DCHECK(message != NULL);
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
1426 void BuildRtpContentAttributes(const MediaContentDescription* media_desc, 1444 void BuildRtpContentAttributes(const MediaContentDescription* media_desc,
1427 const MediaType media_type, 1445 const MediaType media_type,
1428 bool unified_plan_sdp, 1446 bool unified_plan_sdp,
1429 std::string* message) { 1447 std::string* message) {
1430 std::ostringstream os; 1448 std::ostringstream os;
1431 // RFC 5285 1449 // RFC 5285
1432 // a=extmap:<value>["/"<direction>] <URI> <extensionattributes> 1450 // a=extmap:<value>["/"<direction>] <URI> <extensionattributes>
1433 // The definitions MUST be either all session level or all media level. This 1451 // The definitions MUST be either all session level or all media level. This
1434 // implementation uses all media level. 1452 // implementation uses all media level.
1435 for (size_t i = 0; i < media_desc->rtp_header_extensions().size(); ++i) { 1453 for (size_t i = 0; i < media_desc->rtp_header_extensions().size(); ++i) {
1454 const RtpExtension& extension = media_desc->rtp_header_extensions()[i];
1436 InitAttrLine(kAttributeExtmap, &os); 1455 InitAttrLine(kAttributeExtmap, &os);
1437 os << kSdpDelimiterColon << media_desc->rtp_header_extensions()[i].id 1456 os << kSdpDelimiterColon << extension.id;
1438 << kSdpDelimiterSpace << media_desc->rtp_header_extensions()[i].uri; 1457 if (extension.encrypt) {
1458 os << kSdpDelimiterSpace << RtpExtension::kEncryptHeaderExtensionsUri;
1459 }
1460 os << kSdpDelimiterSpace << extension.uri;
1439 AddLine(os.str(), message); 1461 AddLine(os.str(), message);
1440 } 1462 }
1441 1463
1442 // RFC 3264 1464 // RFC 3264
1443 // a=sendrecv || a=sendonly || a=sendrecv || a=inactive 1465 // a=sendrecv || a=sendonly || a=sendrecv || a=inactive
1444 switch (media_desc->direction()) { 1466 switch (media_desc->direction()) {
1445 case cricket::MD_INACTIVE: 1467 case cricket::MD_INACTIVE:
1446 InitAttrLine(kAttributeInactive, &os); 1468 InitAttrLine(kAttributeInactive, &os);
1447 break; 1469 break;
1448 case cricket::MD_SENDONLY: 1470 case cricket::MD_SENDONLY:
(...skipping 1844 matching lines...) Expand 10 before | Expand all | Expand 10 after
3293 UpdateCodec<AudioContentDescription, cricket::AudioCodec>( 3315 UpdateCodec<AudioContentDescription, cricket::AudioCodec>(
3294 media_desc, payload_type, feedback_param); 3316 media_desc, payload_type, feedback_param);
3295 } else if (media_type == cricket::MEDIA_TYPE_VIDEO) { 3317 } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
3296 UpdateCodec<VideoContentDescription, cricket::VideoCodec>( 3318 UpdateCodec<VideoContentDescription, cricket::VideoCodec>(
3297 media_desc, payload_type, feedback_param); 3319 media_desc, payload_type, feedback_param);
3298 } 3320 }
3299 return true; 3321 return true;
3300 } 3322 }
3301 3323
3302 } // namespace webrtc 3324 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/pc/srtpfilter_unittest.cc ('k') | webrtc/pc/webrtcsdp_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698