Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(588)

Side by Side Diff: chromecast/media/cma/pipeline/media_pipeline_impl.cc

Issue 2158923004: Convert media constants to constexpr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chromecast/media/cma/pipeline/media_pipeline_impl.h" 5 #include "chromecast/media/cma/pipeline/media_pipeline_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 base::Closure done_cb; 80 base::Closure done_cb;
81 }; 81 };
82 82
83 MediaPipelineImpl::MediaPipelineImpl() 83 MediaPipelineImpl::MediaPipelineImpl()
84 : cdm_context_(nullptr), 84 : cdm_context_(nullptr),
85 backend_state_(BACKEND_STATE_UNINITIALIZED), 85 backend_state_(BACKEND_STATE_UNINITIALIZED),
86 playback_rate_(1.0f), 86 playback_rate_(1.0f),
87 audio_decoder_(nullptr), 87 audio_decoder_(nullptr),
88 video_decoder_(nullptr), 88 video_decoder_(nullptr),
89 pending_time_update_task_(false), 89 pending_time_update_task_(false),
90 last_media_time_(::media::kNoTimestamp()), 90 last_media_time_(::media::kNoTimestamp),
91 statistics_rolling_counter_(0), 91 statistics_rolling_counter_(0),
92 audio_bytes_for_bitrate_estimation_(0), 92 audio_bytes_for_bitrate_estimation_(0),
93 video_bytes_for_bitrate_estimation_(0), 93 video_bytes_for_bitrate_estimation_(0),
94 playback_stalled_(false), 94 playback_stalled_(false),
95 playback_stalled_notification_sent_(false), 95 playback_stalled_notification_sent_(false),
96 weak_factory_(this) { 96 weak_factory_(this) {
97 CMALOG(kLogControl) << __FUNCTION__; 97 CMALOG(kLogControl) << __FUNCTION__;
98 weak_this_ = weak_factory_.GetWeakPtr(); 98 weak_this_ = weak_factory_.GetWeakPtr();
99 thread_checker_.DetachFromThread(); 99 thread_checker_.DetachFromThread();
100 } 100 }
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 } else if (!is_buffering && (backend_state_ == BACKEND_STATE_PAUSED)) { 425 } else if (!is_buffering && (backend_state_ == BACKEND_STATE_PAUSED)) {
426 // Once we finish buffering, we need to honour the desired playback rate 426 // Once we finish buffering, we need to honour the desired playback rate
427 // (rather than just resuming). This way, if playback was paused while 427 // (rather than just resuming). This way, if playback was paused while
428 // buffering, it will remain paused rather than incorrectly resuming. 428 // buffering, it will remain paused rather than incorrectly resuming.
429 SetPlaybackRate(playback_rate_); 429 SetPlaybackRate(playback_rate_);
430 } 430 }
431 } 431 }
432 432
433 void MediaPipelineImpl::CheckForPlaybackStall(base::TimeDelta media_time, 433 void MediaPipelineImpl::CheckForPlaybackStall(base::TimeDelta media_time,
434 base::TimeTicks current_stc) { 434 base::TimeTicks current_stc) {
435 DCHECK(media_time != ::media::kNoTimestamp()); 435 DCHECK(media_time != ::media::kNoTimestamp);
436 436
437 // A playback stall is defined as a scenario where the underlying media 437 // A playback stall is defined as a scenario where the underlying media
438 // pipeline has unexpectedly stopped making forward progress. The pipeline is 438 // pipeline has unexpectedly stopped making forward progress. The pipeline is
439 // NOT stalled if: 439 // NOT stalled if:
440 // 440 //
441 // 1. Media time is progressing 441 // 1. Media time is progressing
442 // 2. The backend is paused 442 // 2. The backend is paused
443 // 3. We are currently buffering (this is captured in a separate event) 443 // 3. We are currently buffering (this is captured in a separate event)
444 if (media_time != last_media_time_ || 444 if (media_time != last_media_time_ ||
445 backend_state_ != BACKEND_STATE_PLAYING || 445 backend_state_ != BACKEND_STATE_PLAYING ||
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 } 513 }
514 last_sample_time_ = current_time; 514 last_sample_time_ = current_time;
515 } 515 }
516 } 516 }
517 517
518 statistics_rolling_counter_ = 518 statistics_rolling_counter_ =
519 (statistics_rolling_counter_ + 1) % kStatisticsUpdatePeriod; 519 (statistics_rolling_counter_ + 1) % kStatisticsUpdatePeriod;
520 520
521 base::TimeDelta media_time = base::TimeDelta::FromMicroseconds( 521 base::TimeDelta media_time = base::TimeDelta::FromMicroseconds(
522 media_pipeline_backend_->GetCurrentPts()); 522 media_pipeline_backend_->GetCurrentPts());
523 if (media_time == ::media::kNoTimestamp()) { 523 if (media_time == ::media::kNoTimestamp) {
524 pending_time_update_task_ = true; 524 pending_time_update_task_ = true;
525 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 525 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
526 FROM_HERE, base::Bind(&MediaPipelineImpl::UpdateMediaTime, weak_this_), 526 FROM_HERE, base::Bind(&MediaPipelineImpl::UpdateMediaTime, weak_this_),
527 kTimeUpdateInterval); 527 kTimeUpdateInterval);
528 return; 528 return;
529 } 529 }
530 base::TimeTicks stc = base::TimeTicks::Now(); 530 base::TimeTicks stc = base::TimeTicks::Now();
531 531
532 CheckForPlaybackStall(media_time, stc); 532 CheckForPlaybackStall(media_time, stc);
533 533
534 base::TimeDelta max_rendering_time = media_time; 534 base::TimeDelta max_rendering_time = media_time;
535 if (buffering_controller_) { 535 if (buffering_controller_) {
536 buffering_controller_->SetMediaTime(media_time); 536 buffering_controller_->SetMediaTime(media_time);
537 537
538 // Receiving the same time twice in a row means playback isn't moving, 538 // Receiving the same time twice in a row means playback isn't moving,
539 // so don't interpolate ahead. 539 // so don't interpolate ahead.
540 if (media_time != last_media_time_) { 540 if (media_time != last_media_time_) {
541 max_rendering_time = buffering_controller_->GetMaxRenderingTime(); 541 max_rendering_time = buffering_controller_->GetMaxRenderingTime();
542 if (max_rendering_time == ::media::kNoTimestamp()) 542 if (max_rendering_time == ::media::kNoTimestamp)
543 max_rendering_time = media_time; 543 max_rendering_time = media_time;
544 544
545 // Cap interpolation time to avoid interpolating too far ahead. 545 // Cap interpolation time to avoid interpolating too far ahead.
546 max_rendering_time = 546 max_rendering_time =
547 std::min(max_rendering_time, media_time + 2 * kTimeUpdateInterval); 547 std::min(max_rendering_time, media_time + 2 * kTimeUpdateInterval);
548 } 548 }
549 } 549 }
550 550
551 last_media_time_ = media_time; 551 last_media_time_ = media_time;
552 if (!client_.time_update_cb.is_null()) 552 if (!client_.time_update_cb.is_null())
(...skipping 18 matching lines...) Expand all
571 571
572 void MediaPipelineImpl::ResetBitrateState() { 572 void MediaPipelineImpl::ResetBitrateState() {
573 elapsed_time_delta_ = base::TimeDelta::FromSeconds(0); 573 elapsed_time_delta_ = base::TimeDelta::FromSeconds(0);
574 audio_bytes_for_bitrate_estimation_ = 0; 574 audio_bytes_for_bitrate_estimation_ = 0;
575 video_bytes_for_bitrate_estimation_ = 0; 575 video_bytes_for_bitrate_estimation_ = 0;
576 last_sample_time_ = base::TimeTicks::Now(); 576 last_sample_time_ = base::TimeTicks::Now();
577 } 577 }
578 578
579 } // namespace media 579 } // namespace media
580 } // namespace chromecast 580 } // namespace chromecast
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698