Index: content/renderer/media/rtc_peer_connection_handler.cc |
diff --git a/content/renderer/media/rtc_peer_connection_handler.cc b/content/renderer/media/rtc_peer_connection_handler.cc |
index 08f71c064b371d3c20beba4ae47d339b8d7c67a9..6548faa66b774fd724dea55adbe64d0303b7ee7a 100644 |
--- a/content/renderer/media/rtc_peer_connection_handler.cc |
+++ b/content/renderer/media/rtc_peer_connection_handler.cc |
@@ -15,6 +15,7 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "content/public/common/content_switches.h" |
#include "content/renderer/media/media_stream_dependency_factory.h" |
+#include "content/renderer/media/media_stream_source_extra_data.h" |
#include "content/renderer/media/peer_connection_tracker.h" |
#include "content/renderer/media/remote_media_stream_impl.h" |
#include "content/renderer/media/rtc_data_channel_handler.h" |
@@ -549,13 +550,16 @@ bool RTCPeerConnectionHandler::addStream( |
this, stream, PeerConnectionTracker::SOURCE_LOCAL); |
// A media stream is connected to a peer connection, enable the |
- // peer connection mode for the capturer. |
- WebRtcAudioDeviceImpl* audio_device = |
- dependency_factory_->GetWebRtcAudioDevice(); |
- if (audio_device) { |
- WebRtcAudioCapturer* capturer = audio_device->GetDefaultCapturer(); |
- if (capturer) |
- capturer->EnablePeerConnectionMode(); |
+ // peer connection mode for the sources. |
+ blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; |
+ stream.audioTracks(audio_tracks); |
+ for (size_t i = 0; i < audio_tracks.size(); ++i) { |
+ const blink::WebMediaStreamSource& source = audio_tracks[i].source(); |
+ MediaStreamSourceExtraData* extra_data = |
+ static_cast<MediaStreamSourceExtraData*>(source.extraData()); |
+ // |extra_data| is NULL if the track is a remote audio track. |
+ if (extra_data && extra_data->GetAudioCapturer()) |
+ extra_data->GetAudioCapturer()->EnablePeerConnectionMode(); |
} |
return AddStream(stream, &constraints); |