Index: webrtc/voice_engine/channel.cc |
diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc |
index d2b30ca8f7d41c07b7ea406e6f26a84d59699ca5..43766b4140cd96960b13304bcc64f8d1511a8433 100644 |
--- a/webrtc/voice_engine/channel.cc |
+++ b/webrtc/voice_engine/channel.cc |
@@ -987,16 +987,50 @@ int32_t Channel::Init() { |
return -1; |
} |
- // --- Register all supported codecs to the receiving side of the |
- // RTP/RTCP module |
+ // Register a default set of send codecs. |
+ const int nSupportedCodecs = AudioCodingModule::NumberOfCodecs(); |
+ for (int idx = 0; idx < nSupportedCodecs; idx++) { |
+ CodecInst codec; |
+ RTC_CHECK_EQ(0, audio_coding_->Codec(idx, &codec)); |
- CodecInst codec; |
- const uint8_t nSupportedCodecs = AudioCodingModule::NumberOfCodecs(); |
+ // Ensure that PCMU is used as default send codec. |
+ if (STR_CASE_CMP(codec.plname, "PCMU") == 0 && codec.channels == 1) { |
+ SetSendCodec(codec); |
+ } |
+ // Register default PT for 'telephone-event' |
+ if (STR_CASE_CMP(codec.plname, "telephone-event") == 0) { |
+ if (_rtpRtcpModule->RegisterSendPayload(codec) == -1) { |
+ WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), |
+ "Channel::Init() failed to register outband " |
+ "'telephone-event' (%d/%d) correctly", |
+ codec.pltype, codec.plfreq); |
+ } |
+ } |
+ |
+ if (STR_CASE_CMP(codec.plname, "CN") == 0) { |
+ if (!codec_manager_.RegisterEncoder(codec) || |
+ !codec_manager_.MakeEncoder(&rent_a_codec_, audio_coding_.get()) || |
+ _rtpRtcpModule->RegisterSendPayload(codec) == -1) { |
+ WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), |
+ "Channel::Init() failed to register CN (%d/%d) " |
+ "correctly - 1", |
+ codec.pltype, codec.plfreq); |
+ } |
+ } |
+ } |
+ |
+ return 0; |
+} |
+ |
+void Channel::RegisterLegacyReceiveCodecs() { |
+ const int nSupportedCodecs = AudioCodingModule::NumberOfCodecs(); |
for (int idx = 0; idx < nSupportedCodecs; idx++) { |
+ CodecInst codec; |
+ RTC_CHECK_EQ(0, audio_coding_->Codec(idx, &codec)); |
+ |
// Open up the RTP/RTCP receiver for all supported codecs |
- if ((audio_coding_->Codec(idx, &codec) == -1) || |
- (rtp_receiver_->RegisterReceivePayload(codec) == -1)) { |
+ if (rtp_receiver_->RegisterReceivePayload(codec) == -1) { |
WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), |
"Channel::Init() unable to register %s " |
"(%d/%d/%" PRIuS "/%d) to RTP/RTCP receiver", |
@@ -1011,29 +1045,20 @@ int32_t Channel::Init() { |
codec.rate); |
} |
- // Ensure that PCMU is used as default codec on the sending side |
- if (!STR_CASE_CMP(codec.plname, "PCMU") && (codec.channels == 1)) { |
- SetSendCodec(codec); |
- } |
- |
- // Register default PT for outband 'telephone-event' |
- if (!STR_CASE_CMP(codec.plname, "telephone-event")) { |
- if (_rtpRtcpModule->RegisterSendPayload(codec) == -1 || |
- !audio_coding_->RegisterReceiveCodec(codec.pltype, |
+ // Register default PT for 'telephone-event' |
+ if (STR_CASE_CMP(codec.plname, "telephone-event") == 0) { |
+ if (!audio_coding_->RegisterReceiveCodec(codec.pltype, |
CodecInstToSdp(codec))) { |
WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), |
- "Channel::Init() failed to register outband " |
+ "Channel::Init() failed to register inband " |
"'telephone-event' (%d/%d) correctly", |
codec.pltype, codec.plfreq); |
} |
} |
- if (!STR_CASE_CMP(codec.plname, "CN")) { |
- if (!codec_manager_.RegisterEncoder(codec) || |
- !codec_manager_.MakeEncoder(&rent_a_codec_, audio_coding_.get()) || |
- !audio_coding_->RegisterReceiveCodec(codec.pltype, |
- CodecInstToSdp(codec)) || |
- _rtpRtcpModule->RegisterSendPayload(codec) == -1) { |
+ if (STR_CASE_CMP(codec.plname, "CN") == 0) { |
+ if (!audio_coding_->RegisterReceiveCodec(codec.pltype, |
+ CodecInstToSdp(codec))) { |
WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), |
"Channel::Init() failed to register CN (%d/%d) " |
"correctly - 1", |
@@ -1041,8 +1066,6 @@ int32_t Channel::Init() { |
} |
} |
} |
- |
- return 0; |
} |
void Channel::Terminate() { |
@@ -1360,6 +1383,11 @@ int32_t Channel::GetVADStatus(bool& enabledVAD, |
return 0; |
} |
+void Channel::SetReceiveCodecs(const std::map<int, SdpAudioFormat>& codecs) { |
+ rtp_payload_registry_->SetAudioReceivePayloads(codecs); |
+ audio_coding_->SetReceiveCodecs(codecs); |
+} |
+ |
int32_t Channel::SetRecPayloadType(const CodecInst& codec) { |
return SetRecPayloadType(codec.pltype, CodecInstToSdp(codec)); |
} |