| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/webrtc/peer_connection_dependency_factory.h" | 5 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 // Feature is to be disabled, no need to make sure FFmpeg is initialized. | 174 // Feature is to be disabled, no need to make sure FFmpeg is initialized. |
| 175 webrtc::DisableRtcUseH264(); | 175 webrtc::DisableRtcUseH264(); |
| 176 } | 176 } |
| 177 #endif | 177 #endif |
| 178 | 178 |
| 179 base::MessageLoop::current()->AddDestructionObserver(this); | 179 base::MessageLoop::current()->AddDestructionObserver(this); |
| 180 // To allow sending to the signaling/worker threads. | 180 // To allow sending to the signaling/worker threads. |
| 181 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop(); | 181 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop(); |
| 182 jingle_glue::JingleThreadWrapper::current()->set_send_allowed(true); | 182 jingle_glue::JingleThreadWrapper::current()->set_send_allowed(true); |
| 183 | 183 |
| 184 EnsureWebRtcAudioDeviceImpl(); |
| 185 |
| 184 CHECK(chrome_signaling_thread_.Start()); | 186 CHECK(chrome_signaling_thread_.Start()); |
| 185 CHECK(chrome_worker_thread_.Start()); | 187 CHECK(chrome_worker_thread_.Start()); |
| 186 | 188 |
| 187 base::WaitableEvent start_worker_event(true, false); | 189 base::WaitableEvent start_worker_event(true, false); |
| 188 chrome_worker_thread_.task_runner()->PostTask( | 190 chrome_worker_thread_.task_runner()->PostTask( |
| 189 FROM_HERE, | 191 FROM_HERE, |
| 190 base::Bind(&PeerConnectionDependencyFactory::InitializeWorkerThread, | 192 base::Bind(&PeerConnectionDependencyFactory::InitializeWorkerThread, |
| 191 base::Unretained(this), &worker_thread_, &start_worker_event)); | 193 base::Unretained(this), &worker_thread_, &start_worker_event)); |
| 192 | 194 |
| 193 base::WaitableEvent create_network_manager_event(true, false); | 195 base::WaitableEvent create_network_manager_event(true, false); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 media::GpuVideoAcceleratorFactories* gpu_factories, | 227 media::GpuVideoAcceleratorFactories* gpu_factories, |
| 226 base::WaitableEvent* event) { | 228 base::WaitableEvent* event) { |
| 227 DCHECK(chrome_signaling_thread_.task_runner()->BelongsToCurrentThread()); | 229 DCHECK(chrome_signaling_thread_.task_runner()->BelongsToCurrentThread()); |
| 228 DCHECK(worker_thread_); | 230 DCHECK(worker_thread_); |
| 229 DCHECK(p2p_socket_dispatcher_.get()); | 231 DCHECK(p2p_socket_dispatcher_.get()); |
| 230 | 232 |
| 231 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop(); | 233 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop(); |
| 232 jingle_glue::JingleThreadWrapper::current()->set_send_allowed(true); | 234 jingle_glue::JingleThreadWrapper::current()->set_send_allowed(true); |
| 233 signaling_thread_ = jingle_glue::JingleThreadWrapper::current(); | 235 signaling_thread_ = jingle_glue::JingleThreadWrapper::current(); |
| 234 | 236 |
| 235 EnsureWebRtcAudioDeviceImpl(); | |
| 236 | |
| 237 socket_factory_.reset( | 237 socket_factory_.reset( |
| 238 new IpcPacketSocketFactory(p2p_socket_dispatcher_.get())); | 238 new IpcPacketSocketFactory(p2p_socket_dispatcher_.get())); |
| 239 | 239 |
| 240 std::unique_ptr<cricket::WebRtcVideoDecoderFactory> decoder_factory; | 240 std::unique_ptr<cricket::WebRtcVideoDecoderFactory> decoder_factory; |
| 241 std::unique_ptr<cricket::WebRtcVideoEncoderFactory> encoder_factory; | 241 std::unique_ptr<cricket::WebRtcVideoEncoderFactory> encoder_factory; |
| 242 | 242 |
| 243 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); | 243 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); |
| 244 if (gpu_factories && gpu_factories->IsGpuVideoAcceleratorEnabled()) { | 244 if (gpu_factories && gpu_factories->IsGpuVideoAcceleratorEnabled()) { |
| 245 if (!cmd_line->HasSwitch(switches::kDisableWebRtcHWDecoding)) | 245 if (!cmd_line->HasSwitch(switches::kDisableWebRtcHWDecoding)) |
| 246 decoder_factory.reset(new RTCVideoDecoderFactory(gpu_factories)); | 246 decoder_factory.reset(new RTCVideoDecoderFactory(gpu_factories)); |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 416 webrtc::kIdentityName, rtc::KeyParams::ECDSA(rtc::EC_NIST_P256))); | 416 webrtc::kIdentityName, rtc::KeyParams::ECDSA(rtc::EC_NIST_P256))); |
| 417 return rtc::RTCCertificate::Create(std::move(identity)); | 417 return rtc::RTCCertificate::Create(std::move(identity)); |
| 418 } | 418 } |
| 419 | 419 |
| 420 scoped_refptr<webrtc::MediaStreamInterface> | 420 scoped_refptr<webrtc::MediaStreamInterface> |
| 421 PeerConnectionDependencyFactory::CreateLocalMediaStream( | 421 PeerConnectionDependencyFactory::CreateLocalMediaStream( |
| 422 const std::string& label) { | 422 const std::string& label) { |
| 423 return GetPcFactory()->CreateLocalMediaStream(label).get(); | 423 return GetPcFactory()->CreateLocalMediaStream(label).get(); |
| 424 } | 424 } |
| 425 | 425 |
| 426 scoped_refptr<webrtc::AudioSourceInterface> | |
| 427 PeerConnectionDependencyFactory::CreateLocalAudioSource( | |
| 428 const cricket::AudioOptions& options) { | |
| 429 scoped_refptr<webrtc::AudioSourceInterface> source = | |
| 430 GetPcFactory()->CreateAudioSource(options).get(); | |
| 431 return source; | |
| 432 } | |
| 433 | |
| 434 scoped_refptr<webrtc::VideoTrackInterface> | 426 scoped_refptr<webrtc::VideoTrackInterface> |
| 435 PeerConnectionDependencyFactory::CreateLocalVideoTrack( | 427 PeerConnectionDependencyFactory::CreateLocalVideoTrack( |
| 436 const std::string& id, | 428 const std::string& id, |
| 437 webrtc::VideoTrackSourceInterface* source) { | 429 webrtc::VideoTrackSourceInterface* source) { |
| 438 return GetPcFactory()->CreateVideoTrack(id, source).get(); | 430 return GetPcFactory()->CreateVideoTrack(id, source).get(); |
| 439 } | 431 } |
| 440 | 432 |
| 441 scoped_refptr<webrtc::VideoTrackInterface> | 433 scoped_refptr<webrtc::VideoTrackInterface> |
| 442 PeerConnectionDependencyFactory::CreateLocalVideoTrack( | 434 PeerConnectionDependencyFactory::CreateLocalVideoTrack( |
| 443 const std::string& id, cricket::VideoCapturer* capturer) { | 435 const std::string& id, cricket::VideoCapturer* capturer) { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 474 base::PlatformFile file) { | 466 base::PlatformFile file) { |
| 475 return GetPcFactory()->StartRtcEventLog(file); | 467 return GetPcFactory()->StartRtcEventLog(file); |
| 476 } | 468 } |
| 477 | 469 |
| 478 void PeerConnectionDependencyFactory::StopRtcEventLog() { | 470 void PeerConnectionDependencyFactory::StopRtcEventLog() { |
| 479 GetPcFactory()->StopRtcEventLog(); | 471 GetPcFactory()->StopRtcEventLog(); |
| 480 } | 472 } |
| 481 | 473 |
| 482 WebRtcAudioDeviceImpl* | 474 WebRtcAudioDeviceImpl* |
| 483 PeerConnectionDependencyFactory::GetWebRtcAudioDevice() { | 475 PeerConnectionDependencyFactory::GetWebRtcAudioDevice() { |
| 476 DCHECK(CalledOnValidThread()); |
| 477 EnsureWebRtcAudioDeviceImpl(); |
| 484 return audio_device_.get(); | 478 return audio_device_.get(); |
| 485 } | 479 } |
| 486 | 480 |
| 487 void PeerConnectionDependencyFactory::InitializeWorkerThread( | 481 void PeerConnectionDependencyFactory::InitializeWorkerThread( |
| 488 rtc::Thread** thread, | 482 rtc::Thread** thread, |
| 489 base::WaitableEvent* event) { | 483 base::WaitableEvent* event) { |
| 490 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop(); | 484 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop(); |
| 491 jingle_glue::JingleThreadWrapper::current()->set_send_allowed(true); | 485 jingle_glue::JingleThreadWrapper::current()->set_send_allowed(true); |
| 492 *thread = jingle_glue::JingleThreadWrapper::current(); | 486 *thread = jingle_glue::JingleThreadWrapper::current(); |
| 493 event->Signal(); | 487 event->Signal(); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 | 577 |
| 584 scoped_refptr<base::SingleThreadTaskRunner> | 578 scoped_refptr<base::SingleThreadTaskRunner> |
| 585 PeerConnectionDependencyFactory::GetWebRtcSignalingThread() const { | 579 PeerConnectionDependencyFactory::GetWebRtcSignalingThread() const { |
| 586 DCHECK(CalledOnValidThread()); | 580 DCHECK(CalledOnValidThread()); |
| 587 return chrome_signaling_thread_.IsRunning() | 581 return chrome_signaling_thread_.IsRunning() |
| 588 ? chrome_signaling_thread_.task_runner() | 582 ? chrome_signaling_thread_.task_runner() |
| 589 : nullptr; | 583 : nullptr; |
| 590 } | 584 } |
| 591 | 585 |
| 592 void PeerConnectionDependencyFactory::EnsureWebRtcAudioDeviceImpl() { | 586 void PeerConnectionDependencyFactory::EnsureWebRtcAudioDeviceImpl() { |
| 587 DCHECK(CalledOnValidThread()); |
| 593 if (audio_device_.get()) | 588 if (audio_device_.get()) |
| 594 return; | 589 return; |
| 595 | 590 |
| 596 audio_device_ = new WebRtcAudioDeviceImpl(); | 591 audio_device_ = new WebRtcAudioDeviceImpl(); |
| 597 } | 592 } |
| 598 | 593 |
| 599 } // namespace content | 594 } // namespace content |
| OLD | NEW |