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 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 supports_save_(true), | 189 supports_save_(true), |
190 chunk_demuxer_(NULL), | 190 chunk_demuxer_(NULL), |
191 url_index_(url_index), | 191 url_index_(url_index), |
192 // Threaded compositing isn't enabled universally yet. | 192 // Threaded compositing isn't enabled universally yet. |
193 compositor_task_runner_( | 193 compositor_task_runner_( |
194 params.compositor_task_runner() | 194 params.compositor_task_runner() |
195 ? params.compositor_task_runner() | 195 ? params.compositor_task_runner() |
196 : base::MessageLoop::current()->task_runner()), | 196 : base::MessageLoop::current()->task_runner()), |
197 compositor_(new VideoFrameCompositor( | 197 compositor_(new VideoFrameCompositor( |
198 compositor_task_runner_, | 198 compositor_task_runner_, |
199 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNaturalSizeChanged), | |
200 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))), | 199 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))), |
201 is_cdm_attached_(false), | 200 is_cdm_attached_(false), |
202 #if defined(OS_ANDROID) // WMPI_CAST | 201 #if defined(OS_ANDROID) // WMPI_CAST |
203 cast_impl_(this, client_, params.context_3d_cb()), | 202 cast_impl_(this, client_, params.context_3d_cb()), |
204 #endif | 203 #endif |
205 volume_(1.0), | 204 volume_(1.0), |
206 volume_multiplier_(1.0), | 205 volume_multiplier_(1.0), |
207 renderer_factory_(std::move(renderer_factory)), | 206 renderer_factory_(std::move(renderer_factory)), |
208 surface_manager_(params.surface_manager()), | 207 surface_manager_(params.surface_manager()), |
209 suppress_destruction_errors_(false) { | 208 suppress_destruction_errors_(false) { |
(...skipping 1072 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1282 // ... and we're ready to go! | 1281 // ... and we're ready to go! |
1283 seeking_ = true; | 1282 seeking_ = true; |
1284 | 1283 |
1285 // TODO(sandersd): On Android, defer Start() if the tab is not visible. | 1284 // TODO(sandersd): On Android, defer Start() if the tab is not visible. |
1286 bool is_streaming = (data_source_ && data_source_->IsStreaming()); | 1285 bool is_streaming = (data_source_ && data_source_->IsStreaming()); |
1287 pipeline_controller_.Start( | 1286 pipeline_controller_.Start( |
1288 demuxer_.get(), is_streaming, is_static, | 1287 demuxer_.get(), is_streaming, is_static, |
1289 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded), | 1288 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded), |
1290 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineMetadata), | 1289 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineMetadata), |
1291 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingStateChanged), | 1290 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingStateChanged), |
| 1291 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNaturalSizeChanged), |
1292 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDurationChanged), | 1292 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDurationChanged), |
1293 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnAddTextTrack), | 1293 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnAddTextTrack), |
1294 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnWaitingForDecryptionKey)); | 1294 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnWaitingForDecryptionKey)); |
1295 } | 1295 } |
1296 | 1296 |
1297 void WebMediaPlayerImpl::SetNetworkState(WebMediaPlayer::NetworkState state) { | 1297 void WebMediaPlayerImpl::SetNetworkState(WebMediaPlayer::NetworkState state) { |
1298 DVLOG(1) << __FUNCTION__ << "(" << state << ")"; | 1298 DVLOG(1) << __FUNCTION__ << "(" << state << ")"; |
1299 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 1299 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
1300 network_state_ = state; | 1300 network_state_ = state; |
1301 // Always notify to ensure client has the latest value. | 1301 // Always notify to ensure client has the latest value. |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1335 | 1335 |
1336 void WebMediaPlayerImpl::OnDurationChanged() { | 1336 void WebMediaPlayerImpl::OnDurationChanged() { |
1337 // TODO(sandersd): We should call delegate_->DidPlay() with the new duration, | 1337 // TODO(sandersd): We should call delegate_->DidPlay() with the new duration, |
1338 // especially if it changed from <5s to >5s. | 1338 // especially if it changed from <5s to >5s. |
1339 if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing) | 1339 if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing) |
1340 return; | 1340 return; |
1341 | 1341 |
1342 client_->durationChanged(); | 1342 client_->durationChanged(); |
1343 } | 1343 } |
1344 | 1344 |
1345 void WebMediaPlayerImpl::OnNaturalSizeChanged(gfx::Size size) { | 1345 void WebMediaPlayerImpl::OnNaturalSizeChanged(const gfx::Size& size) { |
1346 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 1346 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
1347 DCHECK_NE(ready_state_, WebMediaPlayer::ReadyStateHaveNothing); | 1347 DCHECK_NE(ready_state_, WebMediaPlayer::ReadyStateHaveNothing); |
1348 TRACE_EVENT0("media", "WebMediaPlayerImpl::OnNaturalSizeChanged"); | 1348 TRACE_EVENT0("media", "WebMediaPlayerImpl::OnNaturalSizeChanged"); |
1349 | 1349 |
1350 media_log_->AddEvent( | 1350 media_log_->AddEvent( |
1351 media_log_->CreateVideoSizeSetEvent(size.width(), size.height())); | 1351 media_log_->CreateVideoSizeSetEvent(size.width(), size.height())); |
1352 | 1352 |
1353 if (fullscreen_ && surface_manager_ && | 1353 if (fullscreen_ && surface_manager_ && |
1354 pipeline_metadata_.natural_size != size) { | 1354 pipeline_metadata_.natural_size != size) { |
1355 surface_manager_->NaturalSizeChanged(size); | 1355 surface_manager_->NaturalSizeChanged(size); |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1587 << ", Video: " << stats.video_memory_usage << ", DataSource: " | 1587 << ", Video: " << stats.video_memory_usage << ", DataSource: " |
1588 << (data_source_ ? data_source_->GetMemoryUsage() : 0) | 1588 << (data_source_ ? data_source_->GetMemoryUsage() : 0) |
1589 << ", Demuxer: " << demuxer_memory_usage; | 1589 << ", Demuxer: " << demuxer_memory_usage; |
1590 | 1590 |
1591 const int64_t delta = current_memory_usage - last_reported_memory_usage_; | 1591 const int64_t delta = current_memory_usage - last_reported_memory_usage_; |
1592 last_reported_memory_usage_ = current_memory_usage; | 1592 last_reported_memory_usage_ = current_memory_usage; |
1593 adjust_allocated_memory_cb_.Run(delta); | 1593 adjust_allocated_memory_cb_.Run(delta); |
1594 } | 1594 } |
1595 | 1595 |
1596 } // namespace media | 1596 } // namespace media |
OLD | NEW |