| 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/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 11 #include "base/string_number_conversions.h" | 11 #include "base/string_number_conversions.h" |
| 12 #include "base/utf_string_conversions.h" | 12 #include "base/utf_string_conversions.h" |
| 13 #include "content/renderer/media/media_stream_dependency_factory.h" |
| 13 #include "content/renderer/media/media_stream_extra_data.h" | 14 #include "content/renderer/media/media_stream_extra_data.h" |
| 14 #include "content/renderer/media/media_stream_dependency_factory.h" | |
| 15 #include "content/renderer/media/media_stream_impl.h" | 15 #include "content/renderer/media/media_stream_impl.h" |
| 16 #include "content/renderer/render_view_impl.h" | 16 #include "content/renderer/render_view_impl.h" |
| 17 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStream.h" |
| 17 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamCente
rClient.h" | 18 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamCente
rClient.h" |
| 18 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamCompo
nent.h" | |
| 19 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamDescr
iptor.h" | |
| 20 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamSourc
e.h" | 19 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamSourc
e.h" |
| 21 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamSourc
esRequest.h" | 20 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamSourc
esRequest.h" |
| 21 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamTrack
.h" |
| 22 #include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h" | 22 #include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h" |
| 23 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" | 23 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
| 24 #include "third_party/libjingle/source/talk/app/webrtc/jsep.h" | 24 #include "third_party/libjingle/source/talk/app/webrtc/jsep.h" |
| 25 | 25 |
| 26 namespace content { | 26 namespace content { |
| 27 | 27 |
| 28 static webrtc::MediaStreamInterface* GetNativeMediaStream( | 28 static webrtc::MediaStreamInterface* GetNativeMediaStream( |
| 29 const WebKit::WebMediaStreamDescriptor& stream) { | 29 const WebKit::WebMediaStream& stream) { |
| 30 MediaStreamExtraData* extra_data = | 30 MediaStreamExtraData* extra_data = |
| 31 static_cast<MediaStreamExtraData*>(stream.extraData()); | 31 static_cast<MediaStreamExtraData*>(stream.extraData()); |
| 32 if (extra_data && extra_data->remote_stream()) | 32 if (extra_data && extra_data->remote_stream()) |
| 33 return extra_data->remote_stream(); | 33 return extra_data->remote_stream(); |
| 34 | 34 |
| 35 if (extra_data && extra_data->local_stream()) | 35 if (extra_data && extra_data->local_stream()) |
| 36 return extra_data->local_stream(); | 36 return extra_data->local_stream(); |
| 37 | 37 |
| 38 // TODO(perkj): This can occur if a JS create a new MediaStream based on an | 38 // TODO(perkj): This can occur if a JS create a new MediaStream based on an |
| 39 // existing MediaStream. | 39 // existing MediaStream. |
| 40 NOTIMPLEMENTED(); | 40 NOTIMPLEMENTED(); |
| 41 return NULL; | 41 return NULL; |
| 42 } | 42 } |
| 43 | 43 |
| 44 template <class TrackList> | 44 template <class TrackList> |
| 45 static webrtc::MediaStreamTrackInterface* GetTrack( | 45 static webrtc::MediaStreamTrackInterface* GetTrack( |
| 46 const std::string& source_id, | 46 const std::string& source_id, |
| 47 TrackList* tracks) { | 47 TrackList* tracks) { |
| 48 for (size_t i = 0; i < tracks->count(); ++i) { | 48 for (size_t i = 0; i < tracks->count(); ++i) { |
| 49 if (tracks->at(i)->id() == source_id) | 49 if (tracks->at(i)->id() == source_id) |
| 50 return tracks->at(i); | 50 return tracks->at(i); |
| 51 } | 51 } |
| 52 return NULL; | 52 return NULL; |
| 53 } | 53 } |
| 54 | 54 |
| 55 static webrtc::MediaStreamTrackInterface* GetNativeMediaStreamTrack( | 55 static webrtc::MediaStreamTrackInterface* GetNativeMediaStreamTrack( |
| 56 const WebKit::WebMediaStreamDescriptor& stream, | 56 const WebKit::WebMediaStream& stream, |
| 57 const WebKit::WebMediaStreamComponent& component) { | 57 const WebKit::WebMediaStreamTrack& component) { |
| 58 std::string source_id = UTF16ToUTF8(component.source().id()); | 58 std::string source_id = UTF16ToUTF8(component.source().id()); |
| 59 webrtc::MediaStreamInterface* native_stream = GetNativeMediaStream(stream); | 59 webrtc::MediaStreamInterface* native_stream = GetNativeMediaStream(stream); |
| 60 if (native_stream) { | 60 if (native_stream) { |
| 61 if (component.source().type() == WebKit::WebMediaStreamSource::TypeAudio) { | 61 if (component.source().type() == WebKit::WebMediaStreamSource::TypeAudio) { |
| 62 return GetTrack<webrtc::AudioTracks>( | 62 return GetTrack<webrtc::AudioTracks>( |
| 63 source_id, native_stream->audio_tracks()); | 63 source_id, native_stream->audio_tracks()); |
| 64 } | 64 } |
| 65 if (component.source().type() == WebKit::WebMediaStreamSource::TypeVideo) { | 65 if (component.source().type() == WebKit::WebMediaStreamSource::TypeVideo) { |
| 66 return GetTrack<webrtc::VideoTracks>( | 66 return GetTrack<webrtc::VideoTracks>( |
| 67 source_id, native_stream->video_tracks()); | 67 source_id, native_stream->video_tracks()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 78 : rtc_factory_(factory) { | 78 : rtc_factory_(factory) { |
| 79 } | 79 } |
| 80 | 80 |
| 81 void MediaStreamCenter::queryMediaStreamSources( | 81 void MediaStreamCenter::queryMediaStreamSources( |
| 82 const WebKit::WebMediaStreamSourcesRequest& request) { | 82 const WebKit::WebMediaStreamSourcesRequest& request) { |
| 83 WebKit::WebVector<WebKit::WebMediaStreamSource> audioSources, videoSources; | 83 WebKit::WebVector<WebKit::WebMediaStreamSource> audioSources, videoSources; |
| 84 request.didCompleteQuery(audioSources, videoSources); | 84 request.didCompleteQuery(audioSources, videoSources); |
| 85 } | 85 } |
| 86 | 86 |
| 87 void MediaStreamCenter::didEnableMediaStreamTrack( | 87 void MediaStreamCenter::didEnableMediaStreamTrack( |
| 88 const WebKit::WebMediaStreamDescriptor& stream, | 88 const WebKit::WebMediaStream& stream, |
| 89 const WebKit::WebMediaStreamComponent& component) { | 89 const WebKit::WebMediaStreamTrack& component) { |
| 90 webrtc::MediaStreamTrackInterface* track = | 90 webrtc::MediaStreamTrackInterface* track = |
| 91 GetNativeMediaStreamTrack(stream, component); | 91 GetNativeMediaStreamTrack(stream, component); |
| 92 if (track) | 92 if (track) |
| 93 track->set_enabled(true); | 93 track->set_enabled(true); |
| 94 } | 94 } |
| 95 | 95 |
| 96 void MediaStreamCenter::didDisableMediaStreamTrack( | 96 void MediaStreamCenter::didDisableMediaStreamTrack( |
| 97 const WebKit::WebMediaStreamDescriptor& stream, | 97 const WebKit::WebMediaStream& stream, |
| 98 const WebKit::WebMediaStreamComponent& component) { | 98 const WebKit::WebMediaStreamTrack& component) { |
| 99 webrtc::MediaStreamTrackInterface* track = | 99 webrtc::MediaStreamTrackInterface* track = |
| 100 GetNativeMediaStreamTrack(stream, component); | 100 GetNativeMediaStreamTrack(stream, component); |
| 101 if (track) | 101 if (track) |
| 102 track->set_enabled(false); | 102 track->set_enabled(false); |
| 103 } | 103 } |
| 104 | 104 |
| 105 void MediaStreamCenter::didStopLocalMediaStream( | 105 void MediaStreamCenter::didStopLocalMediaStream( |
| 106 const WebKit::WebMediaStreamDescriptor& stream) { | 106 const WebKit::WebMediaStream& stream) { |
| 107 DVLOG(1) << "MediaStreamCenter::didStopLocalMediaStream"; | 107 DVLOG(1) << "MediaStreamCenter::didStopLocalMediaStream"; |
| 108 MediaStreamExtraData* extra_data = | 108 MediaStreamExtraData* extra_data = |
| 109 static_cast<MediaStreamExtraData*>(stream.extraData()); | 109 static_cast<MediaStreamExtraData*>(stream.extraData()); |
| 110 if (!extra_data) { | 110 if (!extra_data) { |
| 111 NOTREACHED(); | 111 NOTREACHED(); |
| 112 return; | 112 return; |
| 113 } | 113 } |
| 114 | 114 |
| 115 extra_data->OnLocalStreamStop(); | 115 extra_data->OnLocalStreamStop(); |
| 116 } | 116 } |
| 117 | 117 |
| 118 void MediaStreamCenter::didCreateMediaStream( | 118 void MediaStreamCenter::didCreateMediaStream( |
| 119 WebKit::WebMediaStreamDescriptor& stream) { | 119 WebKit::WebMediaStream& stream) { |
| 120 if (!rtc_factory_) | 120 if (!rtc_factory_) |
| 121 return; | 121 return; |
| 122 rtc_factory_->CreateNativeLocalMediaStream(&stream); | 122 rtc_factory_->CreateNativeLocalMediaStream(&stream); |
| 123 } | 123 } |
| 124 | 124 |
| 125 } // namespace content | 125 } // namespace content |
| OLD | NEW |