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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 | 10 |
11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
12 #include "base/logging.h" | 12 #include "base/logging.h" |
13 #include "content/common/media/media_stream_messages.h" | 13 #include "content/common/media/media_stream_messages.h" |
14 #include "content/public/common/content_switches.h" | 14 #include "content/public/common/content_switches.h" |
15 #include "content/public/renderer/media_stream_audio_sink.h" | 15 #include "content/public/renderer/media_stream_audio_sink.h" |
16 #include "content/public/renderer/render_thread.h" | 16 #include "content/public/renderer/render_thread.h" |
17 #include "content/renderer/media/media_stream.h" | 17 #include "content/renderer/media/media_stream.h" |
18 #include "content/renderer/media/media_stream_audio_track.h" | 18 #include "content/renderer/media/media_stream_audio_track.h" |
19 #include "content/renderer/media/media_stream_source.h" | 19 #include "content/renderer/media/media_stream_source.h" |
20 #include "content/renderer/media/media_stream_video_source.h" | 20 #include "content/renderer/media/media_stream_video_source.h" |
21 #include "content/renderer/media/media_stream_video_track.h" | 21 #include "content/renderer/media/media_stream_video_track.h" |
| 22 #include "content/renderer/media/webaudio_media_stream_source.h" |
22 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" | 23 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" |
23 #include "content/renderer/media/webrtc_local_audio_source_provider.h" | 24 #include "content/renderer/media/webrtc_local_audio_source_provider.h" |
24 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" | 25 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" |
25 #include "third_party/WebKit/public/platform/WebMediaStream.h" | 26 #include "third_party/WebKit/public/platform/WebMediaStream.h" |
26 #include "third_party/WebKit/public/platform/WebMediaStreamCenterClient.h" | 27 #include "third_party/WebKit/public/platform/WebMediaStreamCenterClient.h" |
27 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" | 28 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
28 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" | 29 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
29 #include "third_party/WebKit/public/platform/WebMediaStreamTrackSourcesRequest.h
" | 30 #include "third_party/WebKit/public/platform/WebMediaStreamTrackSourcesRequest.h
" |
30 #include "third_party/WebKit/public/platform/WebSourceInfo.h" | 31 #include "third_party/WebKit/public/platform/WebSourceInfo.h" |
31 #include "third_party/WebKit/public/platform/WebVector.h" | 32 #include "third_party/WebKit/public/platform/WebVector.h" |
32 #include "third_party/WebKit/public/web/WebFrame.h" | 33 #include "third_party/WebKit/public/web/WebFrame.h" |
33 | 34 |
34 using blink::WebFrame; | 35 using blink::WebFrame; |
35 using blink::WebView; | 36 using blink::WebView; |
36 | 37 |
37 namespace content { | 38 namespace content { |
38 | 39 |
39 namespace { | 40 namespace { |
40 | 41 |
41 void CreateNativeAudioMediaStreamTrack( | 42 void CreateNativeAudioMediaStreamTrack( |
42 const blink::WebMediaStreamTrack& track, | 43 const blink::WebMediaStreamTrack& track, |
43 PeerConnectionDependencyFactory* factory) { | 44 PeerConnectionDependencyFactory* factory) { |
44 DCHECK(!MediaStreamAudioTrack::From(track)); | |
45 blink::WebMediaStreamSource source = track.source(); | 45 blink::WebMediaStreamSource source = track.source(); |
46 DCHECK_EQ(source.getType(), blink::WebMediaStreamSource::TypeAudio); | 46 MediaStreamAudioSource* media_stream_source = |
47 if (source.remote()) { | 47 MediaStreamAudioSource::From(source); |
48 factory->CreateRemoteAudioTrack(track); | 48 |
49 } else { | 49 // At this point, a MediaStreamAudioSource instance must exist. The one |
50 factory->CreateLocalAudioTrack(track); | 50 // exception is when a WebAudio destination node is acting as a source of |
| 51 // audio. |
| 52 // |
| 53 // TODO(miu): This needs to be moved to an appropriate location. A WebAudio |
| 54 // source should have been created before this method was called so that this |
| 55 // special case code isn't needed here. |
| 56 if (!media_stream_source && source.requiresAudioConsumer()) { |
| 57 DVLOG(1) << "Creating WebAudio media stream source."; |
| 58 media_stream_source = new WebAudioMediaStreamSource(&source); |
| 59 source.setExtraData(media_stream_source); // Takes ownership. |
51 } | 60 } |
| 61 |
| 62 if (media_stream_source) |
| 63 media_stream_source->ConnectToTrack(track); |
| 64 else |
| 65 LOG(DFATAL) << "WebMediaStreamSource missing its MediaStreamAudioSource."; |
52 } | 66 } |
53 | 67 |
54 void CreateNativeVideoMediaStreamTrack( | 68 void CreateNativeVideoMediaStreamTrack( |
55 const blink::WebMediaStreamTrack& track) { | 69 const blink::WebMediaStreamTrack& track) { |
56 DCHECK(track.getExtraData() == NULL); | 70 DCHECK(track.getExtraData() == NULL); |
57 blink::WebMediaStreamSource source = track.source(); | 71 blink::WebMediaStreamSource source = track.source(); |
58 DCHECK_EQ(source.getType(), blink::WebMediaStreamSource::TypeVideo); | 72 DCHECK_EQ(source.getType(), blink::WebMediaStreamSource::TypeVideo); |
59 MediaStreamVideoSource* native_source = | 73 MediaStreamVideoSource* native_source = |
60 MediaStreamVideoSource::GetVideoSource(source); | 74 MediaStreamVideoSource::GetVideoSource(source); |
61 DCHECK(native_source); | 75 DCHECK(native_source); |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 | 199 |
186 bool MediaStreamCenter::didRemoveMediaStreamTrack( | 200 bool MediaStreamCenter::didRemoveMediaStreamTrack( |
187 const blink::WebMediaStream& stream, | 201 const blink::WebMediaStream& stream, |
188 const blink::WebMediaStreamTrack& track) { | 202 const blink::WebMediaStreamTrack& track) { |
189 DVLOG(1) << "MediaStreamCenter::didRemoveMediaStreamTrack"; | 203 DVLOG(1) << "MediaStreamCenter::didRemoveMediaStreamTrack"; |
190 MediaStream* native_stream = MediaStream::GetMediaStream(stream); | 204 MediaStream* native_stream = MediaStream::GetMediaStream(stream); |
191 return native_stream->RemoveTrack(track); | 205 return native_stream->RemoveTrack(track); |
192 } | 206 } |
193 | 207 |
194 } // namespace content | 208 } // namespace content |
OLD | NEW |