| 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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 paused_(true), | 57 paused_(true), |
| 58 render_frame_suspended_(false), | 58 render_frame_suspended_(false), |
| 59 received_first_frame_(false), | 59 received_first_frame_(false), |
| 60 media_log_(media_log), | 60 media_log_(media_log), |
| 61 renderer_factory_(factory.Pass()), | 61 renderer_factory_(factory.Pass()), |
| 62 media_task_runner_(media_task_runner), | 62 media_task_runner_(media_task_runner), |
| 63 worker_task_runner_(worker_task_runner), | 63 worker_task_runner_(worker_task_runner), |
| 64 gpu_factories_(gpu_factories), | 64 gpu_factories_(gpu_factories), |
| 65 compositor_task_runner_(compositor_task_runner), | 65 compositor_task_runner_(compositor_task_runner), |
| 66 initial_audio_output_device_id_(sink_id.utf8()), | 66 initial_audio_output_device_id_(sink_id.utf8()), |
| 67 initial_security_origin_(security_origin) { | 67 initial_security_origin_(security_origin.isNull() |
| 68 ? url::Origin() |
| 69 : url::Origin(security_origin)) { |
| 68 DVLOG(1) << __FUNCTION__; | 70 DVLOG(1) << __FUNCTION__; |
| 69 DCHECK(client); | 71 DCHECK(client); |
| 70 media_log_->AddEvent( | 72 media_log_->AddEvent( |
| 71 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); | 73 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); |
| 72 } | 74 } |
| 73 | 75 |
| 74 WebMediaPlayerMS::~WebMediaPlayerMS() { | 76 WebMediaPlayerMS::~WebMediaPlayerMS() { |
| 75 DVLOG(1) << __FUNCTION__; | 77 DVLOG(1) << __FUNCTION__; |
| 76 DCHECK(thread_checker_.CalledOnValidThread()); | 78 DCHECK(thread_checker_.CalledOnValidThread()); |
| 77 | 79 |
| 78 if (compositor_) | 80 if (compositor_ && !compositor_task_runner_->BelongsToCurrentThread()) |
| 79 compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_.release()); | 81 compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_.release()); |
| 80 | 82 |
| 81 get_client()->setWebLayer(nullptr); | 83 get_client()->setWebLayer(nullptr); |
| 82 | 84 |
| 83 if (video_frame_provider_) | 85 if (video_frame_provider_) |
| 84 video_frame_provider_->Stop(); | 86 video_frame_provider_->Stop(); |
| 85 | 87 |
| 86 if (audio_renderer_) | 88 if (audio_renderer_) |
| 87 audio_renderer_->Stop(); | 89 audio_renderer_->Stop(); |
| 88 | 90 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 112 | 114 |
| 113 video_frame_provider_ = renderer_factory_->GetVideoFrameProvider( | 115 video_frame_provider_ = renderer_factory_->GetVideoFrameProvider( |
| 114 url, | 116 url, |
| 115 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()), | 117 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()), |
| 116 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr()), | 118 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr()), |
| 117 media_task_runner_, | 119 media_task_runner_, |
| 118 worker_task_runner_, | 120 worker_task_runner_, |
| 119 gpu_factories_); | 121 gpu_factories_); |
| 120 | 122 |
| 121 RenderFrame* const frame = RenderFrame::FromWebFrame(frame_); | 123 RenderFrame* const frame = RenderFrame::FromWebFrame(frame_); |
| 122 audio_renderer_ = renderer_factory_->GetAudioRenderer( | 124 |
| 123 url, frame->GetRoutingID(), initial_audio_output_device_id_, | 125 if (frame) { |
| 124 initial_security_origin_); | 126 audio_renderer_ = renderer_factory_->GetAudioRenderer( |
| 127 url, frame->GetRoutingID(), initial_audio_output_device_id_, |
| 128 initial_security_origin_); |
| 129 } |
| 125 | 130 |
| 126 if (!video_frame_provider_ && !audio_renderer_) { | 131 if (!video_frame_provider_ && !audio_renderer_) { |
| 127 SetNetworkState(WebMediaPlayer::NetworkStateNetworkError); | 132 SetNetworkState(WebMediaPlayer::NetworkStateNetworkError); |
| 128 return; | 133 return; |
| 129 } | 134 } |
| 130 | 135 |
| 131 if (audio_renderer_) { | 136 if (audio_renderer_) { |
| 132 audio_renderer_->SetVolume(DEFAULT_AUDIO_VOLUME); | 137 audio_renderer_->SetVolume(DEFAULT_AUDIO_VOLUME); |
| 133 audio_renderer_->Start(); | 138 audio_renderer_->Start(); |
| 134 } | 139 } |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 } | 477 } |
| 473 | 478 |
| 474 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { | 479 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { |
| 475 return &video_renderer_; | 480 return &video_renderer_; |
| 476 } | 481 } |
| 477 | 482 |
| 478 void WebMediaPlayerMS::ResetCanvasCache() { | 483 void WebMediaPlayerMS::ResetCanvasCache() { |
| 479 DCHECK(thread_checker_.CalledOnValidThread()); | 484 DCHECK(thread_checker_.CalledOnValidThread()); |
| 480 video_renderer_.ResetCache(); | 485 video_renderer_.ResetCache(); |
| 481 } | 486 } |
| 487 |
| 482 } // namespace content | 488 } // namespace content |
| OLD | NEW |