OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/media/webmediaplayer_ms.h" | 5 #include "content/renderer/media/webmediaplayer_ms.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 } | 96 } |
97 | 97 |
98 } // anonymous namespace | 98 } // anonymous namespace |
99 | 99 |
100 WebMediaPlayerMS::WebMediaPlayerMS( | 100 WebMediaPlayerMS::WebMediaPlayerMS( |
101 blink::WebFrame* frame, | 101 blink::WebFrame* frame, |
102 blink::WebMediaPlayerClient* client, | 102 blink::WebMediaPlayerClient* client, |
103 base::WeakPtr<media::WebMediaPlayerDelegate> delegate, | 103 base::WeakPtr<media::WebMediaPlayerDelegate> delegate, |
104 media::MediaLog* media_log, | 104 media::MediaLog* media_log, |
105 scoped_ptr<MediaStreamRendererFactory> factory, | 105 scoped_ptr<MediaStreamRendererFactory> factory, |
106 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner) | 106 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner, |
| 107 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, |
| 108 const scoped_refptr<base::TaskRunner>& worker_task_runner, |
| 109 const scoped_refptr<media::GpuVideoAcceleratorFactories>& gpu_factories) |
107 : frame_(frame), | 110 : frame_(frame), |
108 network_state_(WebMediaPlayer::NetworkStateEmpty), | 111 network_state_(WebMediaPlayer::NetworkStateEmpty), |
109 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), | 112 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), |
110 buffered_(static_cast<size_t>(0)), | 113 buffered_(static_cast<size_t>(0)), |
111 volume_(1.0f), | 114 volume_(1.0f), |
112 client_(client), | 115 client_(client), |
113 delegate_(delegate), | 116 delegate_(delegate), |
114 paused_(true), | 117 paused_(true), |
115 received_first_frame_(false), | 118 received_first_frame_(false), |
116 media_log_(media_log), | 119 media_log_(media_log), |
117 renderer_factory_(factory.Pass()), | 120 renderer_factory_(factory.Pass()), |
| 121 media_task_runner_(media_task_runner), |
| 122 worker_task_runner_(worker_task_runner), |
| 123 gpu_factories_(gpu_factories), |
118 compositor_(new Compositor(compositor_task_runner)), | 124 compositor_(new Compositor(compositor_task_runner)), |
119 compositor_task_runner_(compositor_task_runner) { | 125 compositor_task_runner_(compositor_task_runner) { |
120 DVLOG(1) << "WebMediaPlayerMS::ctor"; | 126 DVLOG(1) << "WebMediaPlayerMS::ctor"; |
121 media_log_->AddEvent( | 127 media_log_->AddEvent( |
122 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); | 128 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); |
123 } | 129 } |
124 | 130 |
125 WebMediaPlayerMS::~WebMediaPlayerMS() { | 131 WebMediaPlayerMS::~WebMediaPlayerMS() { |
126 DVLOG(1) << "WebMediaPlayerMS::dtor"; | 132 DVLOG(1) << "WebMediaPlayerMS::dtor"; |
127 DCHECK(thread_checker_.CalledOnValidThread()); | 133 DCHECK(thread_checker_.CalledOnValidThread()); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 uint32 hash_value = base::Hash(url.string().utf8()); | 175 uint32 hash_value = base::Hash(url.string().utf8()); |
170 compositor_->SetSerial(((hash_value & 0x7FFFFFFF) << 1) | (remote ? 1 : 0)); | 176 compositor_->SetSerial(((hash_value & 0x7FFFFFFF) << 1) | (remote ? 1 : 0)); |
171 | 177 |
172 SetNetworkState(WebMediaPlayer::NetworkStateLoading); | 178 SetNetworkState(WebMediaPlayer::NetworkStateLoading); |
173 SetReadyState(WebMediaPlayer::ReadyStateHaveNothing); | 179 SetReadyState(WebMediaPlayer::ReadyStateHaveNothing); |
174 media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec())); | 180 media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec())); |
175 | 181 |
176 video_frame_provider_ = renderer_factory_->GetVideoFrameProvider( | 182 video_frame_provider_ = renderer_factory_->GetVideoFrameProvider( |
177 url, | 183 url, |
178 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()), | 184 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()), |
179 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr())); | 185 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr()), |
| 186 media_task_runner_, |
| 187 worker_task_runner_, |
| 188 gpu_factories_); |
180 | 189 |
181 RenderFrame* const frame = RenderFrame::FromWebFrame(frame_); | 190 RenderFrame* const frame = RenderFrame::FromWebFrame(frame_); |
182 audio_renderer_ = renderer_factory_->GetAudioRenderer( | 191 audio_renderer_ = renderer_factory_->GetAudioRenderer( |
183 url, | 192 url, |
184 frame->GetRoutingID()); | 193 frame->GetRoutingID()); |
185 | 194 |
186 if (!video_frame_provider_ && !audio_renderer_) { | 195 if (!video_frame_provider_ && !audio_renderer_) { |
187 SetNetworkState(WebMediaPlayer::NetworkStateNetworkError); | 196 SetNetworkState(WebMediaPlayer::NetworkStateNetworkError); |
188 return; | 197 return; |
189 } | 198 } |
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
763 bool WebMediaPlayerMS::Compositor::GetAlgorithmEnabled() { | 772 bool WebMediaPlayerMS::Compositor::GetAlgorithmEnabled() { |
764 DCHECK(thread_checker_.CalledOnValidThread()); | 773 DCHECK(thread_checker_.CalledOnValidThread()); |
765 return !!frame_pool_; | 774 return !!frame_pool_; |
766 } | 775 } |
767 | 776 |
768 void WebMediaPlayerMS::Compositor::SetSerial(uint32 serial) { | 777 void WebMediaPlayerMS::Compositor::SetSerial(uint32 serial) { |
769 DCHECK(thread_checker_.CalledOnValidThread()); | 778 DCHECK(thread_checker_.CalledOnValidThread()); |
770 serial_ = serial; | 779 serial_ = serial; |
771 } | 780 } |
772 } // namespace content | 781 } // namespace content |
OLD | NEW |