| 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 blink::WebMediaPlayerClient* client, | 43 blink::WebMediaPlayerClient* client, |
| 44 base::WeakPtr<media::WebMediaPlayerDelegate> delegate, | 44 base::WeakPtr<media::WebMediaPlayerDelegate> delegate, |
| 45 media::MediaLog* media_log, | 45 media::MediaLog* media_log, |
| 46 scoped_ptr<MediaStreamRendererFactory> factory, | 46 scoped_ptr<MediaStreamRendererFactory> factory, |
| 47 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner, | 47 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner, |
| 48 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, | 48 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, |
| 49 const scoped_refptr<base::TaskRunner>& worker_task_runner, | 49 const scoped_refptr<base::TaskRunner>& worker_task_runner, |
| 50 media::GpuVideoAcceleratorFactories* gpu_factories, | 50 media::GpuVideoAcceleratorFactories* gpu_factories, |
| 51 const blink::WebString& sink_id, | 51 const blink::WebString& sink_id, |
| 52 const blink::WebSecurityOrigin& security_origin) | 52 const blink::WebSecurityOrigin& security_origin) |
| 53 : RenderFrameObserver(RenderFrame::FromWebFrame(frame)), | 53 : frame_(frame), |
| 54 frame_(frame), | |
| 55 network_state_(WebMediaPlayer::NetworkStateEmpty), | 54 network_state_(WebMediaPlayer::NetworkStateEmpty), |
| 56 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), | 55 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), |
| 57 buffered_(static_cast<size_t>(0)), | 56 buffered_(static_cast<size_t>(0)), |
| 58 client_(client), | 57 client_(client), |
| 59 delegate_(delegate), | 58 delegate_(delegate), |
| 60 paused_(true), | 59 paused_(true), |
| 61 render_frame_suspended_(false), | 60 render_frame_suspended_(false), |
| 62 received_first_frame_(false), | 61 received_first_frame_(false), |
| 63 media_log_(media_log), | 62 media_log_(media_log), |
| 64 renderer_factory_(std::move(factory)), | 63 renderer_factory_(std::move(factory)), |
| 65 media_task_runner_(media_task_runner), | 64 media_task_runner_(media_task_runner), |
| 66 worker_task_runner_(worker_task_runner), | 65 worker_task_runner_(worker_task_runner), |
| 67 gpu_factories_(gpu_factories), | 66 gpu_factories_(gpu_factories), |
| 68 compositor_task_runner_(compositor_task_runner), | 67 compositor_task_runner_(compositor_task_runner), |
| 69 initial_audio_output_device_id_(sink_id.utf8()), | 68 initial_audio_output_device_id_(sink_id.utf8()), |
| 70 initial_security_origin_(security_origin.isNull() | 69 initial_security_origin_(security_origin.isNull() |
| 71 ? url::Origin() | 70 ? url::Origin() |
| 72 : url::Origin(security_origin)) { | 71 : url::Origin(security_origin)) { |
| 73 DVLOG(1) << __FUNCTION__; | 72 DVLOG(1) << __FUNCTION__; |
| 74 DCHECK(client); | 73 DCHECK(client); |
| 74 if (delegate) |
| 75 delegate->AddObserver(this); |
| 76 |
| 75 media_log_->AddEvent( | 77 media_log_->AddEvent( |
| 76 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); | 78 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); |
| 77 } | 79 } |
| 78 | 80 |
| 79 WebMediaPlayerMS::~WebMediaPlayerMS() { | 81 WebMediaPlayerMS::~WebMediaPlayerMS() { |
| 80 DVLOG(1) << __FUNCTION__; | 82 DVLOG(1) << __FUNCTION__; |
| 81 DCHECK(thread_checker_.CalledOnValidThread()); | 83 DCHECK(thread_checker_.CalledOnValidThread()); |
| 82 | 84 |
| 83 if (compositor_ && !compositor_task_runner_->BelongsToCurrentThread()) | 85 if (compositor_ && !compositor_task_runner_->BelongsToCurrentThread()) |
| 84 compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_.release()); | 86 compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_.release()); |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 NOTIMPLEMENTED(); | 355 NOTIMPLEMENTED(); |
| 354 return 0; | 356 return 0; |
| 355 } | 357 } |
| 356 | 358 |
| 357 unsigned WebMediaPlayerMS::videoDecodedByteCount() const { | 359 unsigned WebMediaPlayerMS::videoDecodedByteCount() const { |
| 358 DCHECK(thread_checker_.CalledOnValidThread()); | 360 DCHECK(thread_checker_.CalledOnValidThread()); |
| 359 NOTIMPLEMENTED(); | 361 NOTIMPLEMENTED(); |
| 360 return 0; | 362 return 0; |
| 361 } | 363 } |
| 362 | 364 |
| 363 void WebMediaPlayerMS::WasHidden() { | 365 blink::WebMediaPlayer* WebMediaPlayerMS::GetPlayer() { |
| 366 return this; |
| 367 } |
| 368 |
| 369 void WebMediaPlayerMS::OnHidden() { |
| 364 #if defined(OS_ANDROID) | 370 #if defined(OS_ANDROID) |
| 365 DCHECK(thread_checker_.CalledOnValidThread()); | 371 DCHECK(thread_checker_.CalledOnValidThread()); |
| 366 DCHECK(!render_frame_suspended_); | 372 DCHECK(!render_frame_suspended_); |
| 367 | 373 |
| 368 // Method called when the RenderFrame is sent to background and suspended | 374 // Method called when the RenderFrame is sent to background and suspended |
| 369 // (android). Substitute the displayed VideoFrame with a copy to avoid | 375 // (android). Substitute the displayed VideoFrame with a copy to avoid |
| 370 // holding on to it unnecessarily. | 376 // holding on to it unnecessarily. |
| 371 render_frame_suspended_=true; | 377 render_frame_suspended_=true; |
| 372 if (!paused_) | 378 if (!paused_) |
| 373 compositor_->ReplaceCurrentFrameWithACopy(); | 379 compositor_->ReplaceCurrentFrameWithACopy(); |
| 374 #endif // defined(OS_ANDROID) | 380 #endif // defined(OS_ANDROID) |
| 375 } | 381 } |
| 376 | 382 |
| 377 void WebMediaPlayerMS::WasShown() { | 383 void WebMediaPlayerMS::OnShown() { |
| 378 #if defined(OS_ANDROID) | 384 #if defined(OS_ANDROID) |
| 379 DCHECK(thread_checker_.CalledOnValidThread()); | 385 DCHECK(thread_checker_.CalledOnValidThread()); |
| 380 | 386 |
| 381 render_frame_suspended_ = false; | 387 render_frame_suspended_ = false; |
| 382 #endif // defined(OS_ANDROID) | 388 #endif // defined(OS_ANDROID) |
| 383 } | 389 } |
| 384 | 390 |
| 391 void WebMediaPlayerMS::OnPlay() { |
| 392 play(); |
| 393 client_->playbackStateChanged(); |
| 394 } |
| 395 |
| 396 void WebMediaPlayerMS::OnPause() { |
| 397 pause(); |
| 398 client_->playbackStateChanged(); |
| 399 } |
| 400 |
| 385 bool WebMediaPlayerMS::copyVideoTextureToPlatformTexture( | 401 bool WebMediaPlayerMS::copyVideoTextureToPlatformTexture( |
| 386 blink::WebGraphicsContext3D* web_graphics_context, | 402 blink::WebGraphicsContext3D* web_graphics_context, |
| 387 unsigned int texture, | 403 unsigned int texture, |
| 388 unsigned int internal_format, | 404 unsigned int internal_format, |
| 389 unsigned int type, | 405 unsigned int type, |
| 390 bool premultiply_alpha, | 406 bool premultiply_alpha, |
| 391 bool flip_y) { | 407 bool flip_y) { |
| 392 TRACE_EVENT0("media", "WebMediaPlayerMS:copyVideoTextureToPlatformTexture"); | 408 TRACE_EVENT0("media", "WebMediaPlayerMS:copyVideoTextureToPlatformTexture"); |
| 393 DCHECK(thread_checker_.CalledOnValidThread()); | 409 DCHECK(thread_checker_.CalledOnValidThread()); |
| 394 | 410 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 482 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { | 498 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { |
| 483 return &video_renderer_; | 499 return &video_renderer_; |
| 484 } | 500 } |
| 485 | 501 |
| 486 void WebMediaPlayerMS::ResetCanvasCache() { | 502 void WebMediaPlayerMS::ResetCanvasCache() { |
| 487 DCHECK(thread_checker_.CalledOnValidThread()); | 503 DCHECK(thread_checker_.CalledOnValidThread()); |
| 488 video_renderer_.ResetCache(); | 504 video_renderer_.ResetCache(); |
| 489 } | 505 } |
| 490 | 506 |
| 491 } // namespace content | 507 } // namespace content |
| OLD | NEW |