Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1661)

Unified Diff: content/renderer/media/media_stream_dependency_factory.cc

Issue 13890012: Integrate VDA with WebRTC. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/media_stream_dependency_factory.cc
diff --git a/content/renderer/media/media_stream_dependency_factory.cc b/content/renderer/media/media_stream_dependency_factory.cc
index 9045b71b89c08b0106f1c010b27092030a6a815c..28952f48a4f21f85704787f9a5bfee46e2ff67fa 100644
--- a/content/renderer/media/media_stream_dependency_factory.cc
+++ b/content/renderer/media/media_stream_dependency_factory.cc
@@ -6,12 +6,15 @@
#include <vector>
+#include "base/command_line.h"
#include "base/synchronization/waitable_event.h"
#include "base/utf_string_conversions.h"
+#include "content/public/common/content_switches.h"
#include "content/renderer/media/media_stream_source_extra_data.h"
#include "content/renderer/media/rtc_media_constraints.h"
#include "content/renderer/media/rtc_peer_connection_handler.h"
#include "content/renderer/media/rtc_video_capturer.h"
+#include "content/renderer/media/rtc_video_decoder_factory.h"
#include "content/renderer/media/video_capture_impl_manager.h"
#include "content/renderer/media/webaudio_capturer_source.h"
#include "content/renderer/media/webrtc_audio_device_impl.h"
@@ -199,13 +202,19 @@ class SourceStateObserver : public webrtc::ObserverInterface,
MediaStreamDependencyFactory::MediaStreamDependencyFactory(
VideoCaptureImplManager* vc_manager,
+ const scoped_refptr<media::GpuVideoDecoder::Factories>& gpu_factories,
P2PSocketDispatcher* p2p_socket_dispatcher)
: network_manager_(NULL),
vc_manager_(vc_manager),
+ gpu_factories_(gpu_factories),
Ami GONE FROM CHROMIUM 2013/04/26 00:42:05 DCHECK this is NULL iff the cmd-line flag is missi
wuchengli 2013/04/26 11:49:14 I changed the place where MediaStreamDependencyFac
p2p_socket_dispatcher_(p2p_socket_dispatcher),
signaling_thread_(NULL),
worker_thread_(NULL),
- chrome_worker_thread_("Chrome_libJingle_WorkerThread") {
+ chrome_worker_thread_("Chrome_libJingle_WorkerThread"),
+ decoder_worker_thread_("DecoderWorkerThread") {
+ if (!decoder_worker_thread_.Start()) {
Ami GONE FROM CHROMIUM 2013/04/26 00:42:05 Shouldn't this be conditional on wanting to use GV
wuchengli 2013/04/26 11:49:14 I moved this to EnsurePeerConnectionFactory and st
wuchengli 2013/05/08 15:58:56 Sounds good. I've used gpu_factories_ to decide wh
+ LOG(ERROR) << "Could not start decoder worker thread";
+ }
}
MediaStreamDependencyFactory::~MediaStreamDependencyFactory() {
@@ -423,10 +432,19 @@ bool MediaStreamDependencyFactory::CreatePeerConnectionFactory() {
if (!pc_factory_.get()) {
DCHECK(!audio_device_);
audio_device_ = new WebRtcAudioDeviceImpl();
+
+ RTCVideoDecoderFactory* decoder_factory = NULL;
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess();
+ if (command_line.HasSwitch(switches::kEnableWebRTCHWDecoding)) {
+ decoder_factory = new RTCVideoDecoderFactory(
+ decoder_worker_thread_.message_loop_proxy(), gpu_factories_);
+ }
+
scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
webrtc::CreatePeerConnectionFactory(worker_thread_,
signaling_thread_,
- audio_device_));
+ audio_device_,
+ decoder_factory));
if (factory.get())
pc_factory_ = factory;
else

Powered by Google App Engine
This is Rietveld 408576698