OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "mojo/services/html_viewer/webmediaplayer_factory.h" |
| 6 |
| 7 #include "base/files/file_path.h" |
| 8 #include "base/path_service.h" |
| 9 #include "base/threading/thread.h" |
| 10 #include "media/audio/audio_manager.h" |
| 11 #include "media/audio/audio_manager_base.h" |
| 12 #include "media/audio/null_audio_sink.h" |
| 13 #include "media/base/audio_hardware_config.h" |
| 14 #include "media/base/media.h" |
| 15 #include "media/base/media_log.h" |
| 16 #include "media/blink/null_encrypted_media_player_support.h" |
| 17 #include "media/blink/webmediaplayer_impl.h" |
| 18 #include "media/blink/webmediaplayer_params.h" |
| 19 #include "media/filters/gpu_video_accelerator_factories.h" |
| 20 |
| 21 namespace mojo { |
| 22 |
| 23 WebMediaPlayerFactory::WebMediaPlayerFactory( |
| 24 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner) |
| 25 : compositor_task_runner_(compositor_task_runner), |
| 26 media_thread_("Media"), |
| 27 audio_manager_(media::AudioManager::Create(&fake_audio_log_factory_)), |
| 28 audio_hardware_config_( |
| 29 audio_manager_->GetInputStreamParameters( |
| 30 media::AudioManagerBase::kDefaultDeviceId), |
| 31 audio_manager_->GetDefaultOutputStreamParameters()) { |
| 32 |
| 33 if (!media::IsMediaLibraryInitialized()) { |
| 34 base::FilePath module_dir; |
| 35 CHECK(PathService::Get(base::DIR_EXE, &module_dir)); |
| 36 CHECK(media::InitializeMediaLibrary(module_dir)); |
| 37 } |
| 38 } |
| 39 |
| 40 WebMediaPlayerFactory::~WebMediaPlayerFactory() { |
| 41 } |
| 42 |
| 43 blink::WebMediaPlayer* WebMediaPlayerFactory::CreateMediaPlayer( |
| 44 blink::WebLocalFrame* frame, |
| 45 const blink::WebURL& url, |
| 46 blink::WebMediaPlayerClient* client) { |
| 47 |
| 48 media::WebMediaPlayerParams params( |
| 49 media::WebMediaPlayerParams::DeferLoadCB(), |
| 50 CreateAudioRendererSink(), |
| 51 GetAudioHardwareConfig(), |
| 52 new media::MediaLog(), |
| 53 scoped_refptr<media::GpuVideoAcceleratorFactories>(), |
| 54 GetMediaThreadTaskRunner(), |
| 55 compositor_task_runner_, |
| 56 base::Bind(&media::NullEncryptedMediaPlayerSupport::Create)); |
| 57 base::WeakPtr<media::WebMediaPlayerDelegate> delegate; |
| 58 |
| 59 return new media::WebMediaPlayerImpl(frame, client, delegate, params); |
| 60 } |
| 61 |
| 62 const media::AudioHardwareConfig& |
| 63 WebMediaPlayerFactory::GetAudioHardwareConfig() { |
| 64 return audio_hardware_config_; |
| 65 } |
| 66 |
| 67 scoped_refptr<media::AudioRendererSink> |
| 68 WebMediaPlayerFactory::CreateAudioRendererSink() { |
| 69 // TODO(acolwell): Replace this with an AudioRendererSink implementation |
| 70 // that actually talks to the audio device or an audio mojo service. |
| 71 return new media::NullAudioSink(GetMediaThreadTaskRunner()); |
| 72 } |
| 73 |
| 74 scoped_refptr<base::SingleThreadTaskRunner> |
| 75 WebMediaPlayerFactory::GetMediaThreadTaskRunner() { |
| 76 if (!media_thread_.IsRunning()) |
| 77 media_thread_.Start(); |
| 78 |
| 79 return media_thread_.message_loop_proxy(); |
| 80 } |
| 81 |
| 82 } // namespace mojo |
OLD | NEW |