Index: talk/media/webrtc/webrtcvoiceengine.cc |
diff --git a/talk/media/webrtc/webrtcvoiceengine.cc b/talk/media/webrtc/webrtcvoiceengine.cc |
index 8869a98cc4c05325cd9bad6e3d8601dac9a6e435..76c0c0106b002aa4a73b0875acdd44d7f7acd8e0 100644 |
--- a/talk/media/webrtc/webrtcvoiceengine.cc |
+++ b/talk/media/webrtc/webrtcvoiceengine.cc |
@@ -42,6 +42,7 @@ |
#include "talk/media/base/audiorenderer.h" |
#include "talk/media/base/constants.h" |
#include "talk/media/base/streamparams.h" |
+#include "talk/media/webrtc/webrtcmediaengine.h" |
#include "talk/media/webrtc/webrtcvoe.h" |
#include "webrtc/base/arraysize.h" |
#include "webrtc/base/base64.h" |
@@ -296,20 +297,6 @@ webrtc::AudioState::Config MakeAudioStateConfig(VoEWrapper* voe_wrapper) { |
return config; |
} |
-std::vector<webrtc::RtpExtension> FindAudioRtpHeaderExtensions( |
- const std::vector<RtpHeaderExtension>& extensions) { |
- std::vector<webrtc::RtpExtension> result; |
- for (const auto& extension : extensions) { |
- if (extension.uri == kRtpAbsoluteSenderTimeHeaderExtension || |
- extension.uri == kRtpAudioLevelHeaderExtension) { |
- result.push_back({extension.uri, extension.id}); |
- } else { |
- LOG(LS_WARNING) << "Unsupported RTP extension: " << extension.ToString(); |
- } |
- } |
- return result; |
-} |
- |
class WebRtcVoiceCodecs final { |
public: |
// TODO(solenberg): Do this filtering once off-line, add a simple AudioCodec |
@@ -1450,6 +1437,8 @@ WebRtcVoiceMediaChannel::~WebRtcVoiceMediaChannel() { |
bool WebRtcVoiceMediaChannel::SetSendParameters( |
const AudioSendParameters& params) { |
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
+ LOG(LS_INFO) << "WebRtcVoiceMediaChannel::SetSendParameters: " |
+ << params.ToString(); |
// TODO(pthatcher): Refactor this to be more clean now that we have |
// all the information at once. |
@@ -1457,10 +1446,14 @@ bool WebRtcVoiceMediaChannel::SetSendParameters( |
return false; |
} |
- std::vector<webrtc::RtpExtension> send_rtp_extensions = |
- FindAudioRtpHeaderExtensions(params.extensions); |
- if (send_rtp_extensions_ != send_rtp_extensions) { |
- send_rtp_extensions_.swap(send_rtp_extensions); |
+ if (!ValidateRtpExtensions(params.extensions)) { |
+ return false; |
+ } |
+ std::vector<webrtc::RtpExtension> filtered_extensions = |
+ FilterRtpExtensions(params.extensions, |
+ webrtc::RtpExtension::IsSupportedForAudio, true); |
+ if (send_rtp_extensions_ != filtered_extensions) { |
+ send_rtp_extensions_.swap(filtered_extensions); |
for (auto& it : send_streams_) { |
it.second->RecreateAudioSendStream(send_rtp_extensions_); |
} |
@@ -1475,6 +1468,8 @@ bool WebRtcVoiceMediaChannel::SetSendParameters( |
bool WebRtcVoiceMediaChannel::SetRecvParameters( |
const AudioRecvParameters& params) { |
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
+ LOG(LS_INFO) << "WebRtcVoiceMediaChannel::SetRecvParameters: " |
+ << params.ToString(); |
// TODO(pthatcher): Refactor this to be more clean now that we have |
// all the information at once. |
@@ -1482,10 +1477,14 @@ bool WebRtcVoiceMediaChannel::SetRecvParameters( |
return false; |
} |
- std::vector<webrtc::RtpExtension> recv_rtp_extensions = |
- FindAudioRtpHeaderExtensions(params.extensions); |
- if (recv_rtp_extensions_ != recv_rtp_extensions) { |
- recv_rtp_extensions_.swap(recv_rtp_extensions); |
+ if (!ValidateRtpExtensions(params.extensions)) { |
+ return false; |
+ } |
+ std::vector<webrtc::RtpExtension> filtered_extensions = |
+ FilterRtpExtensions(params.extensions, |
+ webrtc::RtpExtension::IsSupportedForAudio, false); |
+ if (recv_rtp_extensions_ != filtered_extensions) { |
+ recv_rtp_extensions_.swap(filtered_extensions); |
for (auto& it : recv_streams_) { |
it.second->RecreateAudioReceiveStream(recv_rtp_extensions_); |
} |