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

Side by Side Diff: media/audio/fake_audio_input_stream.cc

Issue 799983002: Adding WebRTC Auto Gain Control Test (linux) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed win compile Created 6 years 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
« no previous file with comments | « media/audio/fake_audio_input_stream.h ('k') | no next file » | 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/audio/fake_audio_input_stream.h" 5 #include "media/audio/fake_audio_input_stream.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/files/file.h" 9 #include "base/files/file.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 const TimeTicks now = TimeTicks::Now(); 178 const TimeTicks now = TimeTicks::Now();
179 base::TimeDelta next_callback_time = 179 base::TimeDelta next_callback_time =
180 last_callback_time_ + callback_interval_ * 2 - now; 180 last_callback_time_ + callback_interval_ * 2 - now;
181 181
182 // If we are falling behind, try to catch up as much as we can in the next 182 // If we are falling behind, try to catch up as much as we can in the next
183 // callback. 183 // callback.
184 if (next_callback_time < base::TimeDelta()) 184 if (next_callback_time < base::TimeDelta())
185 next_callback_time = base::TimeDelta(); 185 next_callback_time = base::TimeDelta();
186 186
187 if (PlayingFromFile()) { 187 if (PlayingFromFile()) {
188 PlayFileLooping(); 188 PlayFile();
189 } else { 189 } else {
190 PlayBeep(); 190 PlayBeep();
191 } 191 }
192 192
193 last_callback_time_ = now; 193 last_callback_time_ = now;
194 194
195 task_runner_->PostDelayedTask( 195 task_runner_->PostDelayedTask(
196 FROM_HERE, 196 FROM_HERE,
197 base::Bind(&FakeAudioInputStream::DoCallback, weak_factory_.GetWeakPtr()), 197 base::Bind(&FakeAudioInputStream::DoCallback, weak_factory_.GetWeakPtr()),
198 next_callback_time); 198 next_callback_time);
199 } 199 }
200 200
201 void FakeAudioInputStream::OpenInFileMode(const base::FilePath& wav_filename) { 201 void FakeAudioInputStream::OpenInFileMode(const base::FilePath& wav_filename) {
202 CHECK(!wav_filename.empty()) 202 CHECK(!wav_filename.empty())
203 << "You must pass the file to use as argument to --" 203 << "You must pass the file to use as argument to --"
204 << switches::kUseFileForFakeAudioCapture << "."; 204 << switches::kUseFileForFakeAudioCapture << ".";
205 205
206 // Read the file, and put its data in a scoped_ptr so it gets deleted later. 206 // Read the file, and put its data in a scoped_ptr so it gets deleted later.
207 size_t file_length = 0; 207 size_t file_length = 0;
208 wav_file_data_ = ReadWavFile(wav_filename, &file_length); 208 wav_file_data_ = ReadWavFile(wav_filename, &file_length);
209 wav_audio_handler_ = CreateWavAudioHandler( 209 wav_audio_handler_ = CreateWavAudioHandler(
210 wav_filename, wav_file_data_.get(), file_length, params_); 210 wav_filename, wav_file_data_.get(), file_length, params_);
211 } 211 }
212 212
213 bool FakeAudioInputStream::PlayingFromFile() { 213 bool FakeAudioInputStream::PlayingFromFile() {
214 return wav_audio_handler_.get() != nullptr; 214 return wav_audio_handler_.get() != nullptr;
215 } 215 }
216 216
217 void FakeAudioInputStream::PlayFileLooping() { 217 void FakeAudioInputStream::PlayFile() {
218 // Stop playing if we've played out the whole file.
219 if (wav_audio_handler_->AtEnd(wav_file_read_pos_))
220 return;
221
218 // Unfilled frames will be zeroed by CopyTo. 222 // Unfilled frames will be zeroed by CopyTo.
219 size_t bytes_written; 223 size_t bytes_written;
220 wav_audio_handler_->CopyTo(audio_bus_.get(), wav_file_read_pos_, 224 wav_audio_handler_->CopyTo(audio_bus_.get(), wav_file_read_pos_,
221 &bytes_written); 225 &bytes_written);
222 wav_file_read_pos_ += bytes_written; 226 wav_file_read_pos_ += bytes_written;
223 if (wav_audio_handler_->AtEnd(wav_file_read_pos_))
224 wav_file_read_pos_ = 0;
225 callback_->OnData(this, audio_bus_.get(), buffer_size_, 1.0); 227 callback_->OnData(this, audio_bus_.get(), buffer_size_, 1.0);
226 } 228 }
227 229
228 void FakeAudioInputStream::PlayBeep() { 230 void FakeAudioInputStream::PlayBeep() {
229 // Accumulate the time from the last beep. 231 // Accumulate the time from the last beep.
230 interval_from_last_beep_ += TimeTicks::Now() - last_callback_time_; 232 interval_from_last_beep_ += TimeTicks::Now() - last_callback_time_;
231 233
232 memset(buffer_.get(), 0, buffer_size_); 234 memset(buffer_.get(), 0, buffer_size_);
233 bool should_beep = false; 235 bool should_beep = false;
234 { 236 {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 return false; 315 return false;
314 } 316 }
315 317
316 // static 318 // static
317 void FakeAudioInputStream::BeepOnce() { 319 void FakeAudioInputStream::BeepOnce() {
318 BeepContext* beep_context = g_beep_context.Pointer(); 320 BeepContext* beep_context = g_beep_context.Pointer();
319 beep_context->SetBeepOnce(true); 321 beep_context->SetBeepOnce(true);
320 } 322 }
321 323
322 } // namespace media 324 } // namespace media
OLDNEW
« no previous file with comments | « media/audio/fake_audio_input_stream.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698