Index: mojo/services/html_viewer/webmediaplayer_factory.cc |
diff --git a/mojo/services/html_viewer/webmediaplayer_factory.cc b/mojo/services/html_viewer/webmediaplayer_factory.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b7ae1c56c91c7fc526e00d123db651365f9fa3db |
--- /dev/null |
+++ b/mojo/services/html_viewer/webmediaplayer_factory.cc |
@@ -0,0 +1,76 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "mojo/services/html_viewer/webmediaplayer_factory.h" |
+ |
+#include "base/threading/thread.h" |
+#include "media/audio/audio_manager.h" |
+#include "media/audio/audio_manager_base.h" |
+#include "media/audio/null_audio_sink.h" |
+#include "media/base/audio_hardware_config.h" |
+#include "media/base/media.h" |
+#include "media/base/media_log.h" |
+#include "media/blink/null_encrypted_media_player_support.h" |
+#include "media/blink/webmediaplayer_impl.h" |
+#include "media/blink/webmediaplayer_params.h" |
+#include "media/filters/gpu_video_accelerator_factories.h" |
+ |
+namespace mojo { |
+ |
+WebMediaPlayerFactory::WebMediaPlayerFactory() { |
+ if (!media::IsMediaLibraryInitialized()) |
+ media::InitializeMediaLibraryForTesting(); |
scherkus (not reviewing)
2014/09/12 00:17:52
sanity check: do you want to CHECK()?
acolwell GONE FROM CHROMIUM
2014/09/12 16:46:02
Done.
|
+ |
+ audio_manager_.reset(media::AudioManager::Create(&fake_audio_log_factory_)); |
+ |
+ audio_hardware_config_.reset(new media::AudioHardwareConfig( |
+ audio_manager_->GetInputStreamParameters( |
+ media::AudioManagerBase::kDefaultDeviceId), |
+ audio_manager_->GetDefaultOutputStreamParameters())); |
+} |
+ |
+WebMediaPlayerFactory::~WebMediaPlayerFactory() { |
+} |
+ |
+blink::WebMediaPlayer* WebMediaPlayerFactory::CreateMediaPlayer( |
+ blink::WebLocalFrame* frame, |
+ const blink::WebURL& url, |
+ blink::WebMediaPlayerClient* client) { |
+ |
+ media::WebMediaPlayerParams params( |
+ media::WebMediaPlayerParams::DeferLoadCB(), |
+ CreateAudioRendererSink(), |
+ GetAudioHardwareConfig(), |
+ new media::MediaLog(), |
+ scoped_refptr<media::GpuVideoAcceleratorFactories>(), |
+ GetMediaThreadTaskRunner(), |
+ scoped_refptr<base::SingleThreadTaskRunner>(), // compositor_message_loop |
+ base::Bind(&media::NullEncryptedMediaPlayerSupport::Create)); |
+ base::WeakPtr<media::WebMediaPlayerDelegate> delegate; |
+ |
+ return new media::WebMediaPlayerImpl(frame, client, delegate, params); |
+} |
+ |
+const media::AudioHardwareConfig& |
+WebMediaPlayerFactory::GetAudioHardwareConfig() { |
+ return *audio_hardware_config_; |
+} |
+ |
+scoped_refptr<media::AudioRendererSink> |
+WebMediaPlayerFactory::CreateAudioRendererSink() { |
+ // TODO(acolwell): Replace this with an AudioRendererSink implementation |
+ // that actually talks to the audio device or an audio mojo service. |
+ return new media::NullAudioSink(GetMediaThreadTaskRunner()); |
+} |
+ |
+scoped_refptr<base::SingleThreadTaskRunner> |
+WebMediaPlayerFactory::GetMediaThreadTaskRunner() { |
+ if (!media_thread_) { |
+ media_thread_.reset(new base::Thread("Media")); |
+ media_thread_->Start(); |
+ } |
+ return media_thread_->message_loop_proxy(); |
+} |
+ |
+} // namespace mojo |