aboutsummaryrefslogtreecommitdiff
path: root/media/engine
diff options
context:
space:
mode:
authorSteve Anton <steveanton@webrtc.org>2018-03-26 10:24:32 -0700
committerCommit Bot <commit-bot@chromium.org>2018-03-26 18:14:30 +0000
commitbb50ce5bb6d580b243b0fde532c596d6f4248083 (patch)
treebe183cb1bfc75b1794a5994181367d13e5058bde /media/engine
parent17071682f7fa70589e194b5882b43c611d055c74 (diff)
downloadwebrtc-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.cc14
-rw-r--r--media/engine/webrtcvideoengine.h1
-rw-r--r--media/engine/webrtcvoiceengine.cc23
-rw-r--r--media/engine/webrtcvoiceengine.h1
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_;