Index: content/renderer/media/media_stream_impl.cc |
diff --git a/content/renderer/media/media_stream_impl.cc b/content/renderer/media/media_stream_impl.cc |
index 6d9e148e83059b6f986767eaf94b3b42c8764903..ddf6ff2f9adb7baf63a84a4a36db3b58e38ba9b0 100644 |
--- a/content/renderer/media/media_stream_impl.cc |
+++ b/content/renderer/media/media_stream_impl.cc |
@@ -478,10 +478,9 @@ void MediaStreamImpl::CreateVideoTracks( |
constraints, |
request->frame, |
&webkit_source); |
- (*webkit_tracks)[i].initialize(webkit_source); |
- (*webkit_tracks)[i].setExtraData(new MediaStreamVideoTrack( |
- dependency_factory_)); |
- request->StartTrack((*webkit_tracks)[i], constraints); |
+ (*webkit_tracks)[i] = |
+ request->CreateAndStartVideoTrack(webkit_source, constraints, |
+ dependency_factory_); |
} |
} |
@@ -522,7 +521,7 @@ void MediaStreamImpl::CreateAudioTracks( |
request->frame, |
&webkit_source); |
(*webkit_tracks)[i].initialize(webkit_source); |
- request->StartTrack((*webkit_tracks)[i], constraints); |
+ request->StartAudioTrack((*webkit_tracks)[i], constraints); |
} |
} |
@@ -834,11 +833,12 @@ MediaStreamImpl::UserMediaRequestInfo::~UserMediaRequestInfo() { |
DVLOG(1) << "~UserMediaRequestInfo"; |
} |
-void MediaStreamImpl::UserMediaRequestInfo::StartTrack( |
+void MediaStreamImpl::UserMediaRequestInfo::StartAudioTrack( |
const blink::WebMediaStreamTrack& track, |
const blink::WebMediaConstraints& constraints) { |
- MediaStreamSource* native_source = |
- static_cast <MediaStreamSource*>(track.source().extraData()); |
+ DCHECK(track.source().type() == blink::WebMediaStreamSource::TypeAudio); |
+ MediaStreamAudioSource* native_source = |
+ static_cast <MediaStreamAudioSource*>(track.source().extraData()); |
DCHECK(native_source); |
sources_.push_back(track.source()); |
@@ -849,6 +849,24 @@ void MediaStreamImpl::UserMediaRequestInfo::StartTrack( |
AsWeakPtr())); |
} |
+blink::WebMediaStreamTrack |
+MediaStreamImpl::UserMediaRequestInfo::CreateAndStartVideoTrack( |
+ const blink::WebMediaStreamSource& source, |
+ const blink::WebMediaConstraints& constraints, |
+ MediaStreamDependencyFactory* factory) { |
+ DCHECK(source.type() == blink::WebMediaStreamSource::TypeVideo); |
+ MediaStreamVideoSource* native_source = |
+ MediaStreamVideoSource::GetVideoSource(source); |
+ DCHECK(native_source); |
+ sources_.push_back(source); |
+ sources_waiting_for_callback_.push_back(native_source); |
+ return MediaStreamVideoTrack::CreateVideoTrack( |
+ native_source, constraints, base::Bind( |
+ &MediaStreamImpl::UserMediaRequestInfo::OnTrackStarted, |
+ AsWeakPtr()), |
+ true, factory); |
+} |
+ |
void MediaStreamImpl::UserMediaRequestInfo::CallbackOnTracksStarted( |
const ResourcesReady& callback) { |
DCHECK(ready_callback_.is_null()); |