Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 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 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 492 } | 492 } |
| 493 | 493 |
| 494 if (rtc_options.offer_to_receive_audio != RTCOfferAnswerOptions::kUndefined) { | 494 if (rtc_options.offer_to_receive_audio != RTCOfferAnswerOptions::kUndefined) { |
| 495 session_options->recv_audio = (rtc_options.offer_to_receive_audio > 0); | 495 session_options->recv_audio = (rtc_options.offer_to_receive_audio > 0); |
| 496 } | 496 } |
| 497 if (rtc_options.offer_to_receive_video != RTCOfferAnswerOptions::kUndefined) { | 497 if (rtc_options.offer_to_receive_video != RTCOfferAnswerOptions::kUndefined) { |
| 498 session_options->recv_video = (rtc_options.offer_to_receive_video > 0); | 498 session_options->recv_video = (rtc_options.offer_to_receive_video > 0); |
| 499 } | 499 } |
| 500 | 500 |
| 501 session_options->vad_enabled = rtc_options.voice_activity_detection; | 501 session_options->vad_enabled = rtc_options.voice_activity_detection; |
| 502 session_options->transport_options.ice_restart = rtc_options.ice_restart; | 502 session_options->audio_transport_options.ice_restart = |
| 503 rtc_options.ice_restart; | |
| 504 session_options->video_transport_options.ice_restart = | |
| 505 rtc_options.ice_restart; | |
| 506 session_options->data_transport_options.ice_restart = rtc_options.ice_restart; | |
| 503 session_options->bundle_enabled = rtc_options.use_rtp_mux; | 507 session_options->bundle_enabled = rtc_options.use_rtp_mux; |
| 504 | 508 |
| 505 return true; | 509 return true; |
| 506 } | 510 } |
| 507 | 511 |
| 508 bool ParseConstraintsForAnswer(const MediaConstraintsInterface* constraints, | 512 bool ParseConstraintsForAnswer(const MediaConstraintsInterface* constraints, |
| 509 cricket::MediaSessionOptions* session_options) { | 513 cricket::MediaSessionOptions* session_options) { |
| 510 bool value = false; | 514 bool value = false; |
| 511 size_t mandatory_constraints_satisfied = 0; | 515 size_t mandatory_constraints_satisfied = 0; |
| 512 | 516 |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 538 if (FindConstraint(constraints, MediaConstraintsInterface::kUseRtpMux, &value, | 542 if (FindConstraint(constraints, MediaConstraintsInterface::kUseRtpMux, &value, |
| 539 &mandatory_constraints_satisfied)) { | 543 &mandatory_constraints_satisfied)) { |
| 540 session_options->bundle_enabled = value; | 544 session_options->bundle_enabled = value; |
| 541 } else { | 545 } else { |
| 542 // kUseRtpMux defaults to true according to spec. | 546 // kUseRtpMux defaults to true according to spec. |
| 543 session_options->bundle_enabled = true; | 547 session_options->bundle_enabled = true; |
| 544 } | 548 } |
| 545 | 549 |
| 546 if (FindConstraint(constraints, MediaConstraintsInterface::kIceRestart, | 550 if (FindConstraint(constraints, MediaConstraintsInterface::kIceRestart, |
| 547 &value, &mandatory_constraints_satisfied)) { | 551 &value, &mandatory_constraints_satisfied)) { |
| 548 session_options->transport_options.ice_restart = value; | 552 session_options->audio_transport_options.ice_restart = value; |
| 553 session_options->video_transport_options.ice_restart = value; | |
| 554 session_options->data_transport_options.ice_restart = value; | |
| 549 } else { | 555 } else { |
| 550 // kIceRestart defaults to false according to spec. | 556 // kIceRestart defaults to false according to spec. |
| 551 session_options->transport_options.ice_restart = false; | 557 session_options->audio_transport_options.ice_restart = false; |
| 558 session_options->video_transport_options.ice_restart = false; | |
| 559 session_options->data_transport_options.ice_restart = false; | |
| 552 } | 560 } |
| 553 | 561 |
| 554 if (!constraints) { | 562 if (!constraints) { |
| 555 return true; | 563 return true; |
| 556 } | 564 } |
| 557 return mandatory_constraints_satisfied == constraints->GetMandatory().size(); | 565 return mandatory_constraints_satisfied == constraints->GetMandatory().size(); |
| 558 } | 566 } |
| 559 | 567 |
| 560 bool ParseIceServers(const PeerConnectionInterface::IceServers& servers, | 568 bool ParseIceServers(const PeerConnectionInterface::IceServers& servers, |
| 561 StunConfigurations* stun_config, | 569 StunConfigurations* stun_config, |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1047 std::string error; | 1055 std::string error; |
| 1048 if (!session_->SetLocalDescription(desc, &error)) { | 1056 if (!session_->SetLocalDescription(desc, &error)) { |
| 1049 PostSetSessionDescriptionFailure(observer, error); | 1057 PostSetSessionDescriptionFailure(observer, error); |
| 1050 return; | 1058 return; |
| 1051 } | 1059 } |
| 1052 | 1060 |
| 1053 // If setting the description decided our SSL role, allocate any necessary | 1061 // If setting the description decided our SSL role, allocate any necessary |
| 1054 // SCTP sids. | 1062 // SCTP sids. |
| 1055 rtc::SSLRole role; | 1063 rtc::SSLRole role; |
| 1056 if (session_->data_channel_type() == cricket::DCT_SCTP && | 1064 if (session_->data_channel_type() == cricket::DCT_SCTP && |
| 1057 session_->GetSslRole(&role)) { | 1065 session_->data_channel() && |
|
pthatcher1
2015/12/11 03:16:09
This is duplicated a lot. Perhaps make a GetSslRo
Taylor Brandstetter
2016/01/07 22:25:55
Done.
| |
| 1066 session_->GetSslRole(session_->data_channel()->transport_name(), &role)) { | |
| 1058 AllocateSctpSids(role); | 1067 AllocateSctpSids(role); |
| 1059 } | 1068 } |
| 1060 | 1069 |
| 1061 // Update state and SSRC of local MediaStreams and DataChannels based on the | 1070 // Update state and SSRC of local MediaStreams and DataChannels based on the |
| 1062 // local session description. | 1071 // local session description. |
| 1063 const cricket::ContentInfo* audio_content = | 1072 const cricket::ContentInfo* audio_content = |
| 1064 GetFirstAudioContent(desc->description()); | 1073 GetFirstAudioContent(desc->description()); |
| 1065 if (audio_content) { | 1074 if (audio_content) { |
| 1066 if (audio_content->rejected) { | 1075 if (audio_content->rejected) { |
| 1067 RemoveTracks(cricket::MEDIA_TYPE_AUDIO); | 1076 RemoveTracks(cricket::MEDIA_TYPE_AUDIO); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1125 std::string error; | 1134 std::string error; |
| 1126 if (!session_->SetRemoteDescription(desc, &error)) { | 1135 if (!session_->SetRemoteDescription(desc, &error)) { |
| 1127 PostSetSessionDescriptionFailure(observer, error); | 1136 PostSetSessionDescriptionFailure(observer, error); |
| 1128 return; | 1137 return; |
| 1129 } | 1138 } |
| 1130 | 1139 |
| 1131 // If setting the description decided our SSL role, allocate any necessary | 1140 // If setting the description decided our SSL role, allocate any necessary |
| 1132 // SCTP sids. | 1141 // SCTP sids. |
| 1133 rtc::SSLRole role; | 1142 rtc::SSLRole role; |
| 1134 if (session_->data_channel_type() == cricket::DCT_SCTP && | 1143 if (session_->data_channel_type() == cricket::DCT_SCTP && |
| 1135 session_->GetSslRole(&role)) { | 1144 session_->data_channel() && |
| 1145 session_->GetSslRole(session_->data_channel()->transport_name(), &role)) { | |
| 1136 AllocateSctpSids(role); | 1146 AllocateSctpSids(role); |
| 1137 } | 1147 } |
| 1138 | 1148 |
| 1139 const cricket::SessionDescription* remote_desc = desc->description(); | 1149 const cricket::SessionDescription* remote_desc = desc->description(); |
| 1140 const cricket::ContentInfo* audio_content = GetFirstAudioContent(remote_desc); | 1150 const cricket::ContentInfo* audio_content = GetFirstAudioContent(remote_desc); |
| 1141 const cricket::ContentInfo* video_content = GetFirstVideoContent(remote_desc); | 1151 const cricket::ContentInfo* video_content = GetFirstVideoContent(remote_desc); |
| 1142 const cricket::AudioContentDescription* audio_desc = | 1152 const cricket::AudioContentDescription* audio_desc = |
| 1143 GetFirstAudioContentDescription(remote_desc); | 1153 GetFirstAudioContentDescription(remote_desc); |
| 1144 const cricket::VideoContentDescription* video_desc = | 1154 const cricket::VideoContentDescription* video_desc = |
| 1145 GetFirstVideoContentDescription(remote_desc); | 1155 GetFirstVideoContentDescription(remote_desc); |
| (...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1848 if (session_->data_channel_type() == cricket::DCT_NONE) { | 1858 if (session_->data_channel_type() == cricket::DCT_NONE) { |
| 1849 LOG(LS_ERROR) | 1859 LOG(LS_ERROR) |
| 1850 << "InternalCreateDataChannel: Data is not supported in this call."; | 1860 << "InternalCreateDataChannel: Data is not supported in this call."; |
| 1851 return nullptr; | 1861 return nullptr; |
| 1852 } | 1862 } |
| 1853 InternalDataChannelInit new_config = | 1863 InternalDataChannelInit new_config = |
| 1854 config ? (*config) : InternalDataChannelInit(); | 1864 config ? (*config) : InternalDataChannelInit(); |
| 1855 if (session_->data_channel_type() == cricket::DCT_SCTP) { | 1865 if (session_->data_channel_type() == cricket::DCT_SCTP) { |
| 1856 if (new_config.id < 0) { | 1866 if (new_config.id < 0) { |
| 1857 rtc::SSLRole role; | 1867 rtc::SSLRole role; |
| 1858 if (session_->GetSslRole(&role) && | 1868 if ((session_->data_channel() && |
| 1869 session_->GetSslRole(session_->data_channel()->transport_name(), | |
| 1870 &role)) && | |
| 1859 !sid_allocator_.AllocateSid(role, &new_config.id)) { | 1871 !sid_allocator_.AllocateSid(role, &new_config.id)) { |
| 1860 LOG(LS_ERROR) << "No id can be allocated for the SCTP data channel."; | 1872 LOG(LS_ERROR) << "No id can be allocated for the SCTP data channel."; |
| 1861 return nullptr; | 1873 return nullptr; |
| 1862 } | 1874 } |
| 1863 } else if (!sid_allocator_.ReserveSid(new_config.id)) { | 1875 } else if (!sid_allocator_.ReserveSid(new_config.id)) { |
| 1864 LOG(LS_ERROR) << "Failed to create a SCTP data channel " | 1876 LOG(LS_ERROR) << "Failed to create a SCTP data channel " |
| 1865 << "because the id is already in use or out of range."; | 1877 << "because the id is already in use or out of range."; |
| 1866 return nullptr; | 1878 return nullptr; |
| 1867 } | 1879 } |
| 1868 } | 1880 } |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2029 DataChannel* PeerConnection::FindDataChannelBySid(int sid) const { | 2041 DataChannel* PeerConnection::FindDataChannelBySid(int sid) const { |
| 2030 for (const auto& channel : sctp_data_channels_) { | 2042 for (const auto& channel : sctp_data_channels_) { |
| 2031 if (channel->id() == sid) { | 2043 if (channel->id() == sid) { |
| 2032 return channel; | 2044 return channel; |
| 2033 } | 2045 } |
| 2034 } | 2046 } |
| 2035 return nullptr; | 2047 return nullptr; |
| 2036 } | 2048 } |
| 2037 | 2049 |
| 2038 } // namespace webrtc | 2050 } // namespace webrtc |
| OLD | NEW |