Index: content/renderer/media/media_stream_center.cc |
diff --git a/content/renderer/media/media_stream_center.cc b/content/renderer/media/media_stream_center.cc |
index ad7f8ddf6f1c2281a6f693fab87fab0b419e3cd0..54c5499bb84476a52a175058cd07fde02a4cad09 100644 |
--- a/content/renderer/media/media_stream_center.cc |
+++ b/content/renderer/media/media_stream_center.cc |
@@ -15,9 +15,11 @@ |
#include "content/public/renderer/media_stream_audio_sink.h" |
#include "content/public/renderer/render_thread.h" |
#include "content/renderer/media/media_stream.h" |
+#include "content/renderer/media/media_stream_audio_track.h" |
#include "content/renderer/media/media_stream_source.h" |
#include "content/renderer/media/media_stream_video_source.h" |
#include "content/renderer/media/media_stream_video_track.h" |
+#include "content/renderer/media/webaudio_media_stream_source.h" |
#include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" |
#include "content/renderer/media/webrtc_local_audio_source_provider.h" |
#include "third_party/WebKit/public/platform/WebMediaConstraints.h" |
@@ -40,14 +42,25 @@ namespace { |
void CreateNativeAudioMediaStreamTrack( |
const blink::WebMediaStreamTrack& track, |
PeerConnectionDependencyFactory* factory) { |
- DCHECK(!track.extraData()); |
+ DCHECK(!MediaStreamAudioTrack::Get(track)); |
blink::WebMediaStreamSource source = track.source(); |
DCHECK_EQ(source.type(), blink::WebMediaStreamSource::TypeAudio); |
- if (source.remote()) { |
- factory->CreateRemoteAudioTrack(track); |
+ |
+ if (!source.extraData()) { |
+ // TODO(miu): This needs to be moved to an appropriate location. The source |
+ // should have been created before this method was called. |
+ if (source.requiresAudioConsumer()) { |
+ DVLOG(1) << "Creating WebAudio media stream source."; |
+ source.setExtraData(new WebAudioMediaStreamSource(source)); |
+ } |
} else { |
- factory->CreateLocalAudioTrack(track); |
+ NOTREACHED() |
+ << "WebMediaStreamSource missing its MediaStreamAudioSource."; |
+ return; |
} |
+ |
+ static_cast<MediaStreamAudioSource*>(source.extraData()) |
+ ->ConnectToTrack(track); |
} |
void CreateNativeVideoMediaStreamTrack( |
@@ -104,35 +117,31 @@ void MediaStreamCenter::didCreateMediaStreamTrack( |
void MediaStreamCenter::didEnableMediaStreamTrack( |
const blink::WebMediaStreamTrack& track) { |
- MediaStreamTrack* native_track = |
- MediaStreamTrack::GetTrack(track); |
- if (native_track) |
+ if (MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track)) |
native_track->SetEnabled(true); |
} |
void MediaStreamCenter::didDisableMediaStreamTrack( |
const blink::WebMediaStreamTrack& track) { |
- MediaStreamTrack* native_track = |
- MediaStreamTrack::GetTrack(track); |
- if (native_track) |
+ if (MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track)) |
native_track->SetEnabled(false); |
} |
bool MediaStreamCenter::didStopMediaStreamTrack( |
const blink::WebMediaStreamTrack& track) { |
DVLOG(1) << "MediaStreamCenter::didStopMediaStreamTrack"; |
- MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track); |
- native_track->Stop(); |
- return true; |
+ if (MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track)) { |
+ native_track->Stop(); |
+ return true; |
+ } |
+ return false; |
} |
blink::WebAudioSourceProvider* |
MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack( |
const blink::WebMediaStreamTrack& track) { |
DVLOG(1) << "MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack"; |
- MediaStreamTrack* media_stream_track = |
- static_cast<MediaStreamTrack*>(track.extraData()); |
- if (!media_stream_track) { |
+ if (!MediaStreamAudioTrack::Get(track)) { |
DLOG(ERROR) << "Native track missing for webaudio source."; |
return nullptr; |
} |