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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
114 if (voice_channel_) { | 114 if (voice_channel_) { |
115 // This would mean audio RTP senders/receivers that are using us haven't | 115 // This would mean audio RTP senders/receivers that are using us haven't |
116 // been destroyed. This isn't safe (see error log above). | 116 // been destroyed. This isn't safe (see error log above). |
117 DestroyVoiceChannel(); | 117 DestroyVoiceChannel(); |
118 } | 118 } |
119 if (voice_channel_) { | 119 if (voice_channel_) { |
120 // This would mean video RTP senders/receivers that are using us haven't | 120 // This would mean video RTP senders/receivers that are using us haven't |
121 // been destroyed. This isn't safe (see error log above). | 121 // been destroyed. This isn't safe (see error log above). |
122 DestroyVideoChannel(); | 122 DestroyVideoChannel(); |
123 } | 123 } |
124 // Call must be destroyed on the worker thread. | |
125 worker_thread_->Invoke<void>( | |
126 RTC_FROM_HERE, | |
127 rtc::Bind(&RtpTransportControllerAdapter::Close_w, this)); | |
124 } | 128 } |
125 | 129 |
126 RTCErrorOr<std::unique_ptr<RtpTransportInterface>> | 130 RTCErrorOr<std::unique_ptr<RtpTransportInterface>> |
127 RtpTransportControllerAdapter::CreateProxiedRtpTransport( | 131 RtpTransportControllerAdapter::CreateProxiedRtpTransport( |
128 const RtcpParameters& rtcp_parameters, | 132 const RtcpParameters& rtcp_parameters, |
129 PacketTransportInterface* rtp, | 133 PacketTransportInterface* rtp, |
130 PacketTransportInterface* rtcp) { | 134 PacketTransportInterface* rtcp) { |
131 auto result = | 135 auto result = |
132 RtpTransportAdapter::CreateProxied(rtcp_parameters, rtp, rtcp, this); | 136 RtpTransportAdapter::CreateProxied(rtcp_parameters, rtp, rtcp, this); |
133 if (result.ok()) { | 137 if (result.ok()) { |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
577 } | 581 } |
578 | 582 |
579 RtpTransportControllerAdapter::RtpTransportControllerAdapter( | 583 RtpTransportControllerAdapter::RtpTransportControllerAdapter( |
580 const cricket::MediaConfig& config, | 584 const cricket::MediaConfig& config, |
581 cricket::ChannelManager* channel_manager, | 585 cricket::ChannelManager* channel_manager, |
582 webrtc::RtcEventLog* event_log, | 586 webrtc::RtcEventLog* event_log, |
583 rtc::Thread* signaling_thread, | 587 rtc::Thread* signaling_thread, |
584 rtc::Thread* worker_thread) | 588 rtc::Thread* worker_thread) |
585 : signaling_thread_(signaling_thread), | 589 : signaling_thread_(signaling_thread), |
586 worker_thread_(worker_thread), | 590 worker_thread_(worker_thread), |
587 media_controller_(MediaControllerInterface::Create(config, | 591 media_config_(config), |
588 worker_thread, | 592 channel_manager_(channel_manager), |
589 channel_manager, | 593 event_log_(event_log) { |
590 event_log)) { | |
591 RTC_DCHECK_RUN_ON(signaling_thread_); | 594 RTC_DCHECK_RUN_ON(signaling_thread_); |
592 RTC_DCHECK(channel_manager); | 595 RTC_DCHECK(channel_manager_); |
593 // MediaControllerInterface::Create should never fail. | |
594 RTC_DCHECK(media_controller_); | |
595 // Add "dummy" codecs to the descriptions, because the media engines | 596 // Add "dummy" codecs to the descriptions, because the media engines |
596 // currently reject empty lists of codecs. Note that these codecs will never | 597 // currently reject empty lists of codecs. Note that these codecs will never |
597 // actually be used, because when parameters are set, the dummy codecs will | 598 // actually be used, because when parameters are set, the dummy codecs will |
598 // be replaced by actual codecs before any send/receive streams are created. | 599 // be replaced by actual codecs before any send/receive streams are created. |
599 static const cricket::AudioCodec dummy_audio(0, cricket::kPcmuCodecName, 8000, | 600 static const cricket::AudioCodec dummy_audio(0, cricket::kPcmuCodecName, 8000, |
600 0, 1); | 601 0, 1); |
601 static const cricket::VideoCodec dummy_video(96, cricket::kVp8CodecName); | 602 static const cricket::VideoCodec dummy_video(96, cricket::kVp8CodecName); |
602 local_audio_description_.AddCodec(dummy_audio); | 603 local_audio_description_.AddCodec(dummy_audio); |
603 remote_audio_description_.AddCodec(dummy_audio); | 604 remote_audio_description_.AddCodec(dummy_audio); |
604 local_video_description_.AddCodec(dummy_video); | 605 local_video_description_.AddCodec(dummy_video); |
605 remote_video_description_.AddCodec(dummy_video); | 606 remote_video_description_.AddCodec(dummy_video); |
607 | |
608 worker_thread_->Invoke<void>( | |
609 RTC_FROM_HERE, | |
610 rtc::Bind(&RtpTransportControllerAdapter::Init_w, this)); | |
611 } | |
612 | |
613 // TODO(nisse): Duplicates corresponding method in PeerConnection (used | |
614 // to be in MediaController). | |
stefan-webrtc
2017/05/05 08:47:05
I think this TODO should say when these duplicates
stefan-webrtc
2017/05/05 08:53:50
Talked offline, and duplicates are needed since th
nisse-webrtc
2017/05/05 09:02:37
I'm afraid I'm not at all familiar with the new or
Taylor Brandstetter
2017/05/05 16:32:01
I wouldn't worry about reducing this duplication.
| |
615 void RtpTransportControllerAdapter::Init_w() { | |
616 RTC_DCHECK(worker_thread_->IsCurrent()); | |
617 RTC_DCHECK(!call_); | |
618 | |
619 const int kMinBandwidthBps = 30000; | |
620 const int kStartBandwidthBps = 300000; | |
621 const int kMaxBandwidthBps = 2000000; | |
622 | |
623 webrtc::Call::Config call_config(event_log_); | |
624 call_config.audio_state = channel_manager_->media_engine()->GetAudioState(); | |
625 call_config.bitrate_config.min_bitrate_bps = kMinBandwidthBps; | |
626 call_config.bitrate_config.start_bitrate_bps = kStartBandwidthBps; | |
627 call_config.bitrate_config.max_bitrate_bps = kMaxBandwidthBps; | |
628 | |
629 call_.reset(webrtc::Call::Create(call_config)); | |
630 } | |
631 | |
632 void RtpTransportControllerAdapter::Close_w() { | |
633 call_.reset(); | |
606 } | 634 } |
607 | 635 |
608 RTCError RtpTransportControllerAdapter::AttachAudioSender( | 636 RTCError RtpTransportControllerAdapter::AttachAudioSender( |
609 OrtcRtpSenderAdapter* sender, | 637 OrtcRtpSenderAdapter* sender, |
610 RtpTransportInterface* inner_transport) { | 638 RtpTransportInterface* inner_transport) { |
611 if (have_audio_sender_) { | 639 if (have_audio_sender_) { |
612 LOG_AND_RETURN_ERROR(RTCErrorType::UNSUPPORTED_OPERATION, | 640 LOG_AND_RETURN_ERROR(RTCErrorType::UNSUPPORTED_OPERATION, |
613 "Using two audio RtpSenders with the same " | 641 "Using two audio RtpSenders with the same " |
614 "RtpTransportControllerAdapter is not currently " | 642 "RtpTransportControllerAdapter is not currently " |
615 "supported."); | 643 "supported."); |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
811 // Empty parameters should result in receiving being stopped. | 839 // Empty parameters should result in receiving being stopped. |
812 RTCError err = ValidateAndApplyVideoReceiverParameters(RtpParameters()); | 840 RTCError err = ValidateAndApplyVideoReceiverParameters(RtpParameters()); |
813 RTC_DCHECK(err.ok()); | 841 RTC_DCHECK(err.ok()); |
814 have_video_receiver_ = false; | 842 have_video_receiver_ = false; |
815 if (!have_video_sender_) { | 843 if (!have_video_sender_) { |
816 DestroyVideoChannel(); | 844 DestroyVideoChannel(); |
817 } | 845 } |
818 } | 846 } |
819 | 847 |
820 void RtpTransportControllerAdapter::CreateVoiceChannel() { | 848 void RtpTransportControllerAdapter::CreateVoiceChannel() { |
821 voice_channel_ = media_controller_->channel_manager()->CreateVoiceChannel( | 849 voice_channel_ = channel_manager_->CreateVoiceChannel( |
822 media_controller_.get(), | 850 call_.get(), media_config_, |
823 inner_audio_transport_->GetRtpPacketTransport()->GetInternal(), | 851 inner_audio_transport_->GetRtpPacketTransport()->GetInternal(), |
824 inner_audio_transport_->GetRtcpPacketTransport() | 852 inner_audio_transport_->GetRtcpPacketTransport() |
825 ? inner_audio_transport_->GetRtcpPacketTransport()->GetInternal() | 853 ? inner_audio_transport_->GetRtcpPacketTransport()->GetInternal() |
826 : nullptr, | 854 : nullptr, |
827 signaling_thread_, "audio", false, cricket::AudioOptions()); | 855 signaling_thread_, "audio", false, cricket::AudioOptions()); |
828 RTC_DCHECK(voice_channel_); | 856 RTC_DCHECK(voice_channel_); |
829 voice_channel_->Enable(true); | 857 voice_channel_->Enable(true); |
830 } | 858 } |
831 | 859 |
832 void RtpTransportControllerAdapter::CreateVideoChannel() { | 860 void RtpTransportControllerAdapter::CreateVideoChannel() { |
833 video_channel_ = media_controller_->channel_manager()->CreateVideoChannel( | 861 video_channel_ = channel_manager_->CreateVideoChannel( |
834 media_controller_.get(), | 862 call_.get(), media_config_, |
835 inner_video_transport_->GetRtpPacketTransport()->GetInternal(), | 863 inner_video_transport_->GetRtpPacketTransport()->GetInternal(), |
836 inner_video_transport_->GetRtcpPacketTransport() | 864 inner_video_transport_->GetRtcpPacketTransport() |
837 ? inner_video_transport_->GetRtcpPacketTransport()->GetInternal() | 865 ? inner_video_transport_->GetRtcpPacketTransport()->GetInternal() |
838 : nullptr, | 866 : nullptr, |
839 signaling_thread_, "video", false, cricket::VideoOptions()); | 867 signaling_thread_, "video", false, cricket::VideoOptions()); |
840 RTC_DCHECK(video_channel_); | 868 RTC_DCHECK(video_channel_); |
841 video_channel_->Enable(true); | 869 video_channel_->Enable(true); |
842 } | 870 } |
843 | 871 |
844 void RtpTransportControllerAdapter::DestroyVoiceChannel() { | 872 void RtpTransportControllerAdapter::DestroyVoiceChannel() { |
845 RTC_DCHECK(voice_channel_); | 873 RTC_DCHECK(voice_channel_); |
846 media_controller_->channel_manager()->DestroyVoiceChannel(voice_channel_); | 874 channel_manager_->DestroyVoiceChannel(voice_channel_); |
847 voice_channel_ = nullptr; | 875 voice_channel_ = nullptr; |
848 inner_audio_transport_ = nullptr; | 876 inner_audio_transport_ = nullptr; |
849 } | 877 } |
850 | 878 |
851 void RtpTransportControllerAdapter::DestroyVideoChannel() { | 879 void RtpTransportControllerAdapter::DestroyVideoChannel() { |
852 RTC_DCHECK(video_channel_); | 880 RTC_DCHECK(video_channel_); |
853 media_controller_->channel_manager()->DestroyVideoChannel(video_channel_); | 881 channel_manager_->DestroyVideoChannel(video_channel_); |
854 video_channel_ = nullptr; | 882 video_channel_ = nullptr; |
855 inner_video_transport_ = nullptr; | 883 inner_video_transport_ = nullptr; |
856 } | 884 } |
857 | 885 |
858 void RtpTransportControllerAdapter::CopyRtcpParametersToDescriptions( | 886 void RtpTransportControllerAdapter::CopyRtcpParametersToDescriptions( |
859 const RtcpParameters& params, | 887 const RtcpParameters& params, |
860 cricket::MediaContentDescription* local, | 888 cricket::MediaContentDescription* local, |
861 cricket::MediaContentDescription* remote) { | 889 cricket::MediaContentDescription* remote) { |
862 local->set_rtcp_mux(params.mux); | 890 local->set_rtcp_mux(params.mux); |
863 remote->set_rtcp_mux(params.mux); | 891 remote->set_rtcp_mux(params.mux); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
946 local_description->set_cryptos(cryptos); | 974 local_description->set_cryptos(cryptos); |
947 | 975 |
948 cryptos.clear(); | 976 cryptos.clear(); |
949 cryptos.push_back(*(rtp_transport->GetInternal()->send_key())); | 977 cryptos.push_back(*(rtp_transport->GetInternal()->send_key())); |
950 remote_description->set_cryptos(cryptos); | 978 remote_description->set_cryptos(cryptos); |
951 } | 979 } |
952 return RTCError::OK(); | 980 return RTCError::OK(); |
953 } | 981 } |
954 | 982 |
955 } // namespace webrtc | 983 } // namespace webrtc |
OLD | NEW |