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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
85 protected: | 85 protected: |
86 RtpTransportControllerAdapter* GetInternal() override { | 86 RtpTransportControllerAdapter* GetInternal() override { |
87 return internal(); | 87 return internal(); |
88 } | 88 } |
89 END_PROXY_MAP() | 89 END_PROXY_MAP() |
90 | 90 |
91 // static | 91 // static |
92 std::unique_ptr<RtpTransportControllerInterface> | 92 std::unique_ptr<RtpTransportControllerInterface> |
93 RtpTransportControllerAdapter::CreateProxied( | 93 RtpTransportControllerAdapter::CreateProxied( |
94 const cricket::MediaConfig& config, | 94 const cricket::MediaConfig& config, |
95 const RtpTransportParameters& parameters, | |
95 cricket::ChannelManager* channel_manager, | 96 cricket::ChannelManager* channel_manager, |
96 webrtc::RtcEventLog* event_log, | 97 webrtc::RtcEventLog* event_log, |
97 rtc::Thread* signaling_thread, | 98 rtc::Thread* signaling_thread, |
98 rtc::Thread* worker_thread) { | 99 rtc::Thread* worker_thread) { |
99 std::unique_ptr<RtpTransportControllerAdapter> wrapped( | 100 std::unique_ptr<RtpTransportControllerAdapter> wrapped( |
100 new RtpTransportControllerAdapter(config, channel_manager, event_log, | 101 new RtpTransportControllerAdapter(config, parameters, channel_manager, |
101 signaling_thread, worker_thread)); | 102 event_log, signaling_thread, |
103 worker_thread)); | |
102 return RtpTransportControllerProxyWithInternal< | 104 return RtpTransportControllerProxyWithInternal< |
103 RtpTransportControllerAdapter>::Create(signaling_thread, worker_thread, | 105 RtpTransportControllerAdapter>::Create(signaling_thread, worker_thread, |
104 std::move(wrapped)); | 106 std::move(wrapped)); |
105 } | 107 } |
106 | 108 |
107 RtpTransportControllerAdapter::~RtpTransportControllerAdapter() { | 109 RtpTransportControllerAdapter::~RtpTransportControllerAdapter() { |
108 RTC_DCHECK_RUN_ON(signaling_thread_); | 110 RTC_DCHECK_RUN_ON(signaling_thread_); |
109 if (!transport_proxies_.empty()) { | 111 if (!transport_proxies_.empty()) { |
110 LOG(LS_ERROR) | 112 LOG(LS_ERROR) |
111 << "Destroying RtpTransportControllerAdapter while RtpTransports " | 113 << "Destroying RtpTransportControllerAdapter while RtpTransports " |
(...skipping 10 matching lines...) Expand all Loading... | |
122 DestroyVideoChannel(); | 124 DestroyVideoChannel(); |
123 } | 125 } |
124 // Call must be destroyed on the worker thread. | 126 // Call must be destroyed on the worker thread. |
125 worker_thread_->Invoke<void>( | 127 worker_thread_->Invoke<void>( |
126 RTC_FROM_HERE, | 128 RTC_FROM_HERE, |
127 rtc::Bind(&RtpTransportControllerAdapter::Close_w, this)); | 129 rtc::Bind(&RtpTransportControllerAdapter::Close_w, this)); |
128 } | 130 } |
129 | 131 |
130 RTCErrorOr<std::unique_ptr<RtpTransportInterface>> | 132 RTCErrorOr<std::unique_ptr<RtpTransportInterface>> |
131 RtpTransportControllerAdapter::CreateProxiedRtpTransport( | 133 RtpTransportControllerAdapter::CreateProxiedRtpTransport( |
132 const RtcpParameters& rtcp_parameters, | 134 const RtpTransportParameters& parameters, |
133 PacketTransportInterface* rtp, | 135 PacketTransportInterface* rtp, |
134 PacketTransportInterface* rtcp) { | 136 PacketTransportInterface* rtcp) { |
135 auto result = | 137 auto result = RtpTransportAdapter::CreateProxied(parameters, rtp, rtcp, this); |
136 RtpTransportAdapter::CreateProxied(rtcp_parameters, rtp, rtcp, this); | |
137 if (result.ok()) { | 138 if (result.ok()) { |
138 transport_proxies_.push_back(result.value().get()); | 139 transport_proxies_.push_back(result.value().get()); |
139 transport_proxies_.back()->GetInternal()->SignalDestroyed.connect( | 140 transport_proxies_.back()->GetInternal()->SignalDestroyed.connect( |
140 this, &RtpTransportControllerAdapter::OnRtpTransportDestroyed); | 141 this, &RtpTransportControllerAdapter::OnRtpTransportDestroyed); |
141 } | 142 } |
142 return result; | 143 return result; |
143 } | 144 } |
144 | 145 |
145 RTCErrorOr<std::unique_ptr<SrtpTransportInterface>> | 146 RTCErrorOr<std::unique_ptr<SrtpTransportInterface>> |
146 RtpTransportControllerAdapter::CreateProxiedSrtpTransport( | 147 RtpTransportControllerAdapter::CreateProxiedSrtpTransport( |
147 const RtcpParameters& rtcp_parameters, | 148 const RtpTransportParameters& parameters, |
148 PacketTransportInterface* rtp, | 149 PacketTransportInterface* rtp, |
149 PacketTransportInterface* rtcp) { | 150 PacketTransportInterface* rtcp) { |
150 auto result = | 151 auto result = |
151 RtpTransportAdapter::CreateSrtpProxied(rtcp_parameters, rtp, rtcp, this); | 152 RtpTransportAdapter::CreateSrtpProxied(parameters, rtp, rtcp, this); |
152 if (result.ok()) { | 153 if (result.ok()) { |
153 transport_proxies_.push_back(result.value().get()); | 154 transport_proxies_.push_back(result.value().get()); |
154 transport_proxies_.back()->GetInternal()->SignalDestroyed.connect( | 155 transport_proxies_.back()->GetInternal()->SignalDestroyed.connect( |
155 this, &RtpTransportControllerAdapter::OnRtpTransportDestroyed); | 156 this, &RtpTransportControllerAdapter::OnRtpTransportDestroyed); |
156 } | 157 } |
157 return result; | 158 return result; |
158 } | 159 } |
159 | 160 |
160 RTCErrorOr<std::unique_ptr<OrtcRtpSenderInterface>> | 161 RTCErrorOr<std::unique_ptr<OrtcRtpSenderInterface>> |
161 RtpTransportControllerAdapter::CreateProxiedRtpSender( | 162 RtpTransportControllerAdapter::CreateProxiedRtpSender( |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
212 | 213 |
213 return OrtcRtpReceiverAdapter::CreateProxy(std::move(new_receiver)); | 214 return OrtcRtpReceiverAdapter::CreateProxy(std::move(new_receiver)); |
214 } | 215 } |
215 | 216 |
216 std::vector<RtpTransportInterface*> | 217 std::vector<RtpTransportInterface*> |
217 RtpTransportControllerAdapter::GetTransports() const { | 218 RtpTransportControllerAdapter::GetTransports() const { |
218 RTC_DCHECK_RUN_ON(signaling_thread_); | 219 RTC_DCHECK_RUN_ON(signaling_thread_); |
219 return transport_proxies_; | 220 return transport_proxies_; |
220 } | 221 } |
221 | 222 |
222 RTCError RtpTransportControllerAdapter::SetRtcpParameters( | 223 RTCError RtpTransportControllerAdapter::SetRtpTransportAndParameters( |
223 const RtcpParameters& parameters, | 224 const RtpTransportParameters& parameters, |
224 RtpTransportInterface* inner_transport) { | 225 RtpTransportInterface* inner_transport) { |
226 if ((video_channel_ != nullptr || voice_channel_ != nullptr) && | |
227 (parameters.keepalive != keepalive_)) { | |
228 LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_MODIFICATION, | |
229 "Cannot change keep-alive settings after creating " | |
230 "media streams."); | |
Taylor Brandstetter
2017/08/03 16:50:36
nit: Someone using this API may interpret "media s
| |
231 } | |
232 RTC_DCHECK(call_->SetRtpKeepAliveConfig(parameters.keepalive)); | |
Taylor Brandstetter
2017/08/03 01:18:03
If this is in a DCHECK, it will only be executed i
sprang_webrtc
2017/08/03 13:08:14
Oops, right. Let's do a check instead then.
| |
225 do { | 233 do { |
226 if (inner_transport == inner_audio_transport_) { | 234 if (inner_transport == inner_audio_transport_) { |
227 CopyRtcpParametersToDescriptions(parameters, &local_audio_description_, | 235 CopyRtcpParametersToDescriptions(parameters.rtcp, |
236 &local_audio_description_, | |
228 &remote_audio_description_); | 237 &remote_audio_description_); |
229 if (!voice_channel_->SetLocalContent(&local_audio_description_, | 238 if (!voice_channel_->SetLocalContent(&local_audio_description_, |
230 cricket::CA_OFFER, nullptr)) { | 239 cricket::CA_OFFER, nullptr)) { |
231 break; | 240 break; |
232 } | 241 } |
233 if (!voice_channel_->SetRemoteContent(&remote_audio_description_, | 242 if (!voice_channel_->SetRemoteContent(&remote_audio_description_, |
234 cricket::CA_ANSWER, nullptr)) { | 243 cricket::CA_ANSWER, nullptr)) { |
235 break; | 244 break; |
236 } | 245 } |
237 } else if (inner_transport == inner_video_transport_) { | 246 } else if (inner_transport == inner_video_transport_) { |
238 CopyRtcpParametersToDescriptions(parameters, &local_video_description_, | 247 CopyRtcpParametersToDescriptions(parameters.rtcp, |
248 &local_video_description_, | |
239 &remote_video_description_); | 249 &remote_video_description_); |
240 if (!video_channel_->SetLocalContent(&local_video_description_, | 250 if (!video_channel_->SetLocalContent(&local_video_description_, |
241 cricket::CA_OFFER, nullptr)) { | 251 cricket::CA_OFFER, nullptr)) { |
242 break; | 252 break; |
243 } | 253 } |
244 if (!video_channel_->SetRemoteContent(&remote_video_description_, | 254 if (!video_channel_->SetRemoteContent(&remote_video_description_, |
245 cricket::CA_ANSWER, nullptr)) { | 255 cricket::CA_ANSWER, nullptr)) { |
246 break; | 256 break; |
247 } | 257 } |
248 } | 258 } |
(...skipping 14 matching lines...) Expand all Loading... | |
263 return codecs_result.MoveError(); | 273 return codecs_result.MoveError(); |
264 } | 274 } |
265 | 275 |
266 auto extensions_result = | 276 auto extensions_result = |
267 ToCricketRtpHeaderExtensions(parameters.header_extensions); | 277 ToCricketRtpHeaderExtensions(parameters.header_extensions); |
268 if (!extensions_result.ok()) { | 278 if (!extensions_result.ok()) { |
269 return extensions_result.MoveError(); | 279 return extensions_result.MoveError(); |
270 } | 280 } |
271 | 281 |
272 auto stream_params_result = MakeSendStreamParamsVec( | 282 auto stream_params_result = MakeSendStreamParamsVec( |
273 parameters.encodings, inner_audio_transport_->GetRtcpParameters().cname, | 283 parameters.encodings, inner_audio_transport_->GetParameters().rtcp.cname, |
274 local_audio_description_); | 284 local_audio_description_); |
275 if (!stream_params_result.ok()) { | 285 if (!stream_params_result.ok()) { |
276 return stream_params_result.MoveError(); | 286 return stream_params_result.MoveError(); |
277 } | 287 } |
278 | 288 |
279 // Check that audio/video sender aren't using the same IDs to refer to | 289 // Check that audio/video sender aren't using the same IDs to refer to |
280 // different things, if they share the same transport. | 290 // different things, if they share the same transport. |
281 if (inner_audio_transport_ == inner_video_transport_) { | 291 if (inner_audio_transport_ == inner_video_transport_) { |
282 RTCError err = CheckForIdConflicts( | 292 RTCError err = CheckForIdConflicts( |
283 codecs_result.value(), extensions_result.value(), | 293 codecs_result.value(), extensions_result.value(), |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
352 return codecs_result.MoveError(); | 362 return codecs_result.MoveError(); |
353 } | 363 } |
354 | 364 |
355 auto extensions_result = | 365 auto extensions_result = |
356 ToCricketRtpHeaderExtensions(parameters.header_extensions); | 366 ToCricketRtpHeaderExtensions(parameters.header_extensions); |
357 if (!extensions_result.ok()) { | 367 if (!extensions_result.ok()) { |
358 return extensions_result.MoveError(); | 368 return extensions_result.MoveError(); |
359 } | 369 } |
360 | 370 |
361 auto stream_params_result = MakeSendStreamParamsVec( | 371 auto stream_params_result = MakeSendStreamParamsVec( |
362 parameters.encodings, inner_video_transport_->GetRtcpParameters().cname, | 372 parameters.encodings, inner_video_transport_->GetParameters().rtcp.cname, |
363 local_video_description_); | 373 local_video_description_); |
364 if (!stream_params_result.ok()) { | 374 if (!stream_params_result.ok()) { |
365 return stream_params_result.MoveError(); | 375 return stream_params_result.MoveError(); |
366 } | 376 } |
367 | 377 |
368 // Check that audio/video sender aren't using the same IDs to refer to | 378 // Check that audio/video sender aren't using the same IDs to refer to |
369 // different things, if they share the same transport. | 379 // different things, if they share the same transport. |
370 if (inner_audio_transport_ == inner_video_transport_) { | 380 if (inner_audio_transport_ == inner_video_transport_) { |
371 RTCError err = CheckForIdConflicts( | 381 RTCError err = CheckForIdConflicts( |
372 codecs_result.value(), extensions_result.value(), | 382 codecs_result.value(), extensions_result.value(), |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
575 if (!video_channel_->SetRemoteContent(&remote_video_description_, | 585 if (!video_channel_->SetRemoteContent(&remote_video_description_, |
576 cricket::CA_ANSWER, nullptr)) { | 586 cricket::CA_ANSWER, nullptr)) { |
577 LOG_AND_RETURN_ERROR(RTCErrorType::INTERNAL_ERROR, | 587 LOG_AND_RETURN_ERROR(RTCErrorType::INTERNAL_ERROR, |
578 "Failed to apply remote parameters to media channel."); | 588 "Failed to apply remote parameters to media channel."); |
579 } | 589 } |
580 return RTCError::OK(); | 590 return RTCError::OK(); |
581 } | 591 } |
582 | 592 |
583 RtpTransportControllerAdapter::RtpTransportControllerAdapter( | 593 RtpTransportControllerAdapter::RtpTransportControllerAdapter( |
584 const cricket::MediaConfig& config, | 594 const cricket::MediaConfig& config, |
595 const RtpTransportParameters& params, | |
585 cricket::ChannelManager* channel_manager, | 596 cricket::ChannelManager* channel_manager, |
586 webrtc::RtcEventLog* event_log, | 597 webrtc::RtcEventLog* event_log, |
587 rtc::Thread* signaling_thread, | 598 rtc::Thread* signaling_thread, |
588 rtc::Thread* worker_thread) | 599 rtc::Thread* worker_thread) |
589 : signaling_thread_(signaling_thread), | 600 : signaling_thread_(signaling_thread), |
590 worker_thread_(worker_thread), | 601 worker_thread_(worker_thread), |
591 media_config_(config), | 602 media_config_(config), |
603 keepalive_(params.keepalive), | |
592 channel_manager_(channel_manager), | 604 channel_manager_(channel_manager), |
593 event_log_(event_log) { | 605 event_log_(event_log) { |
594 RTC_DCHECK_RUN_ON(signaling_thread_); | 606 RTC_DCHECK_RUN_ON(signaling_thread_); |
595 RTC_DCHECK(channel_manager_); | 607 RTC_DCHECK(channel_manager_); |
596 // Add "dummy" codecs to the descriptions, because the media engines | 608 // Add "dummy" codecs to the descriptions, because the media engines |
597 // currently reject empty lists of codecs. Note that these codecs will never | 609 // currently reject empty lists of codecs. Note that these codecs will never |
598 // actually be used, because when parameters are set, the dummy codecs will | 610 // actually be used, because when parameters are set, the dummy codecs will |
599 // be replaced by actual codecs before any send/receive streams are created. | 611 // be replaced by actual codecs before any send/receive streams are created. |
600 static const cricket::AudioCodec dummy_audio(0, cricket::kPcmuCodecName, 8000, | 612 static const cricket::AudioCodec dummy_audio(0, cricket::kPcmuCodecName, 8000, |
601 0, 1); | 613 0, 1); |
602 static const cricket::VideoCodec dummy_video(96, cricket::kVp8CodecName); | 614 static const cricket::VideoCodec dummy_video(96, cricket::kVp8CodecName); |
603 local_audio_description_.AddCodec(dummy_audio); | 615 local_audio_description_.AddCodec(dummy_audio); |
604 remote_audio_description_.AddCodec(dummy_audio); | 616 remote_audio_description_.AddCodec(dummy_audio); |
605 local_video_description_.AddCodec(dummy_video); | 617 local_video_description_.AddCodec(dummy_video); |
606 remote_video_description_.AddCodec(dummy_video); | 618 remote_video_description_.AddCodec(dummy_video); |
607 | 619 |
608 worker_thread_->Invoke<void>( | 620 worker_thread_->Invoke<void>( |
609 RTC_FROM_HERE, | 621 RTC_FROM_HERE, |
610 rtc::Bind(&RtpTransportControllerAdapter::Init_w, this)); | 622 rtc::Bind(&RtpTransportControllerAdapter::Init_w, this, params)); |
611 } | 623 } |
612 | 624 |
613 // TODO(nisse): Duplicates corresponding method in PeerConnection (used | 625 // TODO(nisse): Duplicates corresponding method in PeerConnection (used |
614 // to be in MediaController). | 626 // to be in MediaController). |
615 void RtpTransportControllerAdapter::Init_w() { | 627 void RtpTransportControllerAdapter::Init_w( |
628 const RtpTransportParameters& params) { | |
616 RTC_DCHECK(worker_thread_->IsCurrent()); | 629 RTC_DCHECK(worker_thread_->IsCurrent()); |
617 RTC_DCHECK(!call_); | 630 RTC_DCHECK(!call_); |
618 | 631 |
619 const int kMinBandwidthBps = 30000; | 632 const int kMinBandwidthBps = 30000; |
620 const int kStartBandwidthBps = 300000; | 633 const int kStartBandwidthBps = 300000; |
621 const int kMaxBandwidthBps = 2000000; | 634 const int kMaxBandwidthBps = 2000000; |
622 | 635 |
623 webrtc::Call::Config call_config(event_log_); | 636 webrtc::Call::Config call_config(event_log_); |
624 call_config.audio_state = channel_manager_->media_engine()->GetAudioState(); | 637 call_config.audio_state = channel_manager_->media_engine()->GetAudioState(); |
625 call_config.bitrate_config.min_bitrate_bps = kMinBandwidthBps; | 638 call_config.bitrate_config.min_bitrate_bps = kMinBandwidthBps; |
626 call_config.bitrate_config.start_bitrate_bps = kStartBandwidthBps; | 639 call_config.bitrate_config.start_bitrate_bps = kStartBandwidthBps; |
627 call_config.bitrate_config.max_bitrate_bps = kMaxBandwidthBps; | 640 call_config.bitrate_config.max_bitrate_bps = kMaxBandwidthBps; |
641 call_config.keepalive_config = params.keepalive; | |
628 | 642 |
629 call_.reset(webrtc::Call::Create(call_config)); | 643 call_.reset(webrtc::Call::Create(call_config)); |
630 } | 644 } |
631 | 645 |
632 void RtpTransportControllerAdapter::Close_w() { | 646 void RtpTransportControllerAdapter::Close_w() { |
633 call_.reset(); | 647 call_.reset(); |
634 } | 648 } |
635 | 649 |
636 RTCError RtpTransportControllerAdapter::AttachAudioSender( | 650 RTCError RtpTransportControllerAdapter::AttachAudioSender( |
637 OrtcRtpSenderAdapter* sender, | 651 OrtcRtpSenderAdapter* sender, |
(...skipping 11 matching lines...) Expand all Loading... | |
649 "supported."); | 663 "supported."); |
650 } | 664 } |
651 RTCError err = MaybeSetCryptos(inner_transport, &local_audio_description_, | 665 RTCError err = MaybeSetCryptos(inner_transport, &local_audio_description_, |
652 &remote_audio_description_); | 666 &remote_audio_description_); |
653 if (!err.ok()) { | 667 if (!err.ok()) { |
654 return err; | 668 return err; |
655 } | 669 } |
656 // If setting new transport, extract its RTCP parameters and create voice | 670 // If setting new transport, extract its RTCP parameters and create voice |
657 // channel. | 671 // channel. |
658 if (!inner_audio_transport_) { | 672 if (!inner_audio_transport_) { |
659 CopyRtcpParametersToDescriptions(inner_transport->GetRtcpParameters(), | 673 CopyRtcpParametersToDescriptions(inner_transport->GetParameters().rtcp, |
660 &local_audio_description_, | 674 &local_audio_description_, |
661 &remote_audio_description_); | 675 &remote_audio_description_); |
662 inner_audio_transport_ = inner_transport; | 676 inner_audio_transport_ = inner_transport; |
663 CreateVoiceChannel(); | 677 CreateVoiceChannel(); |
664 } | 678 } |
665 have_audio_sender_ = true; | 679 have_audio_sender_ = true; |
666 sender->SignalDestroyed.connect( | 680 sender->SignalDestroyed.connect( |
667 this, &RtpTransportControllerAdapter::OnAudioSenderDestroyed); | 681 this, &RtpTransportControllerAdapter::OnAudioSenderDestroyed); |
668 return RTCError::OK(); | 682 return RTCError::OK(); |
669 } | 683 } |
(...skipping 14 matching lines...) Expand all Loading... | |
684 "supported."); | 698 "supported."); |
685 } | 699 } |
686 RTCError err = MaybeSetCryptos(inner_transport, &local_video_description_, | 700 RTCError err = MaybeSetCryptos(inner_transport, &local_video_description_, |
687 &remote_video_description_); | 701 &remote_video_description_); |
688 if (!err.ok()) { | 702 if (!err.ok()) { |
689 return err; | 703 return err; |
690 } | 704 } |
691 // If setting new transport, extract its RTCP parameters and create video | 705 // If setting new transport, extract its RTCP parameters and create video |
692 // channel. | 706 // channel. |
693 if (!inner_video_transport_) { | 707 if (!inner_video_transport_) { |
694 CopyRtcpParametersToDescriptions(inner_transport->GetRtcpParameters(), | 708 CopyRtcpParametersToDescriptions(inner_transport->GetParameters().rtcp, |
695 &local_video_description_, | 709 &local_video_description_, |
696 &remote_video_description_); | 710 &remote_video_description_); |
697 inner_video_transport_ = inner_transport; | 711 inner_video_transport_ = inner_transport; |
698 CreateVideoChannel(); | 712 CreateVideoChannel(); |
699 } | 713 } |
700 have_video_sender_ = true; | 714 have_video_sender_ = true; |
701 sender->SignalDestroyed.connect( | 715 sender->SignalDestroyed.connect( |
702 this, &RtpTransportControllerAdapter::OnVideoSenderDestroyed); | 716 this, &RtpTransportControllerAdapter::OnVideoSenderDestroyed); |
703 return RTCError::OK(); | 717 return RTCError::OK(); |
704 } | 718 } |
(...skipping 14 matching lines...) Expand all Loading... | |
719 "supported."); | 733 "supported."); |
720 } | 734 } |
721 RTCError err = MaybeSetCryptos(inner_transport, &local_audio_description_, | 735 RTCError err = MaybeSetCryptos(inner_transport, &local_audio_description_, |
722 &remote_audio_description_); | 736 &remote_audio_description_); |
723 if (!err.ok()) { | 737 if (!err.ok()) { |
724 return err; | 738 return err; |
725 } | 739 } |
726 // If setting new transport, extract its RTCP parameters and create voice | 740 // If setting new transport, extract its RTCP parameters and create voice |
727 // channel. | 741 // channel. |
728 if (!inner_audio_transport_) { | 742 if (!inner_audio_transport_) { |
729 CopyRtcpParametersToDescriptions(inner_transport->GetRtcpParameters(), | 743 CopyRtcpParametersToDescriptions(inner_transport->GetParameters().rtcp, |
730 &local_audio_description_, | 744 &local_audio_description_, |
731 &remote_audio_description_); | 745 &remote_audio_description_); |
732 inner_audio_transport_ = inner_transport; | 746 inner_audio_transport_ = inner_transport; |
733 CreateVoiceChannel(); | 747 CreateVoiceChannel(); |
734 } | 748 } |
735 have_audio_receiver_ = true; | 749 have_audio_receiver_ = true; |
736 receiver->SignalDestroyed.connect( | 750 receiver->SignalDestroyed.connect( |
737 this, &RtpTransportControllerAdapter::OnAudioReceiverDestroyed); | 751 this, &RtpTransportControllerAdapter::OnAudioReceiverDestroyed); |
738 return RTCError::OK(); | 752 return RTCError::OK(); |
739 } | 753 } |
(...skipping 14 matching lines...) Expand all Loading... | |
754 "supported."); | 768 "supported."); |
755 } | 769 } |
756 RTCError err = MaybeSetCryptos(inner_transport, &local_video_description_, | 770 RTCError err = MaybeSetCryptos(inner_transport, &local_video_description_, |
757 &remote_video_description_); | 771 &remote_video_description_); |
758 if (!err.ok()) { | 772 if (!err.ok()) { |
759 return err; | 773 return err; |
760 } | 774 } |
761 // If setting new transport, extract its RTCP parameters and create video | 775 // If setting new transport, extract its RTCP parameters and create video |
762 // channel. | 776 // channel. |
763 if (!inner_video_transport_) { | 777 if (!inner_video_transport_) { |
764 CopyRtcpParametersToDescriptions(inner_transport->GetRtcpParameters(), | 778 CopyRtcpParametersToDescriptions(inner_transport->GetParameters().rtcp, |
765 &local_video_description_, | 779 &local_video_description_, |
766 &remote_video_description_); | 780 &remote_video_description_); |
767 inner_video_transport_ = inner_transport; | 781 inner_video_transport_ = inner_transport; |
768 CreateVideoChannel(); | 782 CreateVideoChannel(); |
769 } | 783 } |
770 have_video_receiver_ = true; | 784 have_video_receiver_ = true; |
771 receiver->SignalDestroyed.connect( | 785 receiver->SignalDestroyed.connect( |
772 this, &RtpTransportControllerAdapter::OnVideoReceiverDestroyed); | 786 this, &RtpTransportControllerAdapter::OnVideoReceiverDestroyed); |
773 return RTCError::OK(); | 787 return RTCError::OK(); |
774 } | 788 } |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
974 local_description->set_cryptos(cryptos); | 988 local_description->set_cryptos(cryptos); |
975 | 989 |
976 cryptos.clear(); | 990 cryptos.clear(); |
977 cryptos.push_back(*(rtp_transport->GetInternal()->send_key())); | 991 cryptos.push_back(*(rtp_transport->GetInternal()->send_key())); |
978 remote_description->set_cryptos(cryptos); | 992 remote_description->set_cryptos(cryptos); |
979 } | 993 } |
980 return RTCError::OK(); | 994 return RTCError::OK(); |
981 } | 995 } |
982 | 996 |
983 } // namespace webrtc | 997 } // namespace webrtc |
OLD | NEW |