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

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

Issue 1984983002: Remove use of RtpHeaderExtension and clean up (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Addressed perkj nits Created 4 years, 7 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 | « no previous file | webrtc/api/webrtcsdp_unittest.cc » ('j') | webrtc/pc/channel.cc » ('J')
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
11 #include "webrtc/api/webrtcsdp.h" 11 #include "webrtc/api/webrtcsdp.h"
12 12
13 #include <ctype.h> 13 #include <ctype.h>
14 #include <limits.h> 14 #include <limits.h>
15 #include <stdio.h> 15 #include <stdio.h>
16 16
17 #include <algorithm> 17 #include <algorithm>
18 #include <memory> 18 #include <memory>
19 #include <string> 19 #include <string>
20 #include <unordered_map> 20 #include <unordered_map>
21 #include <vector> 21 #include <vector>
22 22
23 #include "webrtc/api/jsepicecandidate.h" 23 #include "webrtc/api/jsepicecandidate.h"
24 #include "webrtc/api/jsepsessiondescription.h" 24 #include "webrtc/api/jsepsessiondescription.h"
25 #include "webrtc/base/arraysize.h" 25 #include "webrtc/base/arraysize.h"
26 #include "webrtc/base/common.h" 26 #include "webrtc/base/common.h"
27 #include "webrtc/base/logging.h" 27 #include "webrtc/base/logging.h"
28 #include "webrtc/base/messagedigest.h" 28 #include "webrtc/base/messagedigest.h"
29 #include "webrtc/base/stringutils.h" 29 #include "webrtc/base/stringutils.h"
30 #include "webrtc/config.h"
pthatcher1 2016/05/25 20:43:30 Can you leave a "// for RtpExtension"? Otherwise
Irfan 2016/05/25 20:55:50 Done.
30 #include "webrtc/media/base/codec.h" 31 #include "webrtc/media/base/codec.h"
31 #include "webrtc/media/base/cryptoparams.h" 32 #include "webrtc/media/base/cryptoparams.h"
32 #include "webrtc/media/base/mediaconstants.h" 33 #include "webrtc/media/base/mediaconstants.h"
33 #include "webrtc/media/base/rtputils.h" 34 #include "webrtc/media/base/rtputils.h"
34 #include "webrtc/media/sctp/sctpdataengine.h" 35 #include "webrtc/media/sctp/sctpdataengine.h"
35 #include "webrtc/p2p/base/candidate.h" 36 #include "webrtc/p2p/base/candidate.h"
36 #include "webrtc/p2p/base/p2pconstants.h" 37 #include "webrtc/p2p/base/p2pconstants.h"
37 #include "webrtc/p2p/base/port.h" 38 #include "webrtc/p2p/base/port.h"
38 #include "webrtc/pc/mediasession.h" 39 #include "webrtc/pc/mediasession.h"
39 40
(...skipping 17 matching lines...) Expand all
57 using cricket::kCodecParamStereo; 58 using cricket::kCodecParamStereo;
58 using cricket::kCodecParamUseInbandFec; 59 using cricket::kCodecParamUseInbandFec;
59 using cricket::kCodecParamUseDtx; 60 using cricket::kCodecParamUseDtx;
60 using cricket::kCodecParamSctpProtocol; 61 using cricket::kCodecParamSctpProtocol;
61 using cricket::kCodecParamSctpStreams; 62 using cricket::kCodecParamSctpStreams;
62 using cricket::kCodecParamMaxAverageBitrate; 63 using cricket::kCodecParamMaxAverageBitrate;
63 using cricket::kCodecParamMaxPlaybackRate; 64 using cricket::kCodecParamMaxPlaybackRate;
64 using cricket::kCodecParamAssociatedPayloadType; 65 using cricket::kCodecParamAssociatedPayloadType;
65 using cricket::MediaContentDescription; 66 using cricket::MediaContentDescription;
66 using cricket::MediaType; 67 using cricket::MediaType;
67 using cricket::RtpHeaderExtension; 68 using cricket::RtpHeaderExtensions;
pthatcher1 2016/05/25 20:43:30 Why do we bother with this any more instead of jus
Irfan 2016/05/25 20:55:50 I removed the duplicate typedef in this file. RtpH
68 using cricket::SsrcGroup; 69 using cricket::SsrcGroup;
69 using cricket::StreamParams; 70 using cricket::StreamParams;
70 using cricket::StreamParamsVec; 71 using cricket::StreamParamsVec;
71 using cricket::TransportDescription; 72 using cricket::TransportDescription;
72 using cricket::TransportInfo; 73 using cricket::TransportInfo;
73 using cricket::VideoContentDescription; 74 using cricket::VideoContentDescription;
74 using rtc::SocketAddress; 75 using rtc::SocketAddress;
75 76
76 typedef std::vector<RtpHeaderExtension> RtpHeaderExtensions;
77
78 namespace cricket { 77 namespace cricket {
79 class SessionDescription; 78 class SessionDescription;
80 } 79 }
81 80
82 namespace webrtc { 81 namespace webrtc {
83 82
84 // Line type 83 // Line type
85 // RFC 4566 84 // RFC 4566
86 // An SDP session description consists of a number of lines of text of 85 // An SDP session description consists of a number of lines of text of
87 // the form: 86 // the form:
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 static bool ParseCandidate(const std::string& message, Candidate* candidate, 301 static bool ParseCandidate(const std::string& message, Candidate* candidate,
303 SdpParseError* error, bool is_raw); 302 SdpParseError* error, bool is_raw);
304 static bool ParseRtcpFbAttribute(const std::string& line, 303 static bool ParseRtcpFbAttribute(const std::string& line,
305 const MediaType media_type, 304 const MediaType media_type,
306 MediaContentDescription* media_desc, 305 MediaContentDescription* media_desc,
307 SdpParseError* error); 306 SdpParseError* error);
308 static bool ParseIceOptions(const std::string& line, 307 static bool ParseIceOptions(const std::string& line,
309 std::vector<std::string>* transport_options, 308 std::vector<std::string>* transport_options,
310 SdpParseError* error); 309 SdpParseError* error);
311 static bool ParseExtmap(const std::string& line, 310 static bool ParseExtmap(const std::string& line,
312 RtpHeaderExtension* extmap, 311 RtpExtension* extmap,
313 SdpParseError* error); 312 SdpParseError* error);
314 static bool ParseFingerprintAttribute(const std::string& line, 313 static bool ParseFingerprintAttribute(const std::string& line,
315 rtc::SSLFingerprint** fingerprint, 314 rtc::SSLFingerprint** fingerprint,
316 SdpParseError* error); 315 SdpParseError* error);
317 static bool ParseDtlsSetup(const std::string& line, 316 static bool ParseDtlsSetup(const std::string& line,
318 cricket::ConnectionRole* role, 317 cricket::ConnectionRole* role,
319 SdpParseError* error); 318 SdpParseError* error);
320 static bool ParseMsidAttribute(const std::string& line, 319 static bool ParseMsidAttribute(const std::string& line,
321 std::string* stream_id, 320 std::string* stream_id,
322 std::string* track_id, 321 std::string* track_id,
(...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 } 1160 }
1162 if (fields.size() < expected_min_fields) { 1161 if (fields.size() < expected_min_fields) {
1163 return ParseFailedExpectMinFieldNum(line, expected_min_fields, error); 1162 return ParseFailedExpectMinFieldNum(line, expected_min_fields, error);
1164 } 1163 }
1165 if (!rtc::FromString(fields[1], sctp_port)) { 1164 if (!rtc::FromString(fields[1], sctp_port)) {
1166 return ParseFailed(line, "Invalid sctp port value.", error); 1165 return ParseFailed(line, "Invalid sctp port value.", error);
1167 } 1166 }
1168 return true; 1167 return true;
1169 } 1168 }
1170 1169
1171 bool ParseExtmap(const std::string& line, RtpHeaderExtension* extmap, 1170 bool ParseExtmap(const std::string& line,
1171 RtpExtension* extmap,
1172 SdpParseError* error) { 1172 SdpParseError* error) {
1173 // RFC 5285 1173 // RFC 5285
1174 // a=extmap:<value>["/"<direction>] <URI> <extensionattributes> 1174 // a=extmap:<value>["/"<direction>] <URI> <extensionattributes>
1175 std::vector<std::string> fields; 1175 std::vector<std::string> fields;
1176 rtc::split(line.substr(kLinePrefixLength), 1176 rtc::split(line.substr(kLinePrefixLength),
1177 kSdpDelimiterSpace, &fields); 1177 kSdpDelimiterSpace, &fields);
1178 const size_t expected_min_fields = 2; 1178 const size_t expected_min_fields = 2;
1179 if (fields.size() < expected_min_fields) { 1179 if (fields.size() < expected_min_fields) {
1180 return ParseFailedExpectMinFieldNum(line, expected_min_fields, error); 1180 return ParseFailedExpectMinFieldNum(line, expected_min_fields, error);
1181 } 1181 }
1182 std::string uri = fields[1]; 1182 std::string uri = fields[1];
1183 1183
1184 std::string value_direction; 1184 std::string value_direction;
1185 if (!GetValue(fields[0], kAttributeExtmap, &value_direction, error)) { 1185 if (!GetValue(fields[0], kAttributeExtmap, &value_direction, error)) {
1186 return false; 1186 return false;
1187 } 1187 }
1188 std::vector<std::string> sub_fields; 1188 std::vector<std::string> sub_fields;
1189 rtc::split(value_direction, kSdpDelimiterSlash, &sub_fields); 1189 rtc::split(value_direction, kSdpDelimiterSlash, &sub_fields);
1190 int value = 0; 1190 int value = 0;
1191 if (!GetValueFromString(line, sub_fields[0], &value, error)) { 1191 if (!GetValueFromString(line, sub_fields[0], &value, error)) {
1192 return false; 1192 return false;
1193 } 1193 }
1194 1194
1195 *extmap = RtpHeaderExtension(uri, value); 1195 *extmap = RtpExtension(uri, value);
1196 return true; 1196 return true;
1197 } 1197 }
1198 1198
1199 void BuildMediaDescription(const ContentInfo* content_info, 1199 void BuildMediaDescription(const ContentInfo* content_info,
1200 const TransportInfo* transport_info, 1200 const TransportInfo* transport_info,
1201 const MediaType media_type, 1201 const MediaType media_type,
1202 const std::vector<Candidate>& candidates, 1202 const std::vector<Candidate>& candidates,
1203 bool unified_plan_sdp, 1203 bool unified_plan_sdp,
1204 std::string* message) { 1204 std::string* message) {
1205 ASSERT(message != NULL); 1205 ASSERT(message != NULL);
(...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after
2008 return false; 2008 return false;
2009 } 2009 }
2010 } else if (HasAttribute(line, kAttributeMsidSemantics)) { 2010 } else if (HasAttribute(line, kAttributeMsidSemantics)) {
2011 std::string semantics; 2011 std::string semantics;
2012 if (!GetValue(line, kAttributeMsidSemantics, &semantics, error)) { 2012 if (!GetValue(line, kAttributeMsidSemantics, &semantics, error)) {
2013 return false; 2013 return false;
2014 } 2014 }
2015 desc->set_msid_supported( 2015 desc->set_msid_supported(
2016 CaseInsensitiveFind(semantics, kMediaStreamSemantic)); 2016 CaseInsensitiveFind(semantics, kMediaStreamSemantic));
2017 } else if (HasAttribute(line, kAttributeExtmap)) { 2017 } else if (HasAttribute(line, kAttributeExtmap)) {
2018 RtpHeaderExtension extmap; 2018 RtpExtension extmap;
2019 if (!ParseExtmap(line, &extmap, error)) { 2019 if (!ParseExtmap(line, &extmap, error)) {
2020 return false; 2020 return false;
2021 } 2021 }
2022 session_extmaps->push_back(extmap); 2022 session_extmaps->push_back(extmap);
2023 } 2023 }
2024 } 2024 }
2025 2025
2026 return true; 2026 return true;
2027 } 2027 }
2028 2028
(...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after
2696 } 2696 }
2697 } else if (HasAttribute(line, kAttributeSendOnly)) { 2697 } else if (HasAttribute(line, kAttributeSendOnly)) {
2698 media_desc->set_direction(cricket::MD_SENDONLY); 2698 media_desc->set_direction(cricket::MD_SENDONLY);
2699 } else if (HasAttribute(line, kAttributeRecvOnly)) { 2699 } else if (HasAttribute(line, kAttributeRecvOnly)) {
2700 media_desc->set_direction(cricket::MD_RECVONLY); 2700 media_desc->set_direction(cricket::MD_RECVONLY);
2701 } else if (HasAttribute(line, kAttributeInactive)) { 2701 } else if (HasAttribute(line, kAttributeInactive)) {
2702 media_desc->set_direction(cricket::MD_INACTIVE); 2702 media_desc->set_direction(cricket::MD_INACTIVE);
2703 } else if (HasAttribute(line, kAttributeSendRecv)) { 2703 } else if (HasAttribute(line, kAttributeSendRecv)) {
2704 media_desc->set_direction(cricket::MD_SENDRECV); 2704 media_desc->set_direction(cricket::MD_SENDRECV);
2705 } else if (HasAttribute(line, kAttributeExtmap)) { 2705 } else if (HasAttribute(line, kAttributeExtmap)) {
2706 RtpHeaderExtension extmap; 2706 RtpExtension extmap;
2707 if (!ParseExtmap(line, &extmap, error)) { 2707 if (!ParseExtmap(line, &extmap, error)) {
2708 return false; 2708 return false;
2709 } 2709 }
2710 media_desc->AddRtpHeaderExtension(extmap); 2710 media_desc->AddRtpHeaderExtension(extmap);
2711 } else if (HasAttribute(line, kAttributeXGoogleFlag)) { 2711 } else if (HasAttribute(line, kAttributeXGoogleFlag)) {
2712 // Experimental attribute. Conference mode activates more aggressive 2712 // Experimental attribute. Conference mode activates more aggressive
2713 // AEC and NS settings. 2713 // AEC and NS settings.
2714 // TODO: expose API to set these directly. 2714 // TODO: expose API to set these directly.
2715 std::string flag_value; 2715 std::string flag_value;
2716 if (!GetValue(line, kAttributeXGoogleFlag, &flag_value, error)) { 2716 if (!GetValue(line, kAttributeXGoogleFlag, &flag_value, error)) {
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
3175 UpdateCodec<AudioContentDescription, cricket::AudioCodec>( 3175 UpdateCodec<AudioContentDescription, cricket::AudioCodec>(
3176 media_desc, payload_type, feedback_param); 3176 media_desc, payload_type, feedback_param);
3177 } else if (media_type == cricket::MEDIA_TYPE_VIDEO) { 3177 } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
3178 UpdateCodec<VideoContentDescription, cricket::VideoCodec>( 3178 UpdateCodec<VideoContentDescription, cricket::VideoCodec>(
3179 media_desc, payload_type, feedback_param); 3179 media_desc, payload_type, feedback_param);
3180 } 3180 }
3181 return true; 3181 return true;
3182 } 3182 }
3183 3183
3184 } // namespace webrtc 3184 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | webrtc/api/webrtcsdp_unittest.cc » ('j') | webrtc/pc/channel.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698