Chromium Code Reviews| 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 |
|
tommi (sloooow) - chröme
2016/04/25 21:07:16
Can you test your cl with go/wa-rtc and see if get
miu
2016/04/28 20:18:49
Done. Yep, works perfectly! :)
|
| + // 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); |
| } |