diff options
author | Steve Anton <steveanton@webrtc.org> | 2018-03-26 10:24:32 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2018-03-26 18:14:30 +0000 |
commit | bb50ce5bb6d580b243b0fde532c596d6f4248083 (patch) | |
tree | be183cb1bfc75b1794a5994181367d13e5058bde /media/engine | |
parent | 17071682f7fa70589e194b5882b43c611d055c74 (diff) | |
download | webrtc-bb50ce5bb6d580b243b0fde532c596d6f4248083.tar.gz |
Wire up MID send value to the PeerConnection API
Bug: webrtc:4050
Change-Id: I522cf8621e2cb639f54be2402174befd23e4af59
Reviewed-on: https://webrtc-review.googlesource.com/60962
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22610}
Diffstat (limited to 'media/engine')
-rw-r--r-- | media/engine/webrtcvideoengine.cc | 14 | ||||
-rw-r--r-- | media/engine/webrtcvideoengine.h | 1 | ||||
-rw-r--r-- | media/engine/webrtcvoiceengine.cc | 23 | ||||
-rw-r--r-- | media/engine/webrtcvoiceengine.h | 1 |
4 files changed, 38 insertions, 1 deletions
diff --git a/media/engine/webrtcvideoengine.cc b/media/engine/webrtcvideoengine.cc index 6442c44337..df0b33d322 100644 --- a/media/engine/webrtcvideoengine.cc +++ b/media/engine/webrtcvideoengine.cc @@ -596,6 +596,10 @@ RtpCapabilities WebRtcVideoEngine::GetCapabilities() const { capabilities.header_extensions.push_back( webrtc::RtpExtension(webrtc::RtpExtension::kVideoTimingUri, webrtc::RtpExtension::kVideoTimingDefaultId)); + // TODO(bugs.webrtc.org/4050): Add MID header extension as capability once MID + // demuxing is completed. + // capabilities.header_extensions.push_back(webrtc::RtpExtension( + // webrtc::RtpExtension::kMidUri, webrtc::RtpExtension::kMidDefaultId)); return capabilities; } @@ -715,6 +719,10 @@ bool WebRtcVideoChannel::GetChangedSendParameters( rtc::Optional<std::vector<webrtc::RtpExtension>>(filtered_extensions); } + if (params.mid != send_params_.mid) { + changed_params->mid = params.mid; + } + // Handle max bitrate. if (params.max_bandwidth_bps != send_params_.max_bandwidth_bps && params.max_bandwidth_bps >= -1) { @@ -1632,6 +1640,8 @@ WebRtcVideoChannel::WebRtcVideoSendStream::WebRtcVideoSendStream( parameters_.config.rtp.rtcp_mode = send_params.rtcp.reduced_size ? webrtc::RtcpMode::kReducedSize : webrtc::RtcpMode::kCompound; + parameters_.config.rtp.mid = send_params.mid; + if (codec_settings) { SetCodec(*codec_settings); } @@ -1776,6 +1786,10 @@ void WebRtcVideoChannel::WebRtcVideoSendStream::SetSendParameters( parameters_.config.rtp.extensions = *params.rtp_header_extensions; recreate_stream = true; } + if (params.mid) { + parameters_.config.rtp.mid = *params.mid; + recreate_stream = true; + } if (params.max_bandwidth_bps) { parameters_.max_bitrate_bps = *params.max_bandwidth_bps; ReconfigureEncoder(); diff --git a/media/engine/webrtcvideoengine.h b/media/engine/webrtcvideoengine.h index 04096e66c7..07e6c70e93 100644 --- a/media/engine/webrtcvideoengine.h +++ b/media/engine/webrtcvideoengine.h @@ -213,6 +213,7 @@ class WebRtcVideoChannel : public VideoMediaChannel, public webrtc::Transport { // These optionals are unset if not changed. rtc::Optional<VideoCodecSettings> codec; rtc::Optional<std::vector<webrtc::RtpExtension>> rtp_header_extensions; + rtc::Optional<std::string> mid; rtc::Optional<int> max_bandwidth_bps; rtc::Optional<bool> conference_mode; rtc::Optional<webrtc::RtcpMode> rtcp_mode; diff --git a/media/engine/webrtcvoiceengine.cc b/media/engine/webrtcvoiceengine.cc index 04f299779b..d6ec44b58b 100644 --- a/media/engine/webrtcvoiceengine.cc +++ b/media/engine/webrtcvoiceengine.cc @@ -600,6 +600,10 @@ RtpCapabilities WebRtcVoiceEngine::GetCapabilities() const { webrtc::RtpExtension::kTransportSequenceNumberUri, webrtc::RtpExtension::kTransportSequenceNumberDefaultId)); } + // TODO(bugs.webrtc.org/4050): Add MID header extension as capability once MID + // demuxing is completed. + // capabilities.header_extensions.push_back(webrtc::RtpExtension( + // webrtc::RtpExtension::kMidUri, webrtc::RtpExtension::kMidDefaultId)); return capabilities; } @@ -742,6 +746,7 @@ class WebRtcVoiceMediaChannel::WebRtcAudioSendStream public: WebRtcAudioSendStream( uint32_t ssrc, + const std::string& mid, const std::string& c_name, const std::string track_id, const rtc::Optional<webrtc::AudioSendStream::Config::SendCodecSpec>& @@ -762,6 +767,7 @@ class WebRtcVoiceMediaChannel::WebRtcAudioSendStream RTC_DCHECK(call); RTC_DCHECK(encoder_factory); config_.rtp.ssrc = ssrc; + config_.rtp.mid = mid; config_.rtp.c_name = c_name; config_.rtp.extensions = extensions; config_.audio_network_adaptor_config = audio_network_adaptor_config; @@ -795,6 +801,15 @@ class WebRtcVoiceMediaChannel::WebRtcAudioSendStream ReconfigureAudioSendStream(); } + void SetMid(const std::string& mid) { + RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); + if (config_.rtp.mid == mid) { + return; + } + config_.rtp.mid = mid; + ReconfigureAudioSendStream(); + } + void SetAudioNetworkAdaptorConfig( const rtc::Optional<std::string>& audio_network_adaptor_config) { RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); @@ -1302,6 +1317,12 @@ bool WebRtcVoiceMediaChannel::SetSendParameters( it.second->SetRtpExtensions(send_rtp_extensions_); } } + if (!params.mid.empty()) { + mid_ = params.mid; + for (auto& it : send_streams_) { + it.second->SetMid(params.mid); + } + } if (!SetMaxSendBitrate(params.max_bandwidth_bps)) { return false; @@ -1768,7 +1789,7 @@ bool WebRtcVoiceMediaChannel::AddSendStream(const StreamParams& sp) { rtc::Optional<std::string> audio_network_adaptor_config = GetAudioNetworkAdaptorConfig(options_); WebRtcAudioSendStream* stream = new WebRtcAudioSendStream( - ssrc, sp.cname, sp.id, send_codec_spec_, send_rtp_extensions_, + ssrc, mid_, sp.cname, sp.id, send_codec_spec_, send_rtp_extensions_, max_send_bitrate_bps_, audio_network_adaptor_config, call_, this, engine()->encoder_factory_, codec_pair_id_); send_streams_.insert(std::make_pair(ssrc, stream)); diff --git a/media/engine/webrtcvoiceengine.h b/media/engine/webrtcvoiceengine.h index 950b72b5f5..c66aa95a38 100644 --- a/media/engine/webrtcvoiceengine.h +++ b/media/engine/webrtcvoiceengine.h @@ -264,6 +264,7 @@ class WebRtcVoiceMediaChannel final : public VoiceMediaChannel, class WebRtcAudioSendStream; std::map<uint32_t, WebRtcAudioSendStream*> send_streams_; std::vector<webrtc::RtpExtension> send_rtp_extensions_; + std::string mid_; class WebRtcAudioReceiveStream; std::map<uint32_t, WebRtcAudioReceiveStream*> recv_streams_; |