Chromium Code Reviews| 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 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 341 #endif | 341 #endif |
| 342 | 342 |
| 343 paused_ = false; | 343 paused_ = false; |
| 344 pipeline_.SetPlaybackRate(playback_rate_); | 344 pipeline_.SetPlaybackRate(playback_rate_); |
| 345 | 345 |
| 346 if (data_source_) | 346 if (data_source_) |
| 347 data_source_->MediaIsPlaying(); | 347 data_source_->MediaIsPlaying(); |
| 348 | 348 |
| 349 media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::PLAY)); | 349 media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::PLAY)); |
| 350 | 350 |
| 351 if (playback_rate_ > 0) | 351 if (playback_rate_ > 0) { |
| 352 NotifyPlaybackStarted(); | 352 // Resume the player if playback was initiated in the foreground. Resume() |
| 353 // will do nothing if the pipeline is not suspended state, but will clear | |
| 354 // some internal pending state, so it should always be called. | |
| 355 const bool was_suspended = pipeline_controller_.IsSuspended(); | |
| 356 if (delegate_ && !delegate_->IsHidden()) | |
| 357 pipeline_controller_.Resume(); | |
| 358 | |
| 359 // If we were in the suspended state, OnPipelineResumed() will take care of | |
| 360 // NotifyPlaybackStarted() when it finishes. | |
| 361 if (!was_suspended) | |
| 362 NotifyPlaybackStarted(); | |
|
sandersd (OOO until July 31)
2016/02/27 00:22:20
If you swap the order, then no test is needed beca
DaleCurtis
2016/02/27 00:55:23
Done.
| |
| 363 } | |
| 353 } | 364 } |
| 354 | 365 |
| 355 void WebMediaPlayerImpl::pause() { | 366 void WebMediaPlayerImpl::pause() { |
| 356 DVLOG(1) << __FUNCTION__; | 367 DVLOG(1) << __FUNCTION__; |
| 357 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 368 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 358 | 369 |
| 359 const bool was_already_paused = paused_ || playback_rate_ == 0; | 370 const bool was_already_paused = paused_ || playback_rate_ == 0; |
| 360 paused_ = true; | 371 paused_ = true; |
| 361 | 372 |
| 362 #if defined(OS_ANDROID) // WMPI_CAST | 373 #if defined(OS_ANDROID) // WMPI_CAST |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 428 AsWeakPtr(), BUFFERING_HAVE_ENOUGH)); | 439 AsWeakPtr(), BUFFERING_HAVE_ENOUGH)); |
| 429 } | 440 } |
| 430 return; | 441 return; |
| 431 } | 442 } |
| 432 | 443 |
| 433 seeking_ = true; | 444 seeking_ = true; |
| 434 seek_time_ = time; | 445 seek_time_ = time; |
| 435 if (paused_) | 446 if (paused_) |
| 436 paused_time_ = time; | 447 paused_time_ = time; |
| 437 pipeline_controller_.Seek(time, time_updated); | 448 pipeline_controller_.Seek(time, time_updated); |
| 449 | |
| 450 // Resume the pipeline if the seek is initiated in the foreground so that | |
| 451 // the correct frame is displayed. If the pipeline is not suspended, Resume() | |
| 452 // will do nothing but clear some pending state -- thus always call it. | |
| 453 if (delegate_ && !delegate_->IsHidden()) | |
| 454 pipeline_controller_.Resume(); | |
| 438 } | 455 } |
| 439 | 456 |
| 440 void WebMediaPlayerImpl::setRate(double rate) { | 457 void WebMediaPlayerImpl::setRate(double rate) { |
| 441 DVLOG(1) << __FUNCTION__ << "(" << rate << ")"; | 458 DVLOG(1) << __FUNCTION__ << "(" << rate << ")"; |
| 442 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 459 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 443 | 460 |
| 444 // TODO(kylep): Remove when support for negatives is added. Also, modify the | 461 // TODO(kylep): Remove when support for negatives is added. Also, modify the |
| 445 // following checks so rewind uses reasonable values also. | 462 // following checks so rewind uses reasonable values also. |
| 446 if (rate < 0.0) | 463 if (rate < 0.0) |
| 447 return; | 464 return; |
| (...skipping 872 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1320 base::Bind(&GetCurrentFrameAndSignal, | 1337 base::Bind(&GetCurrentFrameAndSignal, |
| 1321 base::Unretained(compositor_), | 1338 base::Unretained(compositor_), |
| 1322 &video_frame, | 1339 &video_frame, |
| 1323 &event)); | 1340 &event)); |
| 1324 event.Wait(); | 1341 event.Wait(); |
| 1325 return video_frame; | 1342 return video_frame; |
| 1326 } | 1343 } |
| 1327 | 1344 |
| 1328 void WebMediaPlayerImpl::NotifyPlaybackStarted() { | 1345 void WebMediaPlayerImpl::NotifyPlaybackStarted() { |
| 1329 #if defined(OS_ANDROID) // WMPI_CAST | 1346 #if defined(OS_ANDROID) // WMPI_CAST |
| 1330 // We do not tell our delegates about remote playback, becuase that would | 1347 // We do not tell our delegates about remote playback, because that would |
| 1331 // keep the device awake, which is not what we want. | 1348 // keep the device awake, which is not what we want. |
| 1332 if (isRemote()) | 1349 if (isRemote()) |
| 1333 return; | 1350 return; |
| 1334 #endif | 1351 #endif |
| 1335 | 1352 |
| 1336 // NotifyPlaybackStarted() may be called by interactions while suspended, | 1353 // NotifyPlaybackStarted() may be called by interactions while suspended, |
| 1337 // (play/pause in particular). Those actions won't have any effect until the | 1354 // (play/pause in particular). Those actions won't have any effect until the |
| 1338 // pipeline is resumed. | 1355 // pipeline is resumed. |
| 1339 // TODO(dalecurtis): Should these be dropped at the call sites instead? | 1356 // TODO(dalecurtis): Should these be dropped at the call sites instead? |
| 1340 // Alternatively, rename this method to include Maybe or Changed, and handle | 1357 // Alternatively, rename this method to include Maybe or Changed, and handle |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1402 << ", Video: " << stats.video_memory_usage << ", DataSource: " | 1419 << ", Video: " << stats.video_memory_usage << ", DataSource: " |
| 1403 << (data_source_ ? data_source_->GetMemoryUsage() : 0) | 1420 << (data_source_ ? data_source_->GetMemoryUsage() : 0) |
| 1404 << ", Demuxer: " << demuxer_memory_usage; | 1421 << ", Demuxer: " << demuxer_memory_usage; |
| 1405 | 1422 |
| 1406 const int64_t delta = current_memory_usage - last_reported_memory_usage_; | 1423 const int64_t delta = current_memory_usage - last_reported_memory_usage_; |
| 1407 last_reported_memory_usage_ = current_memory_usage; | 1424 last_reported_memory_usage_ = current_memory_usage; |
| 1408 adjust_allocated_memory_cb_.Run(delta); | 1425 adjust_allocated_memory_cb_.Run(delta); |
| 1409 } | 1426 } |
| 1410 | 1427 |
| 1411 } // namespace media | 1428 } // namespace media |
| OLD | NEW |