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

Unified Diff: media/audio/win/audio_low_latency_output_win.cc

Issue 10832285: Switch OnMoreData() to use AudioBus. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review ready. Created 8 years, 4 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
Index: media/audio/win/audio_low_latency_output_win.cc
diff --git a/media/audio/win/audio_low_latency_output_win.cc b/media/audio/win/audio_low_latency_output_win.cc
index 78c823f9acbe3d3f17bf84733a0118184751a312..86f231d0e429476dd93837253181cd2fa9c22d63 100644
--- a/media/audio/win/audio_low_latency_output_win.cc
+++ b/media/audio/win/audio_low_latency_output_win.cc
@@ -338,7 +338,8 @@ WASAPIAudioOutputStream::WASAPIAudioOutputStream(AudioManagerWin* manager,
share_mode_(GetShareMode()),
client_channel_count_(params.channels()),
num_written_frames_(0),
- source_(NULL) {
+ source_(NULL),
+ audio_bus_(AudioBus::Create(params)) {
CHECK(com_init_.succeeded());
DCHECK(manager_);
@@ -821,9 +822,12 @@ void WASAPIAudioOutputStream::Run() {
if (channel_factor() == 1) {
// Case I: no up-mixing.
- num_filled_bytes = source_->OnMoreData(
- audio_data, packet_size_bytes_,
- AudioBuffersState(0, audio_delay_bytes));
+ int frames_filled = source_->OnMoreData(
+ audio_bus_.get(), AudioBuffersState(0, audio_delay_bytes));
+ num_filled_bytes = frames_filled * frame_size_;
+ DCHECK_LE(num_filled_bytes, packet_size_bytes_);
+ audio_bus_->ToInterleaved(
henrika (OOO until Aug 14) 2012/08/23 14:42:53 Have you verified that WASAPIAudioOutputStreamTest
DaleCurtis 2012/08/24 23:53:12 It seems to work as is without modification. Is th
+ frames_filled, bytes_per_sample, audio_data);
} else {
// Case II: up-mixing.
const int audio_source_size_bytes =
@@ -831,9 +835,14 @@ void WASAPIAudioOutputStream::Run() {
scoped_array<uint8> buffer;
buffer.reset(new uint8[audio_source_size_bytes]);
- num_filled_bytes = source_->OnMoreData(
- buffer.get(), audio_source_size_bytes,
- AudioBuffersState(0, audio_delay_bytes));
+ int frames_filled = source_->OnMoreData(
+ audio_bus_.get(), AudioBuffersState(0, audio_delay_bytes));
+ num_filled_bytes =
+ frames_filled * bytes_per_sample * audio_bus_->channels();
+ DCHECK_LE(num_filled_bytes,
+ static_cast<size_t>(audio_source_size_bytes));
+ audio_bus_->ToInterleaved(
+ frames_filled, bytes_per_sample, buffer.get());
// Do channel up-mixing on 16-bit PCM samples.
num_filled_bytes = ChannelUpMix(buffer.get(),

Powered by Google App Engine
This is Rietveld 408576698