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

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

Issue 2620303003: Replace ASSERT by RTC_DCHECK in all non-test code. (Closed)
Patch Set: Address final nits. Created 3 years, 11 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/api/videocapturertracksource.cc ('k') | webrtc/api/webrtcsession.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 563 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 cricket::IsValidRtpPayloadType(*payload_type); 574 cricket::IsValidRtpPayloadType(*payload_type);
575 } 575 }
576 576
577 // |msid_stream_id| and |msid_track_id| represent the stream/track ID from the 577 // |msid_stream_id| and |msid_track_id| represent the stream/track ID from the
578 // "a=msid" attribute, if it exists. They are empty if the attribute does not 578 // "a=msid" attribute, if it exists. They are empty if the attribute does not
579 // exist. 579 // exist.
580 void CreateTracksFromSsrcInfos(const SsrcInfoVec& ssrc_infos, 580 void CreateTracksFromSsrcInfos(const SsrcInfoVec& ssrc_infos,
581 const std::string& msid_stream_id, 581 const std::string& msid_stream_id,
582 const std::string& msid_track_id, 582 const std::string& msid_track_id,
583 StreamParamsVec* tracks) { 583 StreamParamsVec* tracks) {
584 ASSERT(tracks != NULL); 584 RTC_DCHECK(tracks != NULL);
585 ASSERT(msid_stream_id.empty() == msid_track_id.empty()); 585 RTC_DCHECK(msid_stream_id.empty() == msid_track_id.empty());
586 for (SsrcInfoVec::const_iterator ssrc_info = ssrc_infos.begin(); 586 for (SsrcInfoVec::const_iterator ssrc_info = ssrc_infos.begin();
587 ssrc_info != ssrc_infos.end(); ++ssrc_info) { 587 ssrc_info != ssrc_infos.end(); ++ssrc_info) {
588 if (ssrc_info->cname.empty()) { 588 if (ssrc_info->cname.empty()) {
589 continue; 589 continue;
590 } 590 }
591 591
592 std::string stream_id; 592 std::string stream_id;
593 std::string track_id; 593 std::string track_id;
594 if (ssrc_info->stream_id.empty() && !ssrc_info->mslabel.empty()) { 594 if (ssrc_info->stream_id.empty() && !ssrc_info->mslabel.empty()) {
595 // If there's no msid and there's mslabel, we consider this is a sdp from 595 // If there's no msid and there's mslabel, we consider this is a sdp from
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 AddLine(kSessionName, &message); 824 AddLine(kSessionName, &message);
825 825
826 // Time Description. 826 // Time Description.
827 AddLine(kTimeDescription, &message); 827 AddLine(kTimeDescription, &message);
828 828
829 // Group 829 // Group
830 if (desc->HasGroup(cricket::GROUP_TYPE_BUNDLE)) { 830 if (desc->HasGroup(cricket::GROUP_TYPE_BUNDLE)) {
831 std::string group_line = kAttrGroup; 831 std::string group_line = kAttrGroup;
832 const cricket::ContentGroup* group = 832 const cricket::ContentGroup* group =
833 desc->GetGroupByName(cricket::GROUP_TYPE_BUNDLE); 833 desc->GetGroupByName(cricket::GROUP_TYPE_BUNDLE);
834 ASSERT(group != NULL); 834 RTC_DCHECK(group != NULL);
835 const cricket::ContentNames& content_names = group->content_names(); 835 const cricket::ContentNames& content_names = group->content_names();
836 for (cricket::ContentNames::const_iterator it = content_names.begin(); 836 for (cricket::ContentNames::const_iterator it = content_names.begin();
837 it != content_names.end(); ++it) { 837 it != content_names.end(); ++it) {
838 group_line.append(" "); 838 group_line.append(" ");
839 group_line.append(*it); 839 group_line.append(*it);
840 } 840 }
841 AddLine(group_line, &message); 841 AddLine(group_line, &message);
842 } 842 }
843 843
844 // MediaStream semantics 844 // MediaStream semantics
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 return SdpSerializeCandidate(candidate.candidate()); 881 return SdpSerializeCandidate(candidate.candidate());
882 } 882 }
883 883
884 // Serializes a cricket Candidate. 884 // Serializes a cricket Candidate.
885 std::string SdpSerializeCandidate(const cricket::Candidate& candidate) { 885 std::string SdpSerializeCandidate(const cricket::Candidate& candidate) {
886 std::string message; 886 std::string message;
887 std::vector<cricket::Candidate> candidates(1, candidate); 887 std::vector<cricket::Candidate> candidates(1, candidate);
888 BuildCandidate(candidates, true, &message); 888 BuildCandidate(candidates, true, &message);
889 // From WebRTC draft section 4.8.1.1 candidate-attribute will be 889 // From WebRTC draft section 4.8.1.1 candidate-attribute will be
890 // just candidate:<candidate> not a=candidate:<blah>CRLF 890 // just candidate:<candidate> not a=candidate:<blah>CRLF
891 ASSERT(message.find("a=") == 0); 891 RTC_DCHECK(message.find("a=") == 0);
892 message.erase(0, 2); 892 message.erase(0, 2);
893 ASSERT(message.find(kLineBreak) == message.size() - 2); 893 RTC_DCHECK(message.find(kLineBreak) == message.size() - 2);
894 message.resize(message.size() - 2); 894 message.resize(message.size() - 2);
895 return message; 895 return message;
896 } 896 }
897 897
898 bool SdpDeserialize(const std::string& message, 898 bool SdpDeserialize(const std::string& message,
899 JsepSessionDescription* jdesc, 899 JsepSessionDescription* jdesc,
900 SdpParseError* error) { 900 SdpParseError* error) {
901 std::string session_id; 901 std::string session_id;
902 std::string session_version; 902 std::string session_version;
903 TransportDescription session_td("", ""); 903 TransportDescription session_td("", "");
(...skipping 27 matching lines...) Expand all
931 it = candidates.begin(); it != candidates.end(); ++it) { 931 it = candidates.begin(); it != candidates.end(); ++it) {
932 jdesc->AddCandidate(*it); 932 jdesc->AddCandidate(*it);
933 delete *it; 933 delete *it;
934 } 934 }
935 return true; 935 return true;
936 } 936 }
937 937
938 bool SdpDeserializeCandidate(const std::string& message, 938 bool SdpDeserializeCandidate(const std::string& message,
939 JsepIceCandidate* jcandidate, 939 JsepIceCandidate* jcandidate,
940 SdpParseError* error) { 940 SdpParseError* error) {
941 ASSERT(jcandidate != NULL); 941 RTC_DCHECK(jcandidate != NULL);
942 Candidate candidate; 942 Candidate candidate;
943 if (!ParseCandidate(message, &candidate, error, true)) { 943 if (!ParseCandidate(message, &candidate, error, true)) {
944 return false; 944 return false;
945 } 945 }
946 jcandidate->SetCandidate(candidate); 946 jcandidate->SetCandidate(candidate);
947 return true; 947 return true;
948 } 948 }
949 949
950 bool SdpDeserializeCandidate(const std::string& transport_name, 950 bool SdpDeserializeCandidate(const std::string& transport_name,
951 const std::string& message, 951 const std::string& message,
952 cricket::Candidate* candidate, 952 cricket::Candidate* candidate,
953 SdpParseError* error) { 953 SdpParseError* error) {
954 ASSERT(candidate != nullptr); 954 RTC_DCHECK(candidate != nullptr);
955 if (!ParseCandidate(message, candidate, error, true)) { 955 if (!ParseCandidate(message, candidate, error, true)) {
956 return false; 956 return false;
957 } 957 }
958 candidate->set_transport_name(transport_name); 958 candidate->set_transport_name(transport_name);
959 return true; 959 return true;
960 } 960 }
961 961
962 bool ParseCandidate(const std::string& message, Candidate* candidate, 962 bool ParseCandidate(const std::string& message, Candidate* candidate,
963 SdpParseError* error, bool is_raw) { 963 SdpParseError* error, bool is_raw) {
964 ASSERT(candidate != NULL); 964 RTC_DCHECK(candidate != NULL);
965 965
966 // Get the first line from |message|. 966 // Get the first line from |message|.
967 std::string first_line = message; 967 std::string first_line = message;
968 size_t pos = 0; 968 size_t pos = 0;
969 GetLine(message, &pos, &first_line); 969 GetLine(message, &pos, &first_line);
970 970
971 // Makes sure |message| contains only one line. 971 // Makes sure |message| contains only one line.
972 if (message.size() > first_line.size()) { 972 if (message.size() > first_line.size()) {
973 std::string left, right; 973 std::string left, right;
974 if (rtc::tokenize_first(message, kNewLine, &left, &right) && 974 if (rtc::tokenize_first(message, kNewLine, &left, &right) &&
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 *extmap = RtpExtension(uri, value); 1208 *extmap = RtpExtension(uri, value);
1209 return true; 1209 return true;
1210 } 1210 }
1211 1211
1212 void BuildMediaDescription(const ContentInfo* content_info, 1212 void BuildMediaDescription(const ContentInfo* content_info,
1213 const TransportInfo* transport_info, 1213 const TransportInfo* transport_info,
1214 const MediaType media_type, 1214 const MediaType media_type,
1215 const std::vector<Candidate>& candidates, 1215 const std::vector<Candidate>& candidates,
1216 bool unified_plan_sdp, 1216 bool unified_plan_sdp,
1217 std::string* message) { 1217 std::string* message) {
1218 ASSERT(message != NULL); 1218 RTC_DCHECK(message != NULL);
1219 if (content_info == NULL || message == NULL) { 1219 if (content_info == NULL || message == NULL) {
1220 return; 1220 return;
1221 } 1221 }
1222 // TODO: Rethink if we should use sprintfn instead of stringstream. 1222 // TODO: Rethink if we should use sprintfn instead of stringstream.
1223 // According to the style guide, streams should only be used for logging. 1223 // According to the style guide, streams should only be used for logging.
1224 // http://google-styleguide.googlecode.com/svn/ 1224 // http://google-styleguide.googlecode.com/svn/
1225 // trunk/cppguide.xml?showone=Streams#Streams 1225 // trunk/cppguide.xml?showone=Streams#Streams
1226 std::ostringstream os; 1226 std::ostringstream os;
1227 const MediaContentDescription* media_desc = 1227 const MediaContentDescription* media_desc =
1228 static_cast<const MediaContentDescription*>( 1228 static_cast<const MediaContentDescription*>(
1229 content_info->description); 1229 content_info->description);
1230 ASSERT(media_desc != NULL); 1230 RTC_DCHECK(media_desc != NULL);
1231 1231
1232 int sctp_port = cricket::kSctpDefaultPort; 1232 int sctp_port = cricket::kSctpDefaultPort;
1233 1233
1234 // RFC 4566 1234 // RFC 4566
1235 // m=<media> <port> <proto> <fmt> 1235 // m=<media> <port> <proto> <fmt>
1236 // fmt is a list of payload type numbers that MAY be used in the session. 1236 // fmt is a list of payload type numbers that MAY be used in the session.
1237 const char* type = NULL; 1237 const char* type = NULL;
1238 if (media_type == cricket::MEDIA_TYPE_AUDIO) 1238 if (media_type == cricket::MEDIA_TYPE_AUDIO)
1239 type = kMediaTypeAudio; 1239 type = kMediaTypeAudio;
1240 else if (media_type == cricket::MEDIA_TYPE_VIDEO) 1240 else if (media_type == cricket::MEDIA_TYPE_VIDEO)
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
1712 } 1712 }
1713 if (!rtc::FromString(found->second, value)) { 1713 if (!rtc::FromString(found->second, value)) {
1714 return false; 1714 return false;
1715 } 1715 }
1716 return true; 1716 return true;
1717 } 1717 }
1718 1718
1719 void BuildRtpMap(const MediaContentDescription* media_desc, 1719 void BuildRtpMap(const MediaContentDescription* media_desc,
1720 const MediaType media_type, 1720 const MediaType media_type,
1721 std::string* message) { 1721 std::string* message) {
1722 ASSERT(message != NULL); 1722 RTC_DCHECK(message != NULL);
1723 ASSERT(media_desc != NULL); 1723 RTC_DCHECK(media_desc != NULL);
1724 std::ostringstream os; 1724 std::ostringstream os;
1725 if (media_type == cricket::MEDIA_TYPE_VIDEO) { 1725 if (media_type == cricket::MEDIA_TYPE_VIDEO) {
1726 const VideoContentDescription* video_desc = 1726 const VideoContentDescription* video_desc =
1727 static_cast<const VideoContentDescription*>(media_desc); 1727 static_cast<const VideoContentDescription*>(media_desc);
1728 for (std::vector<cricket::VideoCodec>::const_iterator it = 1728 for (std::vector<cricket::VideoCodec>::const_iterator it =
1729 video_desc->codecs().begin(); 1729 video_desc->codecs().begin();
1730 it != video_desc->codecs().end(); ++it) { 1730 it != video_desc->codecs().end(); ++it) {
1731 // RFC 4566 1731 // RFC 4566
1732 // a=rtpmap:<payload type> <encoding name>/<clock rate> 1732 // a=rtpmap:<payload type> <encoding name>/<clock rate>
1733 // [/<encodingparameters>] 1733 // [/<encodingparameters>]
1734 if (it->id != kWildcardPayloadType) { 1734 if (it->id != kWildcardPayloadType) {
1735 InitAttrLine(kAttributeRtpmap, &os); 1735 InitAttrLine(kAttributeRtpmap, &os);
1736 os << kSdpDelimiterColon << it->id << " " << it->name 1736 os << kSdpDelimiterColon << it->id << " " << it->name
1737 << "/" << kDefaultVideoClockrate; 1737 << "/" << kDefaultVideoClockrate;
1738 AddLine(os.str(), message); 1738 AddLine(os.str(), message);
1739 } 1739 }
1740 AddRtcpFbLines(*it, message); 1740 AddRtcpFbLines(*it, message);
1741 AddFmtpLine(*it, message); 1741 AddFmtpLine(*it, message);
1742 } 1742 }
1743 } else if (media_type == cricket::MEDIA_TYPE_AUDIO) { 1743 } else if (media_type == cricket::MEDIA_TYPE_AUDIO) {
1744 const AudioContentDescription* audio_desc = 1744 const AudioContentDescription* audio_desc =
1745 static_cast<const AudioContentDescription*>(media_desc); 1745 static_cast<const AudioContentDescription*>(media_desc);
1746 std::vector<int> ptimes; 1746 std::vector<int> ptimes;
1747 std::vector<int> maxptimes; 1747 std::vector<int> maxptimes;
1748 int max_minptime = 0; 1748 int max_minptime = 0;
1749 for (std::vector<cricket::AudioCodec>::const_iterator it = 1749 for (std::vector<cricket::AudioCodec>::const_iterator it =
1750 audio_desc->codecs().begin(); 1750 audio_desc->codecs().begin();
1751 it != audio_desc->codecs().end(); ++it) { 1751 it != audio_desc->codecs().end(); ++it) {
1752 ASSERT(!it->name.empty()); 1752 RTC_DCHECK(!it->name.empty());
1753 // RFC 4566 1753 // RFC 4566
1754 // a=rtpmap:<payload type> <encoding name>/<clock rate> 1754 // a=rtpmap:<payload type> <encoding name>/<clock rate>
1755 // [/<encodingparameters>] 1755 // [/<encodingparameters>]
1756 InitAttrLine(kAttributeRtpmap, &os); 1756 InitAttrLine(kAttributeRtpmap, &os);
1757 os << kSdpDelimiterColon << it->id << " "; 1757 os << kSdpDelimiterColon << it->id << " ";
1758 os << it->name << "/" << it->clockrate; 1758 os << it->name << "/" << it->clockrate;
1759 if (it->channels != 1) { 1759 if (it->channels != 1) {
1760 os << "/" << it->channels; 1760 os << "/" << it->channels;
1761 } 1761 }
1762 AddLine(os.str(), message); 1762 AddLine(os.str(), message);
(...skipping 11 matching lines...) Expand all
1774 if (GetParameter(kCodecParamMaxPTime, it->params, &maxptime)) { 1774 if (GetParameter(kCodecParamMaxPTime, it->params, &maxptime)) {
1775 maxptimes.push_back(maxptime); 1775 maxptimes.push_back(maxptime);
1776 } 1776 }
1777 } 1777 }
1778 // Populate the maxptime attribute with the smallest maxptime of all codecs 1778 // Populate the maxptime attribute with the smallest maxptime of all codecs
1779 // under the same m-line. 1779 // under the same m-line.
1780 int min_maxptime = INT_MAX; 1780 int min_maxptime = INT_MAX;
1781 if (GetMinValue(maxptimes, &min_maxptime)) { 1781 if (GetMinValue(maxptimes, &min_maxptime)) {
1782 AddAttributeLine(kCodecParamMaxPTime, min_maxptime, message); 1782 AddAttributeLine(kCodecParamMaxPTime, min_maxptime, message);
1783 } 1783 }
1784 ASSERT(min_maxptime > max_minptime); 1784 RTC_DCHECK(min_maxptime > max_minptime);
1785 // Populate the ptime attribute with the smallest ptime or the largest 1785 // Populate the ptime attribute with the smallest ptime or the largest
1786 // minptime, whichever is the largest, for all codecs under the same m-line. 1786 // minptime, whichever is the largest, for all codecs under the same m-line.
1787 int ptime = INT_MAX; 1787 int ptime = INT_MAX;
1788 if (GetMinValue(ptimes, &ptime)) { 1788 if (GetMinValue(ptimes, &ptime)) {
1789 ptime = std::min(ptime, min_maxptime); 1789 ptime = std::min(ptime, min_maxptime);
1790 ptime = std::max(ptime, max_minptime); 1790 ptime = std::max(ptime, max_minptime);
1791 AddAttributeLine(kCodecParamPTime, ptime, message); 1791 AddAttributeLine(kCodecParamPTime, ptime, message);
1792 } 1792 }
1793 } else if (media_type == cricket::MEDIA_TYPE_DATA) { 1793 } else if (media_type == cricket::MEDIA_TYPE_DATA) {
1794 const DataContentDescription* data_desc = 1794 const DataContentDescription* data_desc =
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
2050 session_extmaps->push_back(extmap); 2050 session_extmaps->push_back(extmap);
2051 } 2051 }
2052 } 2052 }
2053 2053
2054 return true; 2054 return true;
2055 } 2055 }
2056 2056
2057 bool ParseGroupAttribute(const std::string& line, 2057 bool ParseGroupAttribute(const std::string& line,
2058 cricket::SessionDescription* desc, 2058 cricket::SessionDescription* desc,
2059 SdpParseError* error) { 2059 SdpParseError* error) {
2060 ASSERT(desc != NULL); 2060 RTC_DCHECK(desc != NULL);
2061 2061
2062 // RFC 5888 and draft-holmberg-mmusic-sdp-bundle-negotiation-00 2062 // RFC 5888 and draft-holmberg-mmusic-sdp-bundle-negotiation-00
2063 // a=group:BUNDLE video voice 2063 // a=group:BUNDLE video voice
2064 std::vector<std::string> fields; 2064 std::vector<std::string> fields;
2065 rtc::split(line.substr(kLinePrefixLength), 2065 rtc::split(line.substr(kLinePrefixLength),
2066 kSdpDelimiterSpace, &fields); 2066 kSdpDelimiterSpace, &fields);
2067 std::string semantics; 2067 std::string semantics;
2068 if (!GetValue(fields[0], kAttributeGroup, &semantics, error)) { 2068 if (!GetValue(fields[0], kAttributeGroup, &semantics, error)) {
2069 return false; 2069 return false;
2070 } 2070 }
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
2278 return media_desc; 2278 return media_desc;
2279 } 2279 }
2280 2280
2281 bool ParseMediaDescription(const std::string& message, 2281 bool ParseMediaDescription(const std::string& message,
2282 const TransportDescription& session_td, 2282 const TransportDescription& session_td,
2283 const RtpHeaderExtensions& session_extmaps, 2283 const RtpHeaderExtensions& session_extmaps,
2284 size_t* pos, 2284 size_t* pos,
2285 cricket::SessionDescription* desc, 2285 cricket::SessionDescription* desc,
2286 std::vector<JsepIceCandidate*>* candidates, 2286 std::vector<JsepIceCandidate*>* candidates,
2287 SdpParseError* error) { 2287 SdpParseError* error) {
2288 ASSERT(desc != NULL); 2288 RTC_DCHECK(desc != NULL);
2289 std::string line; 2289 std::string line;
2290 int mline_index = -1; 2290 int mline_index = -1;
2291 2291
2292 // Zero or more media descriptions 2292 // Zero or more media descriptions
2293 // RFC 4566 2293 // RFC 4566
2294 // m=<media> <port> <proto> <fmt> 2294 // m=<media> <port> <proto> <fmt>
2295 while (GetLineWithType(message, pos, &line, kLineTypeMedia)) { 2295 while (GetLineWithType(message, pos, &line, kLineTypeMedia)) {
2296 ++mline_index; 2296 ++mline_index;
2297 2297
2298 std::vector<std::string> fields; 2298 std::vector<std::string> fields;
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
2582 int mline_index, 2582 int mline_index,
2583 const std::string& protocol, 2583 const std::string& protocol,
2584 const std::vector<int>& payload_types, 2584 const std::vector<int>& payload_types,
2585 size_t* pos, 2585 size_t* pos,
2586 std::string* content_name, 2586 std::string* content_name,
2587 bool* bundle_only, 2587 bool* bundle_only,
2588 MediaContentDescription* media_desc, 2588 MediaContentDescription* media_desc,
2589 TransportDescription* transport, 2589 TransportDescription* transport,
2590 std::vector<JsepIceCandidate*>* candidates, 2590 std::vector<JsepIceCandidate*>* candidates,
2591 SdpParseError* error) { 2591 SdpParseError* error) {
2592 ASSERT(media_desc != NULL); 2592 RTC_DCHECK(media_desc != NULL);
2593 ASSERT(content_name != NULL); 2593 RTC_DCHECK(content_name != NULL);
2594 ASSERT(transport != NULL); 2594 RTC_DCHECK(transport != NULL);
2595 2595
2596 if (media_type == cricket::MEDIA_TYPE_AUDIO) { 2596 if (media_type == cricket::MEDIA_TYPE_AUDIO) {
2597 MaybeCreateStaticPayloadAudioCodecs( 2597 MaybeCreateStaticPayloadAudioCodecs(
2598 payload_types, static_cast<AudioContentDescription*>(media_desc)); 2598 payload_types, static_cast<AudioContentDescription*>(media_desc));
2599 } 2599 }
2600 2600
2601 // The media level "ice-ufrag" and "ice-pwd". 2601 // The media level "ice-ufrag" and "ice-pwd".
2602 // The candidates before update the media level "ice-pwd" and "ice-ufrag". 2602 // The candidates before update the media level "ice-pwd" and "ice-ufrag".
2603 Candidates candidates_orig; 2603 Candidates candidates_orig;
2604 std::string line; 2604 std::string line;
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
2839 // only rtcp-fb. 2839 // only rtcp-fb.
2840 if (!VerifyVideoCodecs(video_desc)) { 2840 if (!VerifyVideoCodecs(video_desc)) {
2841 return ParseFailed("Failed to parse video codecs correctly.", error); 2841 return ParseFailed("Failed to parse video codecs correctly.", error);
2842 } 2842 }
2843 } 2843 }
2844 2844
2845 // RFC 5245 2845 // RFC 5245
2846 // Update the candidates with the media level "ice-pwd" and "ice-ufrag". 2846 // Update the candidates with the media level "ice-pwd" and "ice-ufrag".
2847 for (Candidates::iterator it = candidates_orig.begin(); 2847 for (Candidates::iterator it = candidates_orig.begin();
2848 it != candidates_orig.end(); ++it) { 2848 it != candidates_orig.end(); ++it) {
2849 ASSERT((*it).username().empty() || 2849 RTC_DCHECK((*it).username().empty() ||
2850 (*it).username() == transport->ice_ufrag); 2850 (*it).username() == transport->ice_ufrag);
2851 (*it).set_username(transport->ice_ufrag); 2851 (*it).set_username(transport->ice_ufrag);
2852 ASSERT((*it).password().empty()); 2852 RTC_DCHECK((*it).password().empty());
2853 (*it).set_password(transport->ice_pwd); 2853 (*it).set_password(transport->ice_pwd);
2854 candidates->push_back( 2854 candidates->push_back(
2855 new JsepIceCandidate(mline_id, mline_index, *it)); 2855 new JsepIceCandidate(mline_id, mline_index, *it));
2856 } 2856 }
2857 return true; 2857 return true;
2858 } 2858 }
2859 2859
2860 bool ParseSsrcAttribute(const std::string& line, SsrcInfoVec* ssrc_infos, 2860 bool ParseSsrcAttribute(const std::string& line, SsrcInfoVec* ssrc_infos,
2861 SdpParseError* error) { 2861 SdpParseError* error) {
2862 ASSERT(ssrc_infos != NULL); 2862 RTC_DCHECK(ssrc_infos != NULL);
2863 // RFC 5576 2863 // RFC 5576
2864 // a=ssrc:<ssrc-id> <attribute> 2864 // a=ssrc:<ssrc-id> <attribute>
2865 // a=ssrc:<ssrc-id> <attribute>:<value> 2865 // a=ssrc:<ssrc-id> <attribute>:<value>
2866 std::string field1, field2; 2866 std::string field1, field2;
2867 if (!rtc::tokenize_first(line.substr(kLinePrefixLength), kSdpDelimiterSpace, 2867 if (!rtc::tokenize_first(line.substr(kLinePrefixLength), kSdpDelimiterSpace,
2868 &field1, &field2)) { 2868 &field1, &field2)) {
2869 const size_t expected_fields = 2; 2869 const size_t expected_fields = 2;
2870 return ParseFailedExpectFieldNum(line, expected_fields, error); 2870 return ParseFailedExpectFieldNum(line, expected_fields, error);
2871 } 2871 }
2872 2872
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
2931 // The label isn't defined. 2931 // The label isn't defined.
2932 // label:<value> 2932 // label:<value>
2933 ssrc_info->label = value; 2933 ssrc_info->label = value;
2934 } 2934 }
2935 return true; 2935 return true;
2936 } 2936 }
2937 2937
2938 bool ParseSsrcGroupAttribute(const std::string& line, 2938 bool ParseSsrcGroupAttribute(const std::string& line,
2939 SsrcGroupVec* ssrc_groups, 2939 SsrcGroupVec* ssrc_groups,
2940 SdpParseError* error) { 2940 SdpParseError* error) {
2941 ASSERT(ssrc_groups != NULL); 2941 RTC_DCHECK(ssrc_groups != NULL);
2942 // RFC 5576 2942 // RFC 5576
2943 // a=ssrc-group:<semantics> <ssrc-id> ... 2943 // a=ssrc-group:<semantics> <ssrc-id> ...
2944 std::vector<std::string> fields; 2944 std::vector<std::string> fields;
2945 rtc::split(line.substr(kLinePrefixLength), 2945 rtc::split(line.substr(kLinePrefixLength),
2946 kSdpDelimiterSpace, &fields); 2946 kSdpDelimiterSpace, &fields);
2947 const size_t expected_min_fields = 2; 2947 const size_t expected_min_fields = 2;
2948 if (fields.size() < expected_min_fields) { 2948 if (fields.size() < expected_min_fields) {
2949 return ParseFailedExpectMinFieldNum(line, expected_min_fields, error); 2949 return ParseFailedExpectMinFieldNum(line, expected_min_fields, error);
2950 } 2950 }
2951 std::string semantics; 2951 std::string semantics;
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
3225 UpdateCodec<AudioContentDescription, cricket::AudioCodec>( 3225 UpdateCodec<AudioContentDescription, cricket::AudioCodec>(
3226 media_desc, payload_type, feedback_param); 3226 media_desc, payload_type, feedback_param);
3227 } else if (media_type == cricket::MEDIA_TYPE_VIDEO) { 3227 } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
3228 UpdateCodec<VideoContentDescription, cricket::VideoCodec>( 3228 UpdateCodec<VideoContentDescription, cricket::VideoCodec>(
3229 media_desc, payload_type, feedback_param); 3229 media_desc, payload_type, feedback_param);
3230 } 3230 }
3231 return true; 3231 return true;
3232 } 3232 }
3233 3233
3234 } // namespace webrtc 3234 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/api/videocapturertracksource.cc ('k') | webrtc/api/webrtcsession.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698