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

Unified Diff: media/audio/linux/cras_output.cc

Issue 10832285: Switch OnMoreData() to use AudioBus. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Comments. 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/linux/cras_output.h ('k') | media/audio/linux/cras_output_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/linux/cras_output.cc
diff --git a/media/audio/linux/cras_output.cc b/media/audio/linux/cras_output.cc
index 77eb68f0e364adf24d317f79b2b6d32dd97a53bc..e27282c8d8f196191df544e0869ebb4819f45155 100644
--- a/media/audio/linux/cras_output.cc
+++ b/media/audio/linux/cras_output.cc
@@ -72,7 +72,8 @@ CrasOutputStream::CrasOutputStream(const AudioParameters& params,
state_(kCreated),
volume_(1.0),
manager_(manager),
- source_callback_(NULL) {
+ source_callback_(NULL),
+ audio_bus_(AudioBus::Create(params)) {
// We must have a manager.
DCHECK(manager_);
@@ -278,9 +279,14 @@ uint32 CrasOutputStream::Render(size_t frames,
uint32 frames_latency = latency_usec * frame_rate_ / 1000000;
uint32 bytes_latency = frames_latency * bytes_per_frame_;
- uint32 rendered = source_callback_->OnMoreData(
- buffer, frames * bytes_per_frame_, AudioBuffersState(0, bytes_latency));
- return rendered / bytes_per_frame_;
+ DCHECK_EQ(frames, static_cast<size_t>(audio_bus_->frames()));
+ int frames_filled = source_callback_->OnMoreData(
+ audio_bus_.get(), AudioBuffersState(0, bytes_latency));
+ // Note: If this ever changes to output raw float the data must be clipped and
+ // sanitized since it may come from an untrusted source such as NaCl.
+ audio_bus_->ToInterleaved(
+ frames_filled, bytes_per_frame_ / (frames * num_channels_), buffer);
+ return frames_filled;
}
void CrasOutputStream::NotifyStreamError(int err) {
« no previous file with comments | « media/audio/linux/cras_output.h ('k') | media/audio/linux/cras_output_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698