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 "media/blink/webmediaplayer_impl.h" | 5 #include "media/blink/webmediaplayer_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <limits> | 9 #include <limits> |
10 #include <string> | 10 #include <string> |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 supports_save_(true), | 188 supports_save_(true), |
189 chunk_demuxer_(NULL), | 189 chunk_demuxer_(NULL), |
190 url_index_(url_index), | 190 url_index_(url_index), |
191 // Threaded compositing isn't enabled universally yet. | 191 // Threaded compositing isn't enabled universally yet. |
192 compositor_task_runner_( | 192 compositor_task_runner_( |
193 params.compositor_task_runner() | 193 params.compositor_task_runner() |
194 ? params.compositor_task_runner() | 194 ? params.compositor_task_runner() |
195 : base::MessageLoop::current()->task_runner()), | 195 : base::MessageLoop::current()->task_runner()), |
196 compositor_(new VideoFrameCompositor( | 196 compositor_(new VideoFrameCompositor( |
197 compositor_task_runner_, | 197 compositor_task_runner_, |
198 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNaturalSizeChanged), | |
199 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))), | 198 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))), |
200 is_cdm_attached_(false), | 199 is_cdm_attached_(false), |
201 #if defined(OS_ANDROID) // WMPI_CAST | 200 #if defined(OS_ANDROID) // WMPI_CAST |
202 cast_impl_(this, client_, params.context_3d_cb()), | 201 cast_impl_(this, client_, params.context_3d_cb()), |
203 #endif | 202 #endif |
204 volume_(1.0), | 203 volume_(1.0), |
205 volume_multiplier_(1.0), | 204 volume_multiplier_(1.0), |
206 renderer_factory_(std::move(renderer_factory)), | 205 renderer_factory_(std::move(renderer_factory)), |
207 surface_manager_(params.surface_manager()), | 206 surface_manager_(params.surface_manager()), |
208 suppress_destruction_errors_(false), | 207 suppress_destruction_errors_(false), |
(...skipping 1060 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1269 // ... and we're ready to go! | 1268 // ... and we're ready to go! |
1270 seeking_ = true; | 1269 seeking_ = true; |
1271 | 1270 |
1272 // TODO(sandersd): On Android, defer Start() if the tab is not visible. | 1271 // TODO(sandersd): On Android, defer Start() if the tab is not visible. |
1273 bool is_streaming = (data_source_ && data_source_->IsStreaming()); | 1272 bool is_streaming = (data_source_ && data_source_->IsStreaming()); |
1274 pipeline_controller_.Start( | 1273 pipeline_controller_.Start( |
1275 demuxer_.get(), is_streaming, is_static, | 1274 demuxer_.get(), is_streaming, is_static, |
1276 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded), | 1275 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded), |
1277 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineMetadata), | 1276 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineMetadata), |
1278 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingStateChanged), | 1277 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingStateChanged), |
| 1278 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNaturalSizeChanged), |
1279 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDurationChanged), | 1279 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDurationChanged), |
1280 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnAddTextTrack), | 1280 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnAddTextTrack), |
1281 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnWaitingForDecryptionKey)); | 1281 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnWaitingForDecryptionKey)); |
1282 } | 1282 } |
1283 | 1283 |
1284 void WebMediaPlayerImpl::SetNetworkState(WebMediaPlayer::NetworkState state) { | 1284 void WebMediaPlayerImpl::SetNetworkState(WebMediaPlayer::NetworkState state) { |
1285 DVLOG(1) << __FUNCTION__ << "(" << state << ")"; | 1285 DVLOG(1) << __FUNCTION__ << "(" << state << ")"; |
1286 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 1286 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
1287 network_state_ = state; | 1287 network_state_ = state; |
1288 // Always notify to ensure client has the latest value. | 1288 // Always notify to ensure client has the latest value. |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1322 | 1322 |
1323 void WebMediaPlayerImpl::OnDurationChanged() { | 1323 void WebMediaPlayerImpl::OnDurationChanged() { |
1324 // TODO(sandersd): We should call delegate_->DidPlay() with the new duration, | 1324 // TODO(sandersd): We should call delegate_->DidPlay() with the new duration, |
1325 // especially if it changed from <5s to >5s. | 1325 // especially if it changed from <5s to >5s. |
1326 if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing) | 1326 if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing) |
1327 return; | 1327 return; |
1328 | 1328 |
1329 client_->durationChanged(); | 1329 client_->durationChanged(); |
1330 } | 1330 } |
1331 | 1331 |
1332 void WebMediaPlayerImpl::OnNaturalSizeChanged(gfx::Size size) { | 1332 void WebMediaPlayerImpl::OnNaturalSizeChanged(const gfx::Size& size) { |
1333 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 1333 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
1334 DCHECK_NE(ready_state_, WebMediaPlayer::ReadyStateHaveNothing); | 1334 DCHECK_NE(ready_state_, WebMediaPlayer::ReadyStateHaveNothing); |
1335 TRACE_EVENT0("media", "WebMediaPlayerImpl::OnNaturalSizeChanged"); | 1335 TRACE_EVENT0("media", "WebMediaPlayerImpl::OnNaturalSizeChanged"); |
1336 | 1336 |
1337 media_log_->AddEvent( | 1337 media_log_->AddEvent( |
1338 media_log_->CreateVideoSizeSetEvent(size.width(), size.height())); | 1338 media_log_->CreateVideoSizeSetEvent(size.width(), size.height())); |
1339 | 1339 |
1340 if (fullscreen_ && surface_manager_ && | 1340 if (fullscreen_ && surface_manager_ && |
1341 pipeline_metadata_.natural_size != size) { | 1341 pipeline_metadata_.natural_size != size) { |
1342 surface_manager_->NaturalSizeChanged(size); | 1342 surface_manager_->NaturalSizeChanged(size); |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1594 << ", Video: " << stats.video_memory_usage << ", DataSource: " | 1594 << ", Video: " << stats.video_memory_usage << ", DataSource: " |
1595 << (data_source_ ? data_source_->GetMemoryUsage() : 0) | 1595 << (data_source_ ? data_source_->GetMemoryUsage() : 0) |
1596 << ", Demuxer: " << demuxer_memory_usage; | 1596 << ", Demuxer: " << demuxer_memory_usage; |
1597 | 1597 |
1598 const int64_t delta = current_memory_usage - last_reported_memory_usage_; | 1598 const int64_t delta = current_memory_usage - last_reported_memory_usage_; |
1599 last_reported_memory_usage_ = current_memory_usage; | 1599 last_reported_memory_usage_ = current_memory_usage; |
1600 adjust_allocated_memory_cb_.Run(delta); | 1600 adjust_allocated_memory_cb_.Run(delta); |
1601 } | 1601 } |
1602 | 1602 |
1603 } // namespace media | 1603 } // namespace media |
OLD | NEW |