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

Unified Diff: media/audio/audio_output_resampler.cc

Issue 10830268: Allow audio system to handle synchronized low-latency audio I/O (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/audio/audio_output_resampler.h ('k') | media/audio/linux/alsa_output_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/audio_output_resampler.cc
===================================================================
--- media/audio/audio_output_resampler.cc (revision 156123)
+++ media/audio/audio_output_resampler.cc (working copy)
@@ -127,13 +127,19 @@
dispatcher_->Shutdown();
}
-int AudioOutputResampler::OnMoreData(AudioBus* audio_bus,
+int AudioOutputResampler::OnMoreData(AudioBus* dest,
AudioBuffersState buffers_state) {
+ return OnMoreIOData(NULL, dest, buffers_state);
+}
+
+int AudioOutputResampler::OnMoreIOData(AudioBus* source,
+ AudioBus* dest,
+ AudioBuffersState buffers_state) {
base::AutoLock auto_lock(source_lock_);
// While we waited for |source_lock_| the callback might have been cleared.
if (!source_callback_) {
- audio_bus->Zero();
- return audio_bus->frames();
+ dest->Zero();
+ return dest->frames();
}
current_buffers_state_ = buffers_state;
@@ -141,17 +147,17 @@
if (!resampler_.get() && !audio_fifo_.get()) {
// We have no internal buffers, so clear any outstanding audio data.
outstanding_audio_bytes_ = 0;
- SourceCallback_Locked(audio_bus);
- return audio_bus->frames();
+ SourceCallback_Locked(dest);
+ return dest->frames();
}
if (resampler_.get())
- resampler_->Resample(audio_bus, audio_bus->frames());
+ resampler_->Resample(dest, dest->frames());
else
- ProvideInput(audio_bus);
+ ProvideInput(dest);
// Calculate how much data is left in the internal FIFO and resampler buffers.
- outstanding_audio_bytes_ -= audio_bus->frames() * output_bytes_per_frame_;
+ outstanding_audio_bytes_ -= dest->frames() * output_bytes_per_frame_;
// Due to rounding errors while multiplying against |io_ratio_|,
// |outstanding_audio_bytes_| might (rarely) slip below zero.
if (outstanding_audio_bytes_ < 0) {
@@ -162,7 +168,7 @@
// Always return the full number of frames requested, ProvideInput() will pad
// with silence if it wasn't able to acquire enough data.
- return audio_bus->frames();
+ return dest->frames();
}
void AudioOutputResampler::SourceCallback_Locked(AudioBus* audio_bus) {
« no previous file with comments | « media/audio/audio_output_resampler.h ('k') | media/audio/linux/alsa_output_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698