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_dependency_factory.h" | 5 #include "content/renderer/media/media_stream_dependency_factory.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/synchronization/waitable_event.h" | 9 #include "base/synchronization/waitable_event.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 // webKitRTCPeerConnection. | 220 // webKitRTCPeerConnection. |
221 UpdateWebRTCMethodCount(WEBKIT_RTC_PEER_CONNECTION); | 221 UpdateWebRTCMethodCount(WEBKIT_RTC_PEER_CONNECTION); |
222 | 222 |
223 if (!EnsurePeerConnectionFactory()) | 223 if (!EnsurePeerConnectionFactory()) |
224 return NULL; | 224 return NULL; |
225 | 225 |
226 return new RTCPeerConnectionHandler(client, this); | 226 return new RTCPeerConnectionHandler(client, this); |
227 } | 227 } |
228 | 228 |
229 void MediaStreamDependencyFactory::CreateNativeMediaSources( | 229 void MediaStreamDependencyFactory::CreateNativeMediaSources( |
| 230 int render_view_id, |
230 const WebKit::WebMediaConstraints& audio_constraints, | 231 const WebKit::WebMediaConstraints& audio_constraints, |
231 const WebKit::WebMediaConstraints& video_constraints, | 232 const WebKit::WebMediaConstraints& video_constraints, |
232 WebKit::WebMediaStream* description, | 233 WebKit::WebMediaStream* description, |
233 const MediaSourcesCreatedCallback& sources_created) { | 234 const MediaSourcesCreatedCallback& sources_created) { |
234 DVLOG(1) << "MediaStreamDependencyFactory::CreateNativeMediaSources()"; | 235 DVLOG(1) << "MediaStreamDependencyFactory::CreateNativeMediaSources()"; |
235 if (!EnsurePeerConnectionFactory()) { | 236 if (!EnsurePeerConnectionFactory()) { |
236 sources_created.Run(description, false); | 237 sources_created.Run(description, false); |
237 return; | 238 return; |
238 } | 239 } |
239 | 240 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 MediaStreamSourceExtraData* source_data = | 278 MediaStreamSourceExtraData* source_data = |
278 static_cast<MediaStreamSourceExtraData*>(source.extraData()); | 279 static_cast<MediaStreamSourceExtraData*>(source.extraData()); |
279 if (!source_data) { | 280 if (!source_data) { |
280 // TODO(henrika): Implement support for sources from remote MediaStreams. | 281 // TODO(henrika): Implement support for sources from remote MediaStreams. |
281 NOTIMPLEMENTED(); | 282 NOTIMPLEMENTED(); |
282 continue; | 283 continue; |
283 } | 284 } |
284 | 285 |
285 const StreamDeviceInfo device_info = source_data->device_info(); | 286 const StreamDeviceInfo device_info = source_data->device_info(); |
286 if (IsAudioMediaType(device_info.device.type)) { | 287 if (IsAudioMediaType(device_info.device.type)) { |
287 if (!InitializeAudioSource(device_info)) { | 288 if (!InitializeAudioSource(render_view_id, device_info)) { |
288 DLOG(WARNING) << "Unsupported audio source"; | 289 DLOG(WARNING) << "Unsupported audio source"; |
289 sources_created.Run(description, false); | 290 sources_created.Run(description, false); |
290 return; | 291 return; |
291 } | 292 } |
292 } | 293 } |
293 | 294 |
294 // Creates a LocalAudioSource object which holds audio options. | 295 // Creates a LocalAudioSource object which holds audio options. |
295 source_data->SetLocalAudioSource( | 296 source_data->SetLocalAudioSource( |
296 CreateLocalAudioSource(&native_audio_constraints)); | 297 CreateLocalAudioSource(&native_audio_constraints)); |
297 source_observer->AddSource(source_data->local_audio_source()); | 298 source_observer->AddSource(source_data->local_audio_source()); |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 RtcVideoCapturer* capturer = new RtcVideoCapturer( | 480 RtcVideoCapturer* capturer = new RtcVideoCapturer( |
480 video_session_id, vc_manager_.get(), is_screencast); | 481 video_session_id, vc_manager_.get(), is_screencast); |
481 | 482 |
482 // The video source takes ownership of |capturer|. | 483 // The video source takes ownership of |capturer|. |
483 scoped_refptr<webrtc::VideoSourceInterface> source = | 484 scoped_refptr<webrtc::VideoSourceInterface> source = |
484 pc_factory_->CreateVideoSource(capturer, constraints).get(); | 485 pc_factory_->CreateVideoSource(capturer, constraints).get(); |
485 return source; | 486 return source; |
486 } | 487 } |
487 | 488 |
488 bool MediaStreamDependencyFactory::InitializeAudioSource( | 489 bool MediaStreamDependencyFactory::InitializeAudioSource( |
489 const StreamDeviceInfo& device_info) { | 490 int render_view_id, |
| 491 const StreamDeviceInfo& device_info) { |
490 DVLOG(1) << "MediaStreamDependencyFactory::InitializeAudioSource()"; | 492 DVLOG(1) << "MediaStreamDependencyFactory::InitializeAudioSource()"; |
491 | 493 |
492 // TODO(henrika): the current design does not support a unique source | 494 // TODO(henrika): the current design does not support a unique source |
493 // for each audio track. | 495 // for each audio track. |
494 if (device_info.session_id <= 0) | 496 if (device_info.session_id <= 0) |
495 return false; | 497 return false; |
496 | 498 |
497 // Initialize the source using audio parameters for the selected | 499 // Initialize the source using audio parameters for the selected |
498 // capture device. | 500 // capture device. |
499 WebRtcAudioCapturer* capturer = GetWebRtcAudioDevice()->capturer(); | 501 WebRtcAudioCapturer* capturer = GetWebRtcAudioDevice()->capturer(); |
500 // TODO(henrika): refactor \content\public\common\media_stream_request.h | 502 // TODO(henrika): refactor \content\public\common\media_stream_request.h |
501 // to allow dependency of media::ChannelLayout and avoid static_cast. | 503 // to allow dependency of media::ChannelLayout and avoid static_cast. |
502 if (!capturer->Initialize( | 504 if (!capturer->Initialize( |
| 505 render_view_id, |
503 static_cast<media::ChannelLayout>(device_info.device.channel_layout), | 506 static_cast<media::ChannelLayout>(device_info.device.channel_layout), |
504 device_info.device.sample_rate, device_info.session_id)) | 507 device_info.device.sample_rate, device_info.session_id)) |
505 return false; | 508 return false; |
506 | 509 |
507 return true; | 510 return true; |
508 } | 511 } |
509 | 512 |
510 bool MediaStreamDependencyFactory::CreateWebAudioSource( | 513 bool MediaStreamDependencyFactory::CreateWebAudioSource( |
511 WebKit::WebMediaStreamSource* source) { | 514 WebKit::WebMediaStreamSource* source) { |
512 DVLOG(1) << "MediaStreamDependencyFactory::CreateWebAudioSource()"; | 515 DVLOG(1) << "MediaStreamDependencyFactory::CreateWebAudioSource()"; |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
689 // processed before returning. We wait for the above task to finish before | 692 // processed before returning. We wait for the above task to finish before |
690 // letting the the function continue to avoid any potential race issues. | 693 // letting the the function continue to avoid any potential race issues. |
691 chrome_worker_thread_.Stop(); | 694 chrome_worker_thread_.Stop(); |
692 } else { | 695 } else { |
693 NOTREACHED() << "Worker thread not running."; | 696 NOTREACHED() << "Worker thread not running."; |
694 } | 697 } |
695 } | 698 } |
696 } | 699 } |
697 | 700 |
698 } // namespace content | 701 } // namespace content |
OLD | NEW |