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

Side by Side Diff: media/base/audio_converter.cc

Issue 602193003: Cleanup some audio classes with C++11 shine! (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 (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 // AudioConverter implementation. Uses MultiChannelSincResampler for resampling 5 // AudioConverter implementation. Uses MultiChannelSincResampler for resampling
6 // audio, ChannelMixer for channel mixing, and AudioPullFifo for buffering. 6 // audio, ChannelMixer for channel mixing, and AudioPullFifo for buffering.
7 // 7 //
8 // Delay estimates are provided to InputCallbacks based on the frame delay 8 // Delay estimates are provided to InputCallbacks based on the frame delay
9 // information reported via the resampler and FIFO units. 9 // information reported via the resampler and FIFO units.
10 10
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 if (audio_fifo_) { 190 if (audio_fifo_) {
191 buffer_delay += base::TimeDelta::FromMicroseconds( 191 buffer_delay += base::TimeDelta::FromMicroseconds(
192 fifo_frame_delay * input_frame_duration_.InMicroseconds()); 192 fifo_frame_delay * input_frame_duration_.InMicroseconds());
193 } 193 }
194 194
195 // If we only have a single input, avoid an extra copy. 195 // If we only have a single input, avoid an extra copy.
196 AudioBus* const provide_input_dest = 196 AudioBus* const provide_input_dest =
197 transform_inputs_.size() == 1 ? temp_dest : mixer_input_audio_bus_.get(); 197 transform_inputs_.size() == 1 ? temp_dest : mixer_input_audio_bus_.get();
198 198
199 // Have each mixer render its data into an output buffer then mix the result. 199 // Have each mixer render its data into an output buffer then mix the result.
200 for (InputCallbackSet::iterator it = transform_inputs_.begin(); 200 for (auto* input : transform_inputs_) {
201 it != transform_inputs_.end(); ++it) {
202 InputCallback* input = *it;
203
204 const float volume = input->ProvideInput(provide_input_dest, buffer_delay); 201 const float volume = input->ProvideInput(provide_input_dest, buffer_delay);
205 202
206 // Optimize the most common single input, full volume case. 203 // Optimize the most common single input, full volume case.
207 if (it == transform_inputs_.begin()) { 204 if (input == transform_inputs_.front()) {
208 if (volume == 1.0f) { 205 if (volume == 1.0f) {
209 if (temp_dest != provide_input_dest) 206 if (temp_dest != provide_input_dest)
210 provide_input_dest->CopyTo(temp_dest); 207 provide_input_dest->CopyTo(temp_dest);
211 } else if (volume > 0) { 208 } else if (volume > 0) {
212 for (int i = 0; i < provide_input_dest->channels(); ++i) { 209 for (int i = 0; i < provide_input_dest->channels(); ++i) {
213 vector_math::FMUL( 210 vector_math::FMUL(
214 provide_input_dest->channel(i), volume, 211 provide_input_dest->channel(i), volume,
215 provide_input_dest->frames(), temp_dest->channel(i)); 212 provide_input_dest->frames(), temp_dest->channel(i));
216 } 213 }
217 } else { 214 } else {
(...skipping 27 matching lines...) Expand all
245 else 242 else
246 SourceCallback(0, dest); 243 SourceCallback(0, dest);
247 } 244 }
248 245
249 void AudioConverter::CreateUnmixedAudioIfNecessary(int frames) { 246 void AudioConverter::CreateUnmixedAudioIfNecessary(int frames) {
250 if (!unmixed_audio_ || unmixed_audio_->frames() != frames) 247 if (!unmixed_audio_ || unmixed_audio_->frames() != frames)
251 unmixed_audio_ = AudioBus::Create(input_channel_count_, frames); 248 unmixed_audio_ = AudioBus::Create(input_channel_count_, frames);
252 } 249 }
253 250
254 } // namespace media 251 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698