OLD | NEW |
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "media/base/audio_shifter.h" | 5 #include "media/base/audio_shifter.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 private: | 70 private: |
71 base::TimeDelta clock_accuracy_; | 71 base::TimeDelta clock_accuracy_; |
72 std::deque<std::pair<base::TimeDelta, base::TimeDelta> > inaccuracies_; | 72 std::deque<std::pair<base::TimeDelta, base::TimeDelta> > inaccuracies_; |
73 base::TimeDelta inaccuracy_sum_; | 73 base::TimeDelta inaccuracy_sum_; |
74 base::TimeDelta inaccuracy_delta_; | 74 base::TimeDelta inaccuracy_delta_; |
75 base::TimeTicks previous_; | 75 base::TimeTicks previous_; |
76 }; | 76 }; |
77 | 77 |
78 AudioShifter::AudioQueueEntry::AudioQueueEntry( | 78 AudioShifter::AudioQueueEntry::AudioQueueEntry( |
79 base::TimeTicks target_playout_time_, | 79 base::TimeTicks target_playout_time_, |
80 scoped_ptr<AudioBus> audio_) : | 80 std::unique_ptr<AudioBus> audio_) |
81 target_playout_time(target_playout_time_), | 81 : target_playout_time(target_playout_time_), audio(audio_.release()) {} |
82 audio(audio_.release()) { | |
83 } | |
84 | 82 |
85 AudioShifter::AudioQueueEntry::AudioQueueEntry(const AudioQueueEntry& other) = | 83 AudioShifter::AudioQueueEntry::AudioQueueEntry(const AudioQueueEntry& other) = |
86 default; | 84 default; |
87 | 85 |
88 AudioShifter::AudioQueueEntry::~AudioQueueEntry() {} | 86 AudioShifter::AudioQueueEntry::~AudioQueueEntry() {} |
89 | 87 |
90 AudioShifter::AudioShifter(base::TimeDelta max_buffer_size, | 88 AudioShifter::AudioShifter(base::TimeDelta max_buffer_size, |
91 base::TimeDelta clock_accuracy, | 89 base::TimeDelta clock_accuracy, |
92 base::TimeDelta adjustment_time, | 90 base::TimeDelta adjustment_time, |
93 int rate, | 91 int rate, |
(...skipping 10 matching lines...) Expand all Loading... |
104 previous_requested_samples_(0), | 102 previous_requested_samples_(0), |
105 resampler_( | 103 resampler_( |
106 channels, | 104 channels, |
107 1.0, | 105 1.0, |
108 96, | 106 96, |
109 base::Bind(&AudioShifter::ResamplerCallback, base::Unretained(this))), | 107 base::Bind(&AudioShifter::ResamplerCallback, base::Unretained(this))), |
110 current_ratio_(1.0) {} | 108 current_ratio_(1.0) {} |
111 | 109 |
112 AudioShifter::~AudioShifter() {} | 110 AudioShifter::~AudioShifter() {} |
113 | 111 |
114 void AudioShifter::Push(scoped_ptr<AudioBus> input, | 112 void AudioShifter::Push(std::unique_ptr<AudioBus> input, |
115 base::TimeTicks playout_time) { | 113 base::TimeTicks playout_time) { |
116 if (!queue_.empty()) { | 114 if (!queue_.empty()) { |
117 playout_time = input_clock_smoother_->Smooth( | 115 playout_time = input_clock_smoother_->Smooth( |
118 playout_time, | 116 playout_time, |
119 base::TimeDelta::FromSeconds(queue_.back().audio->frames()) / rate_); | 117 base::TimeDelta::FromSeconds(queue_.back().audio->frames()) / rate_); |
120 } | 118 } |
121 queue_.push_back(AudioQueueEntry(playout_time, std::move(input))); | 119 queue_.push_back(AudioQueueEntry(playout_time, std::move(input))); |
122 while (!queue_.empty() && | 120 while (!queue_.empty() && |
123 queue_.back().target_playout_time - | 121 queue_.back().target_playout_time - |
124 queue_.front().target_playout_time > max_buffer_size_) { | 122 queue_.front().target_playout_time > max_buffer_size_) { |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 } | 274 } |
277 | 275 |
278 void AudioShifter::Zero(AudioBus* output) { | 276 void AudioShifter::Zero(AudioBus* output) { |
279 output->Zero(); | 277 output->Zero(); |
280 running_ = false; | 278 running_ = false; |
281 previous_playout_time_ = base::TimeTicks(); | 279 previous_playout_time_ = base::TimeTicks(); |
282 bias_ = base::TimeDelta(); | 280 bias_ = base::TimeDelta(); |
283 } | 281 } |
284 | 282 |
285 } // namespace media | 283 } // namespace media |
OLD | NEW |