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 <stddef.h> | 7 #include <stddef.h> |
8 #include <limits> | 8 #include <limits> |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 | 137 |
138 base::WeakPtrFactory<FrameDeliverer> weak_factory_; | 138 base::WeakPtrFactory<FrameDeliverer> weak_factory_; |
139 | 139 |
140 DISALLOW_COPY_AND_ASSIGN(FrameDeliverer); | 140 DISALLOW_COPY_AND_ASSIGN(FrameDeliverer); |
141 }; | 141 }; |
142 | 142 |
143 WebMediaPlayerMS::WebMediaPlayerMS( | 143 WebMediaPlayerMS::WebMediaPlayerMS( |
144 blink::WebFrame* frame, | 144 blink::WebFrame* frame, |
145 blink::WebMediaPlayerClient* client, | 145 blink::WebMediaPlayerClient* client, |
146 media::WebMediaPlayerDelegate* delegate, | 146 media::WebMediaPlayerDelegate* delegate, |
147 media::MediaLog* media_log, | 147 std::unique_ptr<media::MediaLog> media_log, |
148 std::unique_ptr<MediaStreamRendererFactory> factory, | 148 std::unique_ptr<MediaStreamRendererFactory> factory, |
149 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, | 149 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, |
150 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner, | 150 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner, |
151 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner, | 151 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner, |
152 scoped_refptr<base::TaskRunner> worker_task_runner, | 152 scoped_refptr<base::TaskRunner> worker_task_runner, |
153 media::GpuVideoAcceleratorFactories* gpu_factories, | 153 media::GpuVideoAcceleratorFactories* gpu_factories, |
154 const blink::WebString& sink_id, | 154 const blink::WebString& sink_id, |
155 const blink::WebSecurityOrigin& security_origin) | 155 const blink::WebSecurityOrigin& security_origin) |
156 : frame_(frame), | 156 : frame_(frame), |
157 network_state_(WebMediaPlayer::kNetworkStateEmpty), | 157 network_state_(WebMediaPlayer::kNetworkStateEmpty), |
158 ready_state_(WebMediaPlayer::kReadyStateHaveNothing), | 158 ready_state_(WebMediaPlayer::kReadyStateHaveNothing), |
159 buffered_(static_cast<size_t>(0)), | 159 buffered_(static_cast<size_t>(0)), |
160 client_(client), | 160 client_(client), |
161 delegate_(delegate), | 161 delegate_(delegate), |
162 delegate_id_(0), | 162 delegate_id_(0), |
163 paused_(true), | 163 paused_(true), |
164 video_rotation_(media::VIDEO_ROTATION_0), | 164 video_rotation_(media::VIDEO_ROTATION_0), |
165 media_log_(media_log), | 165 media_log_(std::move(media_log)), |
166 renderer_factory_(std::move(factory)), | 166 renderer_factory_(std::move(factory)), |
167 io_task_runner_(io_task_runner), | 167 io_task_runner_(io_task_runner), |
168 compositor_task_runner_(compositor_task_runner), | 168 compositor_task_runner_(compositor_task_runner), |
169 media_task_runner_(media_task_runner), | 169 media_task_runner_(media_task_runner), |
170 worker_task_runner_(worker_task_runner), | 170 worker_task_runner_(worker_task_runner), |
171 gpu_factories_(gpu_factories), | 171 gpu_factories_(gpu_factories), |
172 initial_audio_output_device_id_(sink_id.Utf8()), | 172 initial_audio_output_device_id_(sink_id.Utf8()), |
173 initial_security_origin_(security_origin.IsNull() | 173 initial_security_origin_(security_origin.IsNull() |
174 ? url::Origin() | 174 ? url::Origin() |
175 : url::Origin(security_origin)), | 175 : url::Origin(security_origin)), |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 CORSMode /*cors_mode*/) { | 218 CORSMode /*cors_mode*/) { |
219 DVLOG(1) << __func__; | 219 DVLOG(1) << __func__; |
220 DCHECK(thread_checker_.CalledOnValidThread()); | 220 DCHECK(thread_checker_.CalledOnValidThread()); |
221 | 221 |
222 // TODO(acolwell): Change this to DCHECK_EQ(load_type, LoadTypeMediaStream) | 222 // TODO(acolwell): Change this to DCHECK_EQ(load_type, LoadTypeMediaStream) |
223 // once Blink-side changes land. | 223 // once Blink-side changes land. |
224 DCHECK_NE(load_type, kLoadTypeMediaSource); | 224 DCHECK_NE(load_type, kLoadTypeMediaSource); |
225 blink::WebMediaStream web_stream = | 225 blink::WebMediaStream web_stream = |
226 GetWebMediaStreamFromWebMediaPlayerSource(source); | 226 GetWebMediaStreamFromWebMediaPlayerSource(source); |
227 | 227 |
228 compositor_ = new WebMediaPlayerMSCompositor( | 228 compositor_ = new WebMediaPlayerMSCompositor(compositor_task_runner_, |
229 compositor_task_runner_, web_stream, AsWeakPtr(), media_log_); | 229 web_stream, AsWeakPtr()); |
230 | 230 |
231 SetNetworkState(WebMediaPlayer::kNetworkStateLoading); | 231 SetNetworkState(WebMediaPlayer::kNetworkStateLoading); |
232 SetReadyState(WebMediaPlayer::kReadyStateHaveNothing); | 232 SetReadyState(WebMediaPlayer::kReadyStateHaveNothing); |
233 std::string stream_id = | 233 std::string stream_id = |
234 web_stream.IsNull() ? std::string() : web_stream.Id().Utf8(); | 234 web_stream.IsNull() ? std::string() : web_stream.Id().Utf8(); |
235 media_log_->AddEvent(media_log_->CreateLoadEvent(stream_id)); | 235 media_log_->AddEvent(media_log_->CreateLoadEvent(stream_id)); |
236 | 236 |
237 frame_deliverer_.reset(new WebMediaPlayerMS::FrameDeliverer( | 237 frame_deliverer_.reset(new WebMediaPlayerMS::FrameDeliverer( |
238 AsWeakPtr(), | 238 AsWeakPtr(), |
239 base::Bind(&WebMediaPlayerMSCompositor::EnqueueFrame, compositor_))); | 239 base::Bind(&WebMediaPlayerMSCompositor::EnqueueFrame, compositor_))); |
240 video_frame_provider_ = renderer_factory_->GetVideoRenderer( | 240 video_frame_provider_ = renderer_factory_->GetVideoRenderer( |
241 web_stream, media::BindToCurrentLoop(base::Bind( | 241 web_stream, media::BindToCurrentLoop(base::Bind( |
242 &WebMediaPlayerMS::OnSourceError, AsWeakPtr())), | 242 &WebMediaPlayerMS::OnSourceError, AsWeakPtr())), |
243 frame_deliverer_->GetRepaintCallback(), io_task_runner_, | 243 frame_deliverer_->GetRepaintCallback(), io_task_runner_, |
244 media_task_runner_, worker_task_runner_, gpu_factories_); | 244 media_task_runner_, worker_task_runner_, gpu_factories_); |
245 | 245 |
246 RenderFrame* const frame = RenderFrame::FromWebFrame(frame_); | 246 RenderFrame* const frame = RenderFrame::FromWebFrame(frame_); |
247 | 247 |
248 if (frame) { | 248 if (frame) { |
249 // Report UMA and RAPPOR metrics. | 249 // Report UMA and RAPPOR metrics. |
250 GURL url = source.IsURL() ? GURL(source.GetAsURL()) : GURL(); | 250 GURL url = source.IsURL() ? GURL(source.GetAsURL()) : GURL(); |
251 media::ReportMetrics(load_type, url, frame_->GetSecurityOrigin(), | 251 media::ReportMetrics(load_type, url, frame_->GetSecurityOrigin(), |
252 media_log_); | 252 media_log_.get()); |
253 | 253 |
254 audio_renderer_ = renderer_factory_->GetAudioRenderer( | 254 audio_renderer_ = renderer_factory_->GetAudioRenderer( |
255 web_stream, frame->GetRoutingID(), initial_audio_output_device_id_, | 255 web_stream, frame->GetRoutingID(), initial_audio_output_device_id_, |
256 initial_security_origin_); | 256 initial_security_origin_); |
257 } | 257 } |
258 | 258 |
259 if (!video_frame_provider_ && !audio_renderer_) { | 259 if (!video_frame_provider_ && !audio_renderer_) { |
260 SetNetworkState(WebMediaPlayer::kNetworkStateNetworkError); | 260 SetNetworkState(WebMediaPlayer::kNetworkStateNetworkError); |
261 return; | 261 return; |
262 } | 262 } |
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
707 void WebMediaPlayerMS::ResetCanvasCache() { | 707 void WebMediaPlayerMS::ResetCanvasCache() { |
708 DCHECK(thread_checker_.CalledOnValidThread()); | 708 DCHECK(thread_checker_.CalledOnValidThread()); |
709 video_renderer_.ResetCache(); | 709 video_renderer_.ResetCache(); |
710 } | 710 } |
711 | 711 |
712 void WebMediaPlayerMS::TriggerResize() { | 712 void WebMediaPlayerMS::TriggerResize() { |
713 get_client()->SizeChanged(); | 713 get_client()->SizeChanged(); |
714 } | 714 } |
715 | 715 |
716 } // namespace content | 716 } // namespace content |
OLD | NEW |