Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(447)

Side by Side Diff: content/renderer/media/media_stream_center.cc

Issue 218763007: Update MediaStreamTrack::Stop to latest draft. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed review comments and added tests. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/media_stream_center.h" 5 #include "content/renderer/media/media_stream_center.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 const blink::WebMediaStreamTrack& track) { 119 const blink::WebMediaStreamTrack& track) {
120 MediaStreamTrack* native_track = 120 MediaStreamTrack* native_track =
121 MediaStreamTrack::GetTrack(track); 121 MediaStreamTrack::GetTrack(track);
122 if (native_track) 122 if (native_track)
123 native_track->SetEnabled(false); 123 native_track->SetEnabled(false);
124 } 124 }
125 125
126 bool MediaStreamCenter::didStopMediaStreamTrack( 126 bool MediaStreamCenter::didStopMediaStreamTrack(
127 const blink::WebMediaStreamTrack& track) { 127 const blink::WebMediaStreamTrack& track) {
128 DVLOG(1) << "MediaStreamCenter::didStopMediaStreamTrack"; 128 DVLOG(1) << "MediaStreamCenter::didStopMediaStreamTrack";
129 blink::WebMediaStreamSource source = track.source(); 129 MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track);
130 MediaStreamSource* extra_data = 130 native_track->StopTrack();
131 static_cast<MediaStreamSource*>(source.extraData());
132 if (!extra_data) {
133 DVLOG(1) << "didStopMediaStreamTrack called on a remote track.";
134 return false;
135 }
136
137 extra_data->StopSource();
138 return true; 131 return true;
139 } 132 }
140 133
141 blink::WebAudioSourceProvider* 134 blink::WebAudioSourceProvider*
142 MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack( 135 MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack(
143 const blink::WebMediaStreamTrack& track) { 136 const blink::WebMediaStreamTrack& track) {
144 DVLOG(1) << "MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack"; 137 DVLOG(1) << "MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack";
145 MediaStreamTrack* media_stream_track = 138 MediaStreamTrack* media_stream_track =
146 static_cast<MediaStreamTrack*>(track.extraData()); 139 static_cast<MediaStreamTrack*>(track.extraData());
147 // Only local audio track is supported now. 140 // Only local audio track is supported now.
(...skipping 14 matching lines...) Expand all
162 void MediaStreamCenter::didStopLocalMediaStream( 155 void MediaStreamCenter::didStopLocalMediaStream(
163 const blink::WebMediaStream& stream) { 156 const blink::WebMediaStream& stream) {
164 DVLOG(1) << "MediaStreamCenter::didStopLocalMediaStream"; 157 DVLOG(1) << "MediaStreamCenter::didStopLocalMediaStream";
165 MediaStream* native_stream = MediaStream::GetMediaStream(stream); 158 MediaStream* native_stream = MediaStream::GetMediaStream(stream);
166 if (!native_stream) { 159 if (!native_stream) {
167 NOTREACHED(); 160 NOTREACHED();
168 return; 161 return;
169 } 162 }
170 163
171 // TODO(perkj): MediaStream::Stop is being deprecated. But for the moment we 164 // TODO(perkj): MediaStream::Stop is being deprecated. But for the moment we
172 // need to support the old behavior and the new. Since we only create one 165 // need to support both MediaStream::Stop and MediaStreamTrack::Stop.
173 // source object per actual device- we need to fake stopping a
174 // MediaStreamTrack by disabling it if the same device is used as source by
175 // multiple tracks. Note that disabling a track here, don't affect the
176 // enabled property in JS.
177 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 166 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
178 stream.audioTracks(audio_tracks); 167 stream.audioTracks(audio_tracks);
179 for (size_t i = 0; i < audio_tracks.size(); ++i) 168 for (size_t i = 0; i < audio_tracks.size(); ++i)
180 didDisableMediaStreamTrack(audio_tracks[i]); 169 didStopMediaStreamTrack(audio_tracks[i]);
181 170
182 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 171 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
183 stream.videoTracks(video_tracks); 172 stream.videoTracks(video_tracks);
184 for (size_t i = 0; i < video_tracks.size(); ++i) 173 for (size_t i = 0; i < video_tracks.size(); ++i)
185 didDisableMediaStreamTrack(video_tracks[i]); 174 didStopMediaStreamTrack(video_tracks[i]);
186
187 native_stream->OnStreamStopped();
188 } 175 }
189 176
190 void MediaStreamCenter::didCreateMediaStream(blink::WebMediaStream& stream) { 177 void MediaStreamCenter::didCreateMediaStream(blink::WebMediaStream& stream) {
191 DVLOG(1) << "MediaStreamCenter::didCreateMediaStream"; 178 DVLOG(1) << "MediaStreamCenter::didCreateMediaStream";
192 blink::WebMediaStream writable_stream(stream); 179 blink::WebMediaStream writable_stream(stream);
193 MediaStream* native_stream( 180 MediaStream* native_stream(
194 new MediaStream(rtc_factory_, 181 new MediaStream(rtc_factory_,
195 MediaStream::StreamStopCallback(),
196 stream)); 182 stream));
197 writable_stream.setExtraData(native_stream); 183 writable_stream.setExtraData(native_stream);
198 184
199 // TODO(perkj): Remove track creation once crbug/294145 is fixed. A track 185 // TODO(perkj): Remove track creation once crbug/294145 is fixed. A track
200 // should already have been created before reaching here. 186 // should already have been created before reaching here.
201 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 187 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
202 stream.audioTracks(audio_tracks); 188 stream.audioTracks(audio_tracks);
203 for (size_t i = 0; i < audio_tracks.size(); ++i) { 189 for (size_t i = 0; i < audio_tracks.size(); ++i) {
204 if (!MediaStreamTrack::GetTrack(audio_tracks[i])) 190 if (!MediaStreamTrack::GetTrack(audio_tracks[i]))
205 CreateNativeMediaStreamTrack(audio_tracks[i], rtc_factory_); 191 CreateNativeMediaStreamTrack(audio_tracks[i], rtc_factory_);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 device.type == MEDIA_DEVICE_AUDIO_CAPTURE 258 device.type == MEDIA_DEVICE_AUDIO_CAPTURE
273 ? blink::WebSourceInfo::SourceKindAudio 259 ? blink::WebSourceInfo::SourceKindAudio
274 : blink::WebSourceInfo::SourceKindVideo, 260 : blink::WebSourceInfo::SourceKindVideo,
275 blink::WebString::fromUTF8(device.name), 261 blink::WebString::fromUTF8(device.name),
276 video_facing); 262 video_facing);
277 } 263 }
278 request_it->second.requestSucceeded(sourceInfos); 264 request_it->second.requestSucceeded(sourceInfos);
279 } 265 }
280 266
281 } // namespace content 267 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698