| OLD | NEW | 
|---|
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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 | 
| OLD | NEW | 
|---|