| Index: talk/media/webrtc/webrtcvoiceengine.cc
|
| diff --git a/talk/media/webrtc/webrtcvoiceengine.cc b/talk/media/webrtc/webrtcvoiceengine.cc
|
| index 4bd0400dfa8e394642f22a65f77a601b7efec2f7..94ccec083425537624f5f5f26e6822372e70a38e 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
|
| @@ -1467,10 +1454,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_);
|
| }
|
| @@ -1492,10 +1483,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_);
|
| }
|
|
|