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 2f84bd8eb2be103006c91c73cc75aaf3952521a6..c08fcb56f27cb38f2c91b8a967353affc07b5104 100644 |
--- a/content/renderer/media/media_stream_center.cc |
+++ b/content/renderer/media/media_stream_center.cc |
@@ -19,7 +19,7 @@ |
#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/webrtc/peer_connection_dependency_factory.h" |
+#include "content/renderer/media/webaudio_media_stream_source.h" |
#include "content/renderer/media/webrtc_local_audio_source_provider.h" |
#include "third_party/WebKit/public/platform/WebMediaConstraints.h" |
#include "third_party/WebKit/public/platform/WebMediaStream.h" |
@@ -39,16 +39,28 @@ namespace content { |
namespace { |
void CreateNativeAudioMediaStreamTrack( |
- const blink::WebMediaStreamTrack& track, |
- PeerConnectionDependencyFactory* factory) { |
- DCHECK(!MediaStreamAudioTrack::From(track)); |
+ const blink::WebMediaStreamTrack& track) { |
blink::WebMediaStreamSource source = track.source(); |
- DCHECK_EQ(source.getType(), blink::WebMediaStreamSource::TypeAudio); |
- if (source.remote()) { |
- factory->CreateRemoteAudioTrack(track); |
- } else { |
- factory->CreateLocalAudioTrack(track); |
+ MediaStreamAudioSource* media_stream_source = |
+ MediaStreamAudioSource::From(source); |
+ |
+ // At this point, a MediaStreamAudioSource instance must exist. The one |
+ // exception is when a WebAudio destination node is acting as a source of |
+ // audio. |
+ // |
+ // TODO(miu): This needs to be moved to an appropriate location. A WebAudio |
+ // source should have been created before this method was called so that this |
+ // special case code isn't needed here. |
+ if (!media_stream_source && source.requiresAudioConsumer()) { |
+ DVLOG(1) << "Creating WebAudio media stream source."; |
+ media_stream_source = new WebAudioMediaStreamSource(&source); |
+ source.setExtraData(media_stream_source); // Takes ownership. |
} |
+ |
+ if (media_stream_source) |
+ media_stream_source->ConnectToTrack(track); |
+ else |
+ LOG(DFATAL) << "WebMediaStreamSource missing its MediaStreamAudioSource."; |
} |
void CreateNativeVideoMediaStreamTrack( |
@@ -74,14 +86,23 @@ void CreateNativeVideoMediaStreamTrack( |
track.isEnabled())); |
} |
-void CreateNativeMediaStreamTrack(const blink::WebMediaStreamTrack& track, |
- PeerConnectionDependencyFactory* factory) { |
+} // namespace |
+ |
+MediaStreamCenter::MediaStreamCenter( |
+ blink::WebMediaStreamCenterClient* client, |
+ PeerConnectionDependencyFactory* factory) {} |
+ |
+MediaStreamCenter::~MediaStreamCenter() {} |
+ |
+void MediaStreamCenter::didCreateMediaStreamTrack( |
+ const blink::WebMediaStreamTrack& track) { |
+ DVLOG(1) << "MediaStreamCenter::didCreateMediaStreamTrack"; |
DCHECK(!track.isNull() && !track.getExtraData()); |
DCHECK(!track.source().isNull()); |
switch (track.source().getType()) { |
case blink::WebMediaStreamSource::TypeAudio: |
- CreateNativeAudioMediaStreamTrack(track, factory); |
+ CreateNativeAudioMediaStreamTrack(track); |
break; |
case blink::WebMediaStreamSource::TypeVideo: |
CreateNativeVideoMediaStreamTrack(track); |
@@ -89,20 +110,6 @@ void CreateNativeMediaStreamTrack(const blink::WebMediaStreamTrack& track, |
} |
} |
-} // namespace |
- |
-MediaStreamCenter::MediaStreamCenter(blink::WebMediaStreamCenterClient* client, |
- PeerConnectionDependencyFactory* factory) |
- : rtc_factory_(factory) {} |
- |
-MediaStreamCenter::~MediaStreamCenter() {} |
- |
-void MediaStreamCenter::didCreateMediaStreamTrack( |
- const blink::WebMediaStreamTrack& track) { |
- DVLOG(1) << "MediaStreamCenter::didCreateMediaStreamTrack"; |
- CreateNativeMediaStreamTrack(track, rtc_factory_); |
-} |
- |
void MediaStreamCenter::didEnableMediaStreamTrack( |
const blink::WebMediaStreamTrack& track) { |
MediaStreamTrack* native_track = |
@@ -142,7 +149,8 @@ MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack( |
DCHECK_EQ(source.getType(), blink::WebMediaStreamSource::TypeAudio); |
// TODO(tommi): Rename WebRtcLocalAudioSourceProvider to |
- // WebRtcAudioSourceProvider since it's not specific to local. |
+ // WebAudioMediaStreamSink since it's not specific to any particular source. |
+ // http://crbug.com/577874 |
return new WebRtcLocalAudioSourceProvider(track); |
} |