Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(476)

Side by Side Diff: webrtc/ortc/rtptransportcontrolleradapter.cc

Issue 2981513002: Wire up RTP keep-alive in ortc api. (Closed)
Patch Set: Moved tests around Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698