Chromium Code Reviews| 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 |