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

Unified Diff: talk/media/webrtc/webrtcvoiceengine.cc

Issue 1388733002: Remove default receive channel from WVoE; baby step 2. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@wvoe_default_rch_a
Patch Set: rebase Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « talk/media/webrtc/webrtcvoiceengine.h ('k') | talk/media/webrtc/webrtcvoiceengine_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: talk/media/webrtc/webrtcvoiceengine.cc
diff --git a/talk/media/webrtc/webrtcvoiceengine.cc b/talk/media/webrtc/webrtcvoiceengine.cc
index 3fae1a742ddc9821d918cab2bf1be5d09967acc1..17acd1be0ef58cbc7e7d52c6e54af72d0dbf6d98 100644
--- a/talk/media/webrtc/webrtcvoiceengine.cc
+++ b/talk/media/webrtc/webrtcvoiceengine.cc
@@ -1390,7 +1390,7 @@ WebRtcVoiceMediaChannel::WebRtcVoiceMediaChannel(WebRtcVoiceEngine* engine,
const AudioOptions& options,
webrtc::Call* call)
: engine_(engine),
- voe_channel_(engine->CreateMediaVoiceChannel()),
+ default_send_channel_id_(engine->CreateMediaVoiceChannel()),
send_bitrate_setting_(false),
send_bitrate_bps_(0),
options_(),
@@ -1406,16 +1406,16 @@ WebRtcVoiceMediaChannel::WebRtcVoiceMediaChannel(WebRtcVoiceEngine* engine,
RTC_DCHECK(thread_checker_.CalledOnValidThread());
engine->RegisterChannel(this);
LOG(LS_VERBOSE) << "WebRtcVoiceMediaChannel::WebRtcVoiceMediaChannel "
- << voe_channel();
+ << default_send_channel_id();
RTC_DCHECK(nullptr != call);
- ConfigureSendChannel(voe_channel());
+ ConfigureSendChannel(default_send_channel_id());
SetOptions(options);
}
WebRtcVoiceMediaChannel::~WebRtcVoiceMediaChannel() {
RTC_DCHECK(thread_checker_.CalledOnValidThread());
LOG(LS_VERBOSE) << "WebRtcVoiceMediaChannel::~WebRtcVoiceMediaChannel "
- << voe_channel();
+ << default_send_channel_id();
// Remove any remaining send streams, the default channel will be deleted
// later.
@@ -1433,7 +1433,7 @@ WebRtcVoiceMediaChannel::~WebRtcVoiceMediaChannel() {
RTC_DCHECK(receive_streams_.empty());
// Delete the default channel.
- DeleteChannel(voe_channel());
+ DeleteChannel(default_send_channel_id());
}
bool WebRtcVoiceMediaChannel::SetSendParameters(
@@ -1485,7 +1485,9 @@ bool WebRtcVoiceMediaChannel::SetOptions(const AudioOptions& options) {
LOG(LS_WARNING) << "Failed to set DSCP settings for audio channel";
}
}
+
RecreateAudioReceiveStreams();
+
LOG(LS_INFO) << "Set voice channel options. Current options: "
<< options_.ToString();
return true;
@@ -1493,9 +1495,10 @@ bool WebRtcVoiceMediaChannel::SetOptions(const AudioOptions& options) {
bool WebRtcVoiceMediaChannel::SetRecvCodecs(
const std::vector<AudioCodec>& codecs) {
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+
// Set the payload types to be used for incoming media.
LOG(LS_INFO) << "Setting receive voice codecs.";
- RTC_DCHECK(thread_checker_.CalledOnValidThread());
if (!VerifyUniquePayloadTypes(codecs)) {
LOG(LS_ERROR) << "Codec payload types overlap.";
@@ -1830,7 +1833,8 @@ bool WebRtcVoiceMediaChannel::SetRecvRtpHeaderExtensions(
// The default channel may or may not be in |receive_channels_|. Set the rtp
// header extensions for default channel regardless.
- if (!SetChannelRecvRtpHeaderExtensions(voe_channel(), extensions)) {
+ if (!SetChannelRecvRtpHeaderExtensions(default_send_channel_id(),
+ extensions)) {
return false;
}
@@ -1899,7 +1903,8 @@ bool WebRtcVoiceMediaChannel::SetSendRtpHeaderExtensions(
// The default channel may or may not be in |send_channels_|. Set the rtp
// header extensions for default channel regardless.
- if (!SetChannelSendRtpHeaderExtensions(voe_channel(), extensions)) {
+ if (!SetChannelSendRtpHeaderExtensions(default_send_channel_id(),
+ extensions)) {
return false;
}
@@ -1959,7 +1964,7 @@ bool WebRtcVoiceMediaChannel::ChangePlayout(bool playout) {
bool result = true;
if (receive_channels_.empty()) {
// Only toggle the default channel if we don't have any other channels.
- result = SetPlayout(voe_channel(), playout);
+ result = SetPlayout(default_send_channel_id(), playout);
}
for (const auto& ch : receive_channels_) {
if (!SetPlayout(ch.second->channel(), playout)) {
@@ -2103,7 +2108,7 @@ bool WebRtcVoiceMediaChannel::AddSendStream(const StreamParams& sp) {
}
}
if (default_channel_is_available) {
- channel = voe_channel();
+ channel = default_send_channel_id();
} else {
// Create a new channel for sending audio data.
channel = engine()->CreateMediaVoiceChannel();
@@ -2226,11 +2231,12 @@ bool WebRtcVoiceMediaChannel::AddRecvStream(const StreamParams& sp) {
LOG(LS_INFO) << "Recv stream " << ssrc << " reuse default channel";
default_receive_ssrc_ = ssrc;
WebRtcVoiceChannelRenderer* channel_renderer =
- new WebRtcVoiceChannelRenderer(voe_channel(), audio_transport);
+ new WebRtcVoiceChannelRenderer(default_send_channel_id(),
+ audio_transport);
receive_channels_.insert(std::make_pair(ssrc, channel_renderer));
receive_stream_params_[ssrc] = sp;
AddAudioReceiveStream(ssrc);
- return SetPlayout(voe_channel(), playout_);
+ return SetPlayout(default_send_channel_id(), playout_);
}
// Create a new channel for receiving audio data.
@@ -2239,7 +2245,6 @@ bool WebRtcVoiceMediaChannel::AddRecvStream(const StreamParams& sp) {
LOG_RTCERR0(CreateChannel);
return false;
}
-
if (!ConfigureRecvChannel(channel)) {
DeleteChannel(channel);
return false;
@@ -2259,17 +2264,18 @@ bool WebRtcVoiceMediaChannel::AddRecvStream(const StreamParams& sp) {
bool WebRtcVoiceMediaChannel::ConfigureRecvChannel(int channel) {
RTC_DCHECK(thread_checker_.CalledOnValidThread());
- // Configure to use external transport, like our default channel.
+ // Configure to use external transport.
if (engine()->voe()->network()->RegisterExternalTransport(
channel, *this) == -1) {
LOG_RTCERR2(SetExternalTransport, channel, this);
return false;
}
- // Use the same SSRC as our default channel (so the RTCP reports are correct).
+ // Use the same SSRC as our default send channel, so the RTCP reports are
+ // correct.
unsigned int send_ssrc = 0;
webrtc::VoERTP_RTCP* rtp = engine()->voe()->rtp();
- if (rtp->GetLocalSSRC(voe_channel(), send_ssrc) == -1) {
+ if (rtp->GetLocalSSRC(default_send_channel_id(), send_ssrc) == -1) {
LOG_RTCERR1(GetSendSSRC, channel);
return false;
}
@@ -2278,12 +2284,13 @@ bool WebRtcVoiceMediaChannel::ConfigureRecvChannel(int channel) {
return false;
}
- // Associate receive channel to default channel (so the receive channel can
- // obtain RTT from the send channel)
- engine()->voe()->base()->AssociateSendChannel(channel, voe_channel());
+ // Associate receive channel to default send channel (so the receive channel
+ // can obtain RTT from the send channel).
+ engine()->voe()->base()->AssociateSendChannel(channel,
+ default_send_channel_id());
LOG(LS_INFO) << "VoiceEngine channel #"
<< channel << " is associated with channel #"
- << voe_channel() << ".";
+ << default_send_channel_id() << ".";
// Use the same recv payload types as our default channel.
ResetRecvCodecs(channel);
@@ -2294,7 +2301,7 @@ bool WebRtcVoiceMediaChannel::ConfigureRecvChannel(int channel) {
voe_codec.pltype = codec.id;
voe_codec.rate = 0; // Needed to make GetRecPayloadType work for ISAC
if (engine()->voe()->codec()->GetRecPayloadType(
- voe_channel(), voe_codec) != -1) {
+ default_send_channel_id(), voe_codec) != -1) {
if (engine()->voe()->codec()->SetRecPayloadType(
channel, voe_codec) == -1) {
LOG_RTCERR2(SetRecPayloadType, channel, ToString(voe_codec));
@@ -2306,8 +2313,8 @@ bool WebRtcVoiceMediaChannel::ConfigureRecvChannel(int channel) {
}
if (InConferenceMode()) {
- // To be in par with the video, voe_channel() is not used for receiving in
- // a conference call.
+ // To be in par with the video, default_send_channel_id() is not used for
+ // receiving in a conference call.
if (receive_channels_.empty() && default_receive_ssrc_ == 0 && playout_) {
// This is the first stream in a multi user meeting. We can now
// disable playback of the default stream. This since the default
@@ -2316,9 +2323,10 @@ bool WebRtcVoiceMediaChannel::ConfigureRecvChannel(int channel) {
// the default channel will be mixed in with the other streams
// throughout the whole meeting, which might be disturbing.
LOG(LS_INFO) << "Disabling playback on the default voice channel";
- SetPlayout(voe_channel(), false);
+ SetPlayout(default_send_channel_id(), false);
}
}
+
SetNack(channel, nack_enabled_);
// Set RTP header extension for the new channel.
@@ -2355,7 +2363,7 @@ bool WebRtcVoiceMediaChannel::RemoveRecvStream(uint32_t ssrc) {
RTC_DCHECK(IsDefaultChannel(channel));
// Recycle the default channel is for recv stream.
if (playout_)
- SetPlayout(voe_channel(), false);
+ SetPlayout(default_send_channel_id(), false);
default_receive_ssrc_ = 0;
return true;
@@ -2383,7 +2391,7 @@ bool WebRtcVoiceMediaChannel::RemoveRecvStream(uint32_t ssrc) {
}
if (enable_default_channel_playout && playout_) {
LOG(LS_INFO) << "Enabling playback on the default voice channel";
- SetPlayout(voe_channel(), true);
+ SetPlayout(default_send_channel_id(), true);
}
return true;
@@ -2429,10 +2437,9 @@ bool WebRtcVoiceMediaChannel::GetActiveStreams(
int WebRtcVoiceMediaChannel::GetOutputLevel() {
RTC_DCHECK(thread_checker_.CalledOnValidThread());
// return the highest output level of all streams
- int highest = GetOutputLevel(voe_channel());
+ int highest = GetOutputLevel(default_send_channel_id());
for (const auto& ch : receive_channels_) {
- int level = GetOutputLevel(ch.second->channel());
- highest = std::max(level, highest);
+ highest = std::max(GetOutputLevel(ch.second->channel()), highest);
}
return highest;
}
@@ -2471,7 +2478,7 @@ bool WebRtcVoiceMediaChannel::SetOutputVolume(uint32_t ssrc, double volume) {
// Default channel is not in receive_channels_ if it is not being used for
// playout.
if (default_receive_ssrc_ == 0)
- channels.push_back(voe_channel());
+ channels.push_back(default_send_channel_id());
for (const auto& ch : receive_channels_) {
channels.push_back(ch.second->channel());
}
@@ -2520,7 +2527,7 @@ bool WebRtcVoiceMediaChannel::InsertDtmf(uint32_t ssrc,
}
}
if (default_channel_is_inuse) {
- channel = voe_channel();
+ channel = default_send_channel_id();
} else if (!send_channels_.empty()) {
channel = send_channels_.begin()->second->channel();
}
@@ -2569,7 +2576,7 @@ void WebRtcVoiceMediaChannel::OnPacketReceived(
int which_channel =
GetReceiveChannelId(ParseSsrc(packet->data(), packet->size(), false));
if (which_channel == -1) {
- which_channel = voe_channel();
+ which_channel = default_send_channel_id();
}
// Pass it off to the decoder.
@@ -2631,7 +2638,8 @@ void WebRtcVoiceMediaChannel::OnRtcpReceived(
}
bool WebRtcVoiceMediaChannel::MuteStream(uint32_t ssrc, bool muted) {
- int channel = (ssrc == 0) ? voe_channel() : GetSendChannelId(ssrc);
+ int channel =
+ (ssrc == 0) ? default_send_channel_id() : GetSendChannelId(ssrc);
if (channel == -1) {
LOG(LS_WARNING) << "The specified ssrc " << ssrc << " is not in use.";
return false;
@@ -2825,7 +2833,7 @@ bool WebRtcVoiceMediaChannel::GetStats(VoiceMediaInfo* info) {
channels.push_back(ch.second->channel());
}
if (channels.empty()) {
- channels.push_back(voe_channel());
+ channels.push_back(default_send_channel_id());
}
// Get the SSRC and stats for each receiver, based on our own calculations.
@@ -2923,17 +2931,18 @@ int WebRtcVoiceMediaChannel::GetOutputLevel(int channel) {
int WebRtcVoiceMediaChannel::GetReceiveChannelId(uint32_t ssrc) const {
RTC_DCHECK(thread_checker_.CalledOnValidThread());
ChannelMap::const_iterator it = receive_channels_.find(ssrc);
- if (it != receive_channels_.end())
+ if (it != receive_channels_.end()) {
return it->second->channel();
- return (ssrc == default_receive_ssrc_) ? voe_channel() : -1;
+ }
+ return (ssrc == default_receive_ssrc_) ? default_send_channel_id() : -1;
}
int WebRtcVoiceMediaChannel::GetSendChannelId(uint32_t ssrc) const {
RTC_DCHECK(thread_checker_.CalledOnValidThread());
ChannelMap::const_iterator it = send_channels_.find(ssrc);
- if (it != send_channels_.end())
+ if (it != send_channels_.end()) {
return it->second->channel();
-
+ }
return -1;
}
@@ -2988,8 +2997,8 @@ bool WebRtcVoiceMediaChannel::EnableRtcp(int channel) {
}
// TODO(juberti): Enable VQMon and RTCP XR reports, once we know what
// what we want to do with them.
- // engine()->voe().EnableVQMon(voe_channel(), true);
- // engine()->voe().EnableRTCP_XR(voe_channel(), true);
+ // engine()->voe().EnableVQMon(default_send_channel_id(), true);
+ // engine()->voe().EnableRTCP_XR(default_send_channel_id(), true);
return true;
}
@@ -3136,8 +3145,9 @@ bool WebRtcVoiceMediaChannel::SetRecvCodecsInternal(
// TODO(xians): Figure out how we use the default channel in conference
// mode.
if (engine()->voe()->codec()->SetRecPayloadType(
- voe_channel(), voe_codec) == -1) {
- LOG_RTCERR2(SetRecPayloadType, voe_channel(), ToString(voe_codec));
+ default_send_channel_id(), voe_codec) == -1) {
+ LOG_RTCERR2(SetRecPayloadType, default_send_channel_id(),
+ ToString(voe_codec));
return false;
}
}
« no previous file with comments | « talk/media/webrtc/webrtcvoiceengine.h ('k') | talk/media/webrtc/webrtcvoiceengine_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698