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 |