| OLD | NEW |
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
| 9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 // a=sctp-port | 162 // a=sctp-port |
| 163 static const char kAttributeSctpPort[] = "sctp-port"; | 163 static const char kAttributeSctpPort[] = "sctp-port"; |
| 164 | 164 |
| 165 // Experimental flags | 165 // Experimental flags |
| 166 static const char kAttributeXGoogleFlag[] = "x-google-flag"; | 166 static const char kAttributeXGoogleFlag[] = "x-google-flag"; |
| 167 static const char kValueConference[] = "conference"; | 167 static const char kValueConference[] = "conference"; |
| 168 | 168 |
| 169 // Candidate | 169 // Candidate |
| 170 static const char kCandidateHost[] = "host"; | 170 static const char kCandidateHost[] = "host"; |
| 171 static const char kCandidateSrflx[] = "srflx"; | 171 static const char kCandidateSrflx[] = "srflx"; |
| 172 // TODO: How to map the prflx with circket candidate type | 172 static const char kCandidatePrflx[] = "prflx"; |
| 173 // static const char kCandidatePrflx[] = "prflx"; | |
| 174 static const char kCandidateRelay[] = "relay"; | 173 static const char kCandidateRelay[] = "relay"; |
| 175 static const char kTcpCandidateType[] = "tcptype"; | 174 static const char kTcpCandidateType[] = "tcptype"; |
| 176 | 175 |
| 177 static const char kSdpDelimiterEqual = '='; | 176 static const char kSdpDelimiterEqual = '='; |
| 178 static const char kSdpDelimiterSpace = ' '; | 177 static const char kSdpDelimiterSpace = ' '; |
| 179 static const char kSdpDelimiterColon = ':'; | 178 static const char kSdpDelimiterColon = ':'; |
| 180 static const char kSdpDelimiterSemicolon = ';'; | 179 static const char kSdpDelimiterSemicolon = ';'; |
| 181 static const char kSdpDelimiterSlash = '/'; | 180 static const char kSdpDelimiterSlash = '/'; |
| 182 static const char kNewLine = '\n'; | 181 static const char kNewLine = '\n'; |
| 183 static const char kReturn = '\r'; | 182 static const char kReturn = '\r'; |
| (...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1022 } | 1021 } |
| 1023 | 1022 |
| 1024 std::string candidate_type; | 1023 std::string candidate_type; |
| 1025 const std::string& type = fields[7]; | 1024 const std::string& type = fields[7]; |
| 1026 if (type == kCandidateHost) { | 1025 if (type == kCandidateHost) { |
| 1027 candidate_type = cricket::LOCAL_PORT_TYPE; | 1026 candidate_type = cricket::LOCAL_PORT_TYPE; |
| 1028 } else if (type == kCandidateSrflx) { | 1027 } else if (type == kCandidateSrflx) { |
| 1029 candidate_type = cricket::STUN_PORT_TYPE; | 1028 candidate_type = cricket::STUN_PORT_TYPE; |
| 1030 } else if (type == kCandidateRelay) { | 1029 } else if (type == kCandidateRelay) { |
| 1031 candidate_type = cricket::RELAY_PORT_TYPE; | 1030 candidate_type = cricket::RELAY_PORT_TYPE; |
| 1031 } else if (type == kCandidatePrflx) { |
| 1032 candidate_type = cricket::PRFLX_PORT_TYPE; |
| 1032 } else { | 1033 } else { |
| 1033 return ParseFailed(first_line, "Unsupported candidate type.", error); | 1034 return ParseFailed(first_line, "Unsupported candidate type.", error); |
| 1034 } | 1035 } |
| 1035 | 1036 |
| 1036 size_t current_position = expected_min_fields; | 1037 size_t current_position = expected_min_fields; |
| 1037 SocketAddress related_address; | 1038 SocketAddress related_address; |
| 1038 // The 2 optional fields for related address | 1039 // The 2 optional fields for related address |
| 1039 // [raddr <connection-address>] [rport <port>] | 1040 // [raddr <connection-address>] [rport <port>] |
| 1040 if (fields.size() >= (current_position + 2) && | 1041 if (fields.size() >= (current_position + 2) && |
| 1041 fields[current_position] == kAttributeCandidateRaddr) { | 1042 fields[current_position] == kAttributeCandidateRaddr) { |
| (...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1734 // [raddr <connection-address>] [rport <port>] | 1735 // [raddr <connection-address>] [rport <port>] |
| 1735 // *(SP extension-att-name SP extension-att-value) | 1736 // *(SP extension-att-name SP extension-att-value) |
| 1736 std::string type; | 1737 std::string type; |
| 1737 // Map the cricket candidate type to "host" / "srflx" / "prflx" / "relay" | 1738 // Map the cricket candidate type to "host" / "srflx" / "prflx" / "relay" |
| 1738 if (it->type() == cricket::LOCAL_PORT_TYPE) { | 1739 if (it->type() == cricket::LOCAL_PORT_TYPE) { |
| 1739 type = kCandidateHost; | 1740 type = kCandidateHost; |
| 1740 } else if (it->type() == cricket::STUN_PORT_TYPE) { | 1741 } else if (it->type() == cricket::STUN_PORT_TYPE) { |
| 1741 type = kCandidateSrflx; | 1742 type = kCandidateSrflx; |
| 1742 } else if (it->type() == cricket::RELAY_PORT_TYPE) { | 1743 } else if (it->type() == cricket::RELAY_PORT_TYPE) { |
| 1743 type = kCandidateRelay; | 1744 type = kCandidateRelay; |
| 1745 } else if (it->type() == cricket::PRFLX_PORT_TYPE) { |
| 1746 type = kCandidatePrflx; |
| 1747 // Peer reflexive candidate should only be signaled with priority 0 for |
| 1748 // being removed. |
| 1749 ASSERT(it->priority() == 0); |
| 1744 } else { | 1750 } else { |
| 1745 ASSERT(false); | 1751 ASSERT(false); |
| 1746 // Never write out candidates if we don't know the type. | 1752 // Never write out candidates if we don't know the type. |
| 1747 continue; | 1753 continue; |
| 1748 } | 1754 } |
| 1749 | 1755 |
| 1750 InitAttrLine(kAttributeCandidate, &os); | 1756 InitAttrLine(kAttributeCandidate, &os); |
| 1751 os << kSdpDelimiterColon | 1757 os << kSdpDelimiterColon |
| 1752 << it->foundation() << " " | 1758 << it->foundation() << " " |
| 1753 << it->component() << " " | 1759 << it->component() << " " |
| (...skipping 1320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3074 UpdateCodec<AudioContentDescription, cricket::AudioCodec>( | 3080 UpdateCodec<AudioContentDescription, cricket::AudioCodec>( |
| 3075 media_desc, payload_type, feedback_param); | 3081 media_desc, payload_type, feedback_param); |
| 3076 } else if (media_type == cricket::MEDIA_TYPE_VIDEO) { | 3082 } else if (media_type == cricket::MEDIA_TYPE_VIDEO) { |
| 3077 UpdateCodec<VideoContentDescription, cricket::VideoCodec>( | 3083 UpdateCodec<VideoContentDescription, cricket::VideoCodec>( |
| 3078 media_desc, payload_type, feedback_param); | 3084 media_desc, payload_type, feedback_param); |
| 3079 } | 3085 } |
| 3080 return true; | 3086 return true; |
| 3081 } | 3087 } |
| 3082 | 3088 |
| 3083 } // namespace webrtc | 3089 } // namespace webrtc |
| OLD | NEW |