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