| 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..afaae406f9a4784623bdf726d66b42a1e3534d87 100644
|
| --- a/content/renderer/media/media_stream_center.cc
|
| +++ b/content/renderer/media/media_stream_center.cc
|
| @@ -19,6 +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/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"
|
| @@ -41,14 +42,27 @@ namespace {
|
| void CreateNativeAudioMediaStreamTrack(
|
| const blink::WebMediaStreamTrack& track,
|
| PeerConnectionDependencyFactory* factory) {
|
| - DCHECK(!MediaStreamAudioTrack::From(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(
|
|
|