| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2017 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2017 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 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 return {ortc_factory1_->CreateRtpTransportController().MoveValue(), | 121 return {ortc_factory1_->CreateRtpTransportController().MoveValue(), |
| 122 ortc_factory2_->CreateRtpTransportController().MoveValue()}; | 122 ortc_factory2_->CreateRtpTransportController().MoveValue()}; |
| 123 } | 123 } |
| 124 | 124 |
| 125 // Helper function that creates a pair of RtpTransports between | 125 // Helper function that creates a pair of RtpTransports between |
| 126 // |ortc_factory1_| and |ortc_factory2_|. Expected to be called with the | 126 // |ortc_factory1_| and |ortc_factory2_|. Expected to be called with the |
| 127 // result of CreateAndConnectUdpTransportPair. |rtcp_udp_transports| can be | 127 // result of CreateAndConnectUdpTransportPair. |rtcp_udp_transports| can be |
| 128 // empty if RTCP muxing is used. |transport_controllers| can be empty if | 128 // empty if RTCP muxing is used. |transport_controllers| can be empty if |
| 129 // these transports are being created using a default transport controller. | 129 // these transports are being created using a default transport controller. |
| 130 RtpTransportPair CreateRtpTransportPair( | 130 RtpTransportPair CreateRtpTransportPair( |
| 131 const RtcpParameters& rtcp_parameters, | 131 const RtpTransportParameters& parameters, |
| 132 const UdpTransportPair& rtp_udp_transports, | 132 const UdpTransportPair& rtp_udp_transports, |
| 133 const UdpTransportPair& rtcp_udp_transports, | 133 const UdpTransportPair& rtcp_udp_transports, |
| 134 const RtpTransportControllerPair& transport_controllers) { | 134 const RtpTransportControllerPair& transport_controllers) { |
| 135 auto transport_result1 = ortc_factory1_->CreateRtpTransport( | 135 auto transport_result1 = ortc_factory1_->CreateRtpTransport( |
| 136 rtcp_parameters, rtp_udp_transports.first.get(), | 136 parameters, rtp_udp_transports.first.get(), |
| 137 rtcp_udp_transports.first.get(), transport_controllers.first.get()); | 137 rtcp_udp_transports.first.get(), transport_controllers.first.get()); |
| 138 auto transport_result2 = ortc_factory2_->CreateRtpTransport( | 138 auto transport_result2 = ortc_factory2_->CreateRtpTransport( |
| 139 rtcp_parameters, rtp_udp_transports.second.get(), | 139 parameters, rtp_udp_transports.second.get(), |
| 140 rtcp_udp_transports.second.get(), transport_controllers.second.get()); | 140 rtcp_udp_transports.second.get(), transport_controllers.second.get()); |
| 141 return {transport_result1.MoveValue(), transport_result2.MoveValue()}; | 141 return {transport_result1.MoveValue(), transport_result2.MoveValue()}; |
| 142 } | 142 } |
| 143 | 143 |
| 144 SrtpTransportPair CreateSrtpTransportPair( | 144 SrtpTransportPair CreateSrtpTransportPair( |
| 145 const RtcpParameters& rtcp_parameters, | 145 const RtpTransportParameters& parameters, |
| 146 const UdpTransportPair& rtp_udp_transports, | 146 const UdpTransportPair& rtp_udp_transports, |
| 147 const UdpTransportPair& rtcp_udp_transports, | 147 const UdpTransportPair& rtcp_udp_transports, |
| 148 const RtpTransportControllerPair& transport_controllers) { | 148 const RtpTransportControllerPair& transport_controllers) { |
| 149 auto transport_result1 = ortc_factory1_->CreateSrtpTransport( | 149 auto transport_result1 = ortc_factory1_->CreateSrtpTransport( |
| 150 rtcp_parameters, rtp_udp_transports.first.get(), | 150 parameters, rtp_udp_transports.first.get(), |
| 151 rtcp_udp_transports.first.get(), transport_controllers.first.get()); | 151 rtcp_udp_transports.first.get(), transport_controllers.first.get()); |
| 152 auto transport_result2 = ortc_factory2_->CreateSrtpTransport( | 152 auto transport_result2 = ortc_factory2_->CreateSrtpTransport( |
| 153 rtcp_parameters, rtp_udp_transports.second.get(), | 153 parameters, rtp_udp_transports.second.get(), |
| 154 rtcp_udp_transports.second.get(), transport_controllers.second.get()); | 154 rtcp_udp_transports.second.get(), transport_controllers.second.get()); |
| 155 return {transport_result1.MoveValue(), transport_result2.MoveValue()}; | 155 return {transport_result1.MoveValue(), transport_result2.MoveValue()}; |
| 156 } | 156 } |
| 157 | 157 |
| 158 // For convenience when |rtcp_udp_transports| and |transport_controllers| | 158 // For convenience when |rtcp_udp_transports| and |transport_controllers| |
| 159 // aren't needed. | 159 // aren't needed. |
| 160 RtpTransportPair CreateRtpTransportPair( | 160 RtpTransportPair CreateRtpTransportPair( |
| 161 const RtcpParameters& rtcp_parameters, | 161 const RtpTransportParameters& parameters, |
| 162 const UdpTransportPair& rtp_udp_transports) { | 162 const UdpTransportPair& rtp_udp_transports) { |
| 163 return CreateRtpTransportPair(rtcp_parameters, rtp_udp_transports, | 163 return CreateRtpTransportPair(parameters, rtp_udp_transports, |
| 164 UdpTransportPair(), | 164 UdpTransportPair(), |
| 165 RtpTransportControllerPair()); | 165 RtpTransportControllerPair()); |
| 166 } | 166 } |
| 167 | 167 |
| 168 SrtpTransportPair CreateSrtpTransportPairAndSetKeys( | 168 SrtpTransportPair CreateSrtpTransportPairAndSetKeys( |
| 169 const RtcpParameters& rtcp_parameters, | 169 const RtpTransportParameters& parameters, |
| 170 const UdpTransportPair& rtp_udp_transports) { | 170 const UdpTransportPair& rtp_udp_transports) { |
| 171 SrtpTransportPair srtp_transports = CreateSrtpTransportPair( | 171 SrtpTransportPair srtp_transports = CreateSrtpTransportPair( |
| 172 rtcp_parameters, rtp_udp_transports, UdpTransportPair(), | 172 parameters, rtp_udp_transports, UdpTransportPair(), |
| 173 RtpTransportControllerPair()); | 173 RtpTransportControllerPair()); |
| 174 EXPECT_TRUE(srtp_transports.first->SetSrtpSendKey(kTestCryptoParams1).ok()); | 174 EXPECT_TRUE(srtp_transports.first->SetSrtpSendKey(kTestCryptoParams1).ok()); |
| 175 EXPECT_TRUE( | 175 EXPECT_TRUE( |
| 176 srtp_transports.first->SetSrtpReceiveKey(kTestCryptoParams2).ok()); | 176 srtp_transports.first->SetSrtpReceiveKey(kTestCryptoParams2).ok()); |
| 177 EXPECT_TRUE( | 177 EXPECT_TRUE( |
| 178 srtp_transports.second->SetSrtpSendKey(kTestCryptoParams2).ok()); | 178 srtp_transports.second->SetSrtpSendKey(kTestCryptoParams2).ok()); |
| 179 EXPECT_TRUE( | 179 EXPECT_TRUE( |
| 180 srtp_transports.second->SetSrtpReceiveKey(kTestCryptoParams1).ok()); | 180 srtp_transports.second->SetSrtpReceiveKey(kTestCryptoParams1).ok()); |
| 181 return srtp_transports; | 181 return srtp_transports; |
| 182 } | 182 } |
| 183 | 183 |
| 184 SrtpTransportPair CreateSrtpTransportPairAndSetMismatchingKeys( | 184 SrtpTransportPair CreateSrtpTransportPairAndSetMismatchingKeys( |
| 185 const RtcpParameters& rtcp_parameters, | 185 const RtpTransportParameters& parameters, |
| 186 const UdpTransportPair& rtp_udp_transports) { | 186 const UdpTransportPair& rtp_udp_transports) { |
| 187 SrtpTransportPair srtp_transports = CreateSrtpTransportPair( | 187 SrtpTransportPair srtp_transports = CreateSrtpTransportPair( |
| 188 rtcp_parameters, rtp_udp_transports, UdpTransportPair(), | 188 parameters, rtp_udp_transports, UdpTransportPair(), |
| 189 RtpTransportControllerPair()); | 189 RtpTransportControllerPair()); |
| 190 EXPECT_TRUE(srtp_transports.first->SetSrtpSendKey(kTestCryptoParams1).ok()); | 190 EXPECT_TRUE(srtp_transports.first->SetSrtpSendKey(kTestCryptoParams1).ok()); |
| 191 EXPECT_TRUE( | 191 EXPECT_TRUE( |
| 192 srtp_transports.first->SetSrtpReceiveKey(kTestCryptoParams2).ok()); | 192 srtp_transports.first->SetSrtpReceiveKey(kTestCryptoParams2).ok()); |
| 193 EXPECT_TRUE( | 193 EXPECT_TRUE( |
| 194 srtp_transports.second->SetSrtpSendKey(kTestCryptoParams1).ok()); | 194 srtp_transports.second->SetSrtpSendKey(kTestCryptoParams1).ok()); |
| 195 EXPECT_TRUE( | 195 EXPECT_TRUE( |
| 196 srtp_transports.second->SetSrtpReceiveKey(kTestCryptoParams2).ok()); | 196 srtp_transports.second->SetSrtpReceiveKey(kTestCryptoParams2).ok()); |
| 197 return srtp_transports; | 197 return srtp_transports; |
| 198 } | 198 } |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 // RTP/RTCP. | 551 // RTP/RTCP. |
| 552 auto audio_rtp_udp_transports = CreateAndConnectUdpTransportPair(); | 552 auto audio_rtp_udp_transports = CreateAndConnectUdpTransportPair(); |
| 553 auto audio_rtcp_udp_transports = CreateAndConnectUdpTransportPair(); | 553 auto audio_rtcp_udp_transports = CreateAndConnectUdpTransportPair(); |
| 554 auto video_rtp_udp_transports = CreateAndConnectUdpTransportPair(); | 554 auto video_rtp_udp_transports = CreateAndConnectUdpTransportPair(); |
| 555 auto video_rtcp_udp_transports = CreateAndConnectUdpTransportPair(); | 555 auto video_rtcp_udp_transports = CreateAndConnectUdpTransportPair(); |
| 556 | 556 |
| 557 // Since we have multiple RTP transports on each side, we need an RTP | 557 // Since we have multiple RTP transports on each side, we need an RTP |
| 558 // transport controller. | 558 // transport controller. |
| 559 auto transport_controllers = CreateRtpTransportControllerPair(); | 559 auto transport_controllers = CreateRtpTransportControllerPair(); |
| 560 | 560 |
| 561 RtcpParameters audio_rtcp_parameters; | 561 RtpTransportParameters audio_rtp_transport_parameters; |
| 562 audio_rtcp_parameters.mux = false; | 562 audio_rtp_transport_parameters.rtcp.mux = false; |
| 563 auto audio_srtp_transports = | 563 auto audio_srtp_transports = CreateSrtpTransportPair( |
| 564 CreateSrtpTransportPair(audio_rtcp_parameters, audio_rtp_udp_transports, | 564 audio_rtp_transport_parameters, audio_rtp_udp_transports, |
| 565 audio_rtcp_udp_transports, transport_controllers); | 565 audio_rtcp_udp_transports, transport_controllers); |
| 566 | 566 |
| 567 RtcpParameters video_rtcp_parameters; | 567 RtpTransportParameters video_rtp_transport_parameters; |
| 568 video_rtcp_parameters.mux = false; | 568 video_rtp_transport_parameters.rtcp.mux = false; |
| 569 video_rtcp_parameters.reduced_size = true; | 569 video_rtp_transport_parameters.rtcp.reduced_size = true; |
| 570 auto video_srtp_transports = | 570 auto video_srtp_transports = CreateSrtpTransportPair( |
| 571 CreateSrtpTransportPair(video_rtcp_parameters, video_rtp_udp_transports, | 571 video_rtp_transport_parameters, video_rtp_udp_transports, |
| 572 video_rtcp_udp_transports, transport_controllers); | 572 video_rtcp_udp_transports, transport_controllers); |
| 573 | 573 |
| 574 // Set keys for SRTP transports. | 574 // Set keys for SRTP transports. |
| 575 audio_srtp_transports.first->SetSrtpSendKey(kTestCryptoParams1); | 575 audio_srtp_transports.first->SetSrtpSendKey(kTestCryptoParams1); |
| 576 audio_srtp_transports.first->SetSrtpReceiveKey(kTestCryptoParams2); | 576 audio_srtp_transports.first->SetSrtpReceiveKey(kTestCryptoParams2); |
| 577 video_srtp_transports.first->SetSrtpSendKey(kTestCryptoParams3); | 577 video_srtp_transports.first->SetSrtpSendKey(kTestCryptoParams3); |
| 578 video_srtp_transports.first->SetSrtpReceiveKey(kTestCryptoParams4); | 578 video_srtp_transports.first->SetSrtpReceiveKey(kTestCryptoParams4); |
| 579 | 579 |
| 580 audio_srtp_transports.second->SetSrtpSendKey(kTestCryptoParams2); | 580 audio_srtp_transports.second->SetSrtpSendKey(kTestCryptoParams2); |
| 581 audio_srtp_transports.second->SetSrtpReceiveKey(kTestCryptoParams1); | 581 audio_srtp_transports.second->SetSrtpReceiveKey(kTestCryptoParams1); |
| 582 video_srtp_transports.second->SetSrtpSendKey(kTestCryptoParams4); | 582 video_srtp_transports.second->SetSrtpSendKey(kTestCryptoParams4); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 // BaseChannel model relies on there being a single VoiceChannel and | 682 // BaseChannel model relies on there being a single VoiceChannel and |
| 683 // VideoChannel, and these only support a single set of codecs/etc. per | 683 // VideoChannel, and these only support a single set of codecs/etc. per |
| 684 // send/receive direction. | 684 // send/receive direction. |
| 685 | 685 |
| 686 // TODO(deadbeef): End-to-end test for simulcast, once that's supported by this | 686 // TODO(deadbeef): End-to-end test for simulcast, once that's supported by this |
| 687 // API. | 687 // API. |
| 688 | 688 |
| 689 #endif // if !defined(THREAD_SANITIZER) | 689 #endif // if !defined(THREAD_SANITIZER) |
| 690 | 690 |
| 691 } // namespace webrtc | 691 } // namespace webrtc |
| OLD | NEW |