Index: Source/modules/webaudio/AudioContext.cpp |
diff --git a/Source/modules/webaudio/AudioContext.cpp b/Source/modules/webaudio/AudioContext.cpp |
index 6731d0cd5af736685949bccf4f5e311168daa64e..ff824990dc908ead474f5bd877b4a3a49b04eeaf 100644 |
--- a/Source/modules/webaudio/AudioContext.cpp |
+++ b/Source/modules/webaudio/AudioContext.cpp |
@@ -390,15 +390,16 @@ PassRefPtr<MediaStreamAudioSourceNode> AudioContext::createMediaStreamSource(Med |
AudioSourceProvider* provider = 0; |
MediaStreamTrackVector audioTracks = mediaStream->getAudioTracks(); |
- if (mediaStream->isLocal() && audioTracks.size()) { |
- // Enable input for the specific local audio device specified in the MediaStreamSource. |
- RefPtr<MediaStreamTrack> localAudio = audioTracks[0]; |
+ |
+ // FIXME: get a provider for non-local MediaStreams (like from a remote peer). |
+ for (size_t i = 0; i < audioTracks.size(); ++i) { |
+ RefPtr<MediaStreamTrack> localAudio = audioTracks[i]; |
MediaStreamSource* source = localAudio->component()->source(); |
- destination()->enableInput(source->deviceId()); |
- provider = destination()->localAudioInputProvider(); |
- } else { |
- // FIXME: get a provider for non-local MediaStreams (like from a remote peer). |
- provider = 0; |
+ if (!source->deviceId().isEmpty()) { |
+ destination()->enableInput(source->deviceId()); |
+ provider = destination()->localAudioInputProvider(); |
+ break; |
+ } |
} |
RefPtr<MediaStreamAudioSourceNode> node = MediaStreamAudioSourceNode::create(this, mediaStream, provider); |