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

Side by Side Diff: media/filters/audio_renderer_impl.cc

Issue 16823003: Replace erroneous use of base::Time with base::TimeTicks throughout media code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: s/PresubmitPromptWarning/PresubmitPromptOrNotify/ Created 7 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « media/filters/audio_renderer_impl.h ('k') | media/filters/audio_renderer_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/filters/audio_renderer_impl.h" 5 #include "media/filters/audio_renderer_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 const scoped_refptr<base::MessageLoopProxy>& message_loop, 42 const scoped_refptr<base::MessageLoopProxy>& message_loop,
43 media::AudioRendererSink* sink, 43 media::AudioRendererSink* sink,
44 ScopedVector<AudioDecoder> decoders, 44 ScopedVector<AudioDecoder> decoders,
45 const SetDecryptorReadyCB& set_decryptor_ready_cb, 45 const SetDecryptorReadyCB& set_decryptor_ready_cb,
46 bool increase_preroll_on_underflow) 46 bool increase_preroll_on_underflow)
47 : message_loop_(message_loop), 47 : message_loop_(message_loop),
48 weak_factory_(this), 48 weak_factory_(this),
49 sink_(sink), 49 sink_(sink),
50 decoder_selector_(new AudioDecoderSelector( 50 decoder_selector_(new AudioDecoderSelector(
51 message_loop, decoders.Pass(), set_decryptor_ready_cb)), 51 message_loop, decoders.Pass(), set_decryptor_ready_cb)),
52 now_cb_(base::Bind(&base::Time::Now)), 52 now_cb_(base::Bind(&base::TimeTicks::Now)),
53 state_(kUninitialized), 53 state_(kUninitialized),
54 sink_playing_(false), 54 sink_playing_(false),
55 pending_read_(false), 55 pending_read_(false),
56 received_end_of_stream_(false), 56 received_end_of_stream_(false),
57 rendered_end_of_stream_(false), 57 rendered_end_of_stream_(false),
58 audio_time_buffered_(kNoTimestamp()), 58 audio_time_buffered_(kNoTimestamp()),
59 current_time_(kNoTimestamp()), 59 current_time_(kNoTimestamp()),
60 underflow_disabled_(false), 60 underflow_disabled_(false),
61 increase_preroll_on_underflow_(increase_preroll_on_underflow), 61 increase_preroll_on_underflow_(increase_preroll_on_underflow),
62 preroll_aborted_(false), 62 preroll_aborted_(false),
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 // more audio data or at least use a delayed callback. 517 // more audio data or at least use a delayed callback.
518 // 518 //
519 // We use the following conditions to determine underflow: 519 // We use the following conditions to determine underflow:
520 // 1) Algorithm can not fill the audio callback buffer 520 // 1) Algorithm can not fill the audio callback buffer
521 // 2) We have NOT received an end of stream buffer 521 // 2) We have NOT received an end of stream buffer
522 // 3) We are in the kPlaying state 522 // 3) We are in the kPlaying state
523 // 523 //
524 // Otherwise the buffer has data we can send to the device. 524 // Otherwise the buffer has data we can send to the device.
525 frames_written = algorithm_->FillBuffer(dest, requested_frames); 525 frames_written = algorithm_->FillBuffer(dest, requested_frames);
526 if (frames_written == 0) { 526 if (frames_written == 0) {
527 base::Time now = now_cb_.Run(); 527 const base::TimeTicks now = now_cb_.Run();
528 528
529 if (received_end_of_stream_ && !rendered_end_of_stream_ && 529 if (received_end_of_stream_ && !rendered_end_of_stream_ &&
530 now >= earliest_end_time_) { 530 now >= earliest_end_time_) {
531 rendered_end_of_stream_ = true; 531 rendered_end_of_stream_ = true;
532 ended_cb_.Run(); 532 ended_cb_.Run();
533 } else if (!received_end_of_stream_ && state_ == kPlaying && 533 } else if (!received_end_of_stream_ && state_ == kPlaying &&
534 !underflow_disabled_) { 534 !underflow_disabled_) {
535 state_ = kUnderflow; 535 state_ = kUnderflow;
536 underflow_cb = underflow_cb_; 536 underflow_cb = underflow_cb_;
537 } else { 537 } else {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 time_cb_.Run(current_time, max_time); 591 time_cb_.Run(current_time, max_time);
592 } 592 }
593 593
594 if (!underflow_cb.is_null()) 594 if (!underflow_cb.is_null())
595 underflow_cb.Run(); 595 underflow_cb.Run();
596 596
597 return frames_written; 597 return frames_written;
598 } 598 }
599 599
600 void AudioRendererImpl::UpdateEarliestEndTime_Locked( 600 void AudioRendererImpl::UpdateEarliestEndTime_Locked(
601 int frames_filled, base::TimeDelta playback_delay, base::Time time_now) { 601 int frames_filled, const base::TimeDelta& playback_delay,
602 const base::TimeTicks& time_now) {
602 if (frames_filled <= 0) 603 if (frames_filled <= 0)
603 return; 604 return;
604 605
605 base::TimeDelta predicted_play_time = base::TimeDelta::FromMicroseconds( 606 base::TimeDelta predicted_play_time = base::TimeDelta::FromMicroseconds(
606 static_cast<float>(frames_filled) * base::Time::kMicrosecondsPerSecond / 607 static_cast<float>(frames_filled) * base::Time::kMicrosecondsPerSecond /
607 audio_parameters_.sample_rate()); 608 audio_parameters_.sample_rate());
608 609
609 lock_.AssertAcquired(); 610 lock_.AssertAcquired();
610 earliest_end_time_ = std::max( 611 earliest_end_time_ = std::max(
611 earliest_end_time_, time_now + playback_delay + predicted_play_time); 612 earliest_end_time_, time_now + playback_delay + predicted_play_time);
(...skipping 29 matching lines...) Expand all
641 case kUnderflow: 642 case kUnderflow:
642 case kRebuffering: 643 case kRebuffering:
643 case kStopped: 644 case kStopped:
644 if (status != PIPELINE_OK) 645 if (status != PIPELINE_OK)
645 error_cb_.Run(status); 646 error_cb_.Run(status);
646 return; 647 return;
647 } 648 }
648 } 649 }
649 650
650 } // namespace media 651 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/audio_renderer_impl.h ('k') | media/filters/audio_renderer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698