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

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: Self review. 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 if (!native_track)
131 static_cast<MediaStreamSource*>(source.extraData());
132 if (!extra_data) {
133 DVLOG(1) << "didStopMediaStreamTrack called on a remote track.";
134 return false; 131 return false;
no longer working on chromium 2014/04/01 18:29:58 Can this happen? Add an error log if it can. other
perkj_chrome 2014/04/02 13:35:49 Done. Yes. In the latest spec Stop is a void meth
135 }
136 132
137 extra_data->StopSource(); 133 native_track->StopTrack();
138 return true; 134 return true;
139 } 135 }
140 136
141 blink::WebAudioSourceProvider* 137 blink::WebAudioSourceProvider*
142 MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack( 138 MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack(
143 const blink::WebMediaStreamTrack& track) { 139 const blink::WebMediaStreamTrack& track) {
144 DVLOG(1) << "MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack"; 140 DVLOG(1) << "MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack";
145 MediaStreamTrack* media_stream_track = 141 MediaStreamTrack* media_stream_track =
146 static_cast<MediaStreamTrack*>(track.extraData()); 142 static_cast<MediaStreamTrack*>(track.extraData());
147 // Only local audio track is supported now. 143 // Only local audio track is supported now.
(...skipping 14 matching lines...) Expand all
162 void MediaStreamCenter::didStopLocalMediaStream( 158 void MediaStreamCenter::didStopLocalMediaStream(
163 const blink::WebMediaStream& stream) { 159 const blink::WebMediaStream& stream) {
164 DVLOG(1) << "MediaStreamCenter::didStopLocalMediaStream"; 160 DVLOG(1) << "MediaStreamCenter::didStopLocalMediaStream";
165 MediaStream* native_stream = MediaStream::GetMediaStream(stream); 161 MediaStream* native_stream = MediaStream::GetMediaStream(stream);
166 if (!native_stream) { 162 if (!native_stream) {
167 NOTREACHED(); 163 NOTREACHED();
168 return; 164 return;
169 } 165 }
170 166
171 // TODO(perkj): MediaStream::Stop is being deprecated. But for the moment we 167 // 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 168 // need to support both MediaStream::Stop and MediaStreamTrack::Stop.
no longer working on chromium 2014/04/01 18:29:58 nit, remove the extra space
perkj_chrome 2014/04/02 13:35:49 Done.
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; 169 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
178 stream.audioTracks(audio_tracks); 170 stream.audioTracks(audio_tracks);
179 for (size_t i = 0; i < audio_tracks.size(); ++i) 171 for (size_t i = 0; i < audio_tracks.size(); ++i)
180 didDisableMediaStreamTrack(audio_tracks[i]); 172 didStopMediaStreamTrack(audio_tracks[i]);
181 173
182 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 174 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
183 stream.videoTracks(video_tracks); 175 stream.videoTracks(video_tracks);
184 for (size_t i = 0; i < video_tracks.size(); ++i) 176 for (size_t i = 0; i < video_tracks.size(); ++i)
185 didDisableMediaStreamTrack(video_tracks[i]); 177 didStopMediaStreamTrack(video_tracks[i]);
186
187 native_stream->OnStreamStopped();
188 } 178 }
189 179
190 void MediaStreamCenter::didCreateMediaStream(blink::WebMediaStream& stream) { 180 void MediaStreamCenter::didCreateMediaStream(blink::WebMediaStream& stream) {
191 DVLOG(1) << "MediaStreamCenter::didCreateMediaStream"; 181 DVLOG(1) << "MediaStreamCenter::didCreateMediaStream";
192 blink::WebMediaStream writable_stream(stream); 182 blink::WebMediaStream writable_stream(stream);
193 MediaStream* native_stream( 183 MediaStream* native_stream(
194 new MediaStream(rtc_factory_, 184 new MediaStream(rtc_factory_,
195 MediaStream::StreamStopCallback(),
196 stream)); 185 stream));
197 writable_stream.setExtraData(native_stream); 186 writable_stream.setExtraData(native_stream);
198 187
199 // TODO(perkj): Remove track creation once crbug/294145 is fixed. A track 188 // TODO(perkj): Remove track creation once crbug/294145 is fixed. A track
200 // should already have been created before reaching here. 189 // should already have been created before reaching here.
201 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 190 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
202 stream.audioTracks(audio_tracks); 191 stream.audioTracks(audio_tracks);
203 for (size_t i = 0; i < audio_tracks.size(); ++i) { 192 for (size_t i = 0; i < audio_tracks.size(); ++i) {
204 if (!MediaStreamTrack::GetTrack(audio_tracks[i])) 193 if (!MediaStreamTrack::GetTrack(audio_tracks[i]))
205 CreateNativeMediaStreamTrack(audio_tracks[i], rtc_factory_); 194 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 261 device.type == MEDIA_DEVICE_AUDIO_CAPTURE
273 ? blink::WebSourceInfo::SourceKindAudio 262 ? blink::WebSourceInfo::SourceKindAudio
274 : blink::WebSourceInfo::SourceKindVideo, 263 : blink::WebSourceInfo::SourceKindVideo,
275 blink::WebString::fromUTF8(device.name), 264 blink::WebString::fromUTF8(device.name),
276 video_facing); 265 video_facing);
277 } 266 }
278 request_it->second.requestSucceeded(sourceInfos); 267 request_it->second.requestSucceeded(sourceInfos);
279 } 268 }
280 269
281 } // namespace content 270 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698