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

Unified Diff: media/audio/audio_output_controller.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/audio_output_controller.h ('k') | media/audio/audio_output_controller_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/audio_output_controller.cc
diff --git a/media/audio/audio_output_controller.cc b/media/audio/audio_output_controller.cc
index 69b77976df9f737f841262a2182d40b52baca5d3..efc86e4cd9a9fcd6f3947faaf29a1153a9cbd4e4 100644
--- a/media/audio/audio_output_controller.cc
+++ b/media/audio/audio_output_controller.cc
@@ -24,7 +24,8 @@ const int AudioOutputController::kPollNumAttempts = 3;
const int AudioOutputController::kPollPauseInMilliseconds = 3;
AudioOutputController::AudioOutputController(EventHandler* handler,
- SyncReader* sync_reader)
+ SyncReader* sync_reader,
+ const AudioParameters& params)
: handler_(handler),
stream_(NULL),
volume_(1.0),
@@ -32,6 +33,7 @@ AudioOutputController::AudioOutputController(EventHandler* handler,
sync_reader_(sync_reader),
message_loop_(NULL),
number_polling_attempts_left_(0),
+ params_(params),
ALLOW_THIS_IN_INITIALIZER_LIST(weak_this_(this)) {
}
@@ -68,12 +70,12 @@ scoped_refptr<AudioOutputController> AudioOutputController::Create(
// Starts the audio controller thread.
scoped_refptr<AudioOutputController> controller(new AudioOutputController(
- event_handler, sync_reader));
+ event_handler, sync_reader, params));
controller->message_loop_ = audio_manager->GetMessageLoop();
controller->message_loop_->PostTask(FROM_HERE, base::Bind(
&AudioOutputController::DoCreate, controller,
- base::Unretained(audio_manager), params));
+ base::Unretained(audio_manager)));
return controller;
}
@@ -108,8 +110,7 @@ void AudioOutputController::SetVolume(double volume) {
&AudioOutputController::DoSetVolume, this, volume));
}
-void AudioOutputController::DoCreate(AudioManager* audio_manager,
- const AudioParameters& params) {
+void AudioOutputController::DoCreate(AudioManager* audio_manager) {
DCHECK(message_loop_->BelongsToCurrentThread());
// Close() can be called before DoCreate() is executed.
@@ -118,7 +119,7 @@ void AudioOutputController::DoCreate(AudioManager* audio_manager,
DCHECK_EQ(kEmpty, state_);
DoStopCloseAndClearStream(NULL);
- stream_ = audio_manager->MakeAudioOutputStreamProxy(params);
+ stream_ = audio_manager->MakeAudioOutputStreamProxy(params_);
if (!stream_) {
// TODO(hclam): Define error types.
handler_->OnError(this, 0);
@@ -282,9 +283,8 @@ void AudioOutputController::DoReportError(int code) {
handler_->OnError(this, code);
}
-uint32 AudioOutputController::OnMoreData(uint8* dest,
- uint32 max_size,
- AudioBuffersState buffers_state) {
+int AudioOutputController::OnMoreData(AudioBus* audio_bus,
+ AudioBuffersState buffers_state) {
TRACE_EVENT0("audio", "AudioOutputController::OnMoreData");
{
@@ -295,9 +295,10 @@ uint32 AudioOutputController::OnMoreData(uint8* dest,
return 0;
}
}
- uint32 size = sync_reader_->Read(dest, max_size);
- sync_reader_->UpdatePendingBytes(buffers_state.total_bytes() + size);
- return size;
+ int frames = sync_reader_->Read(audio_bus);
+ sync_reader_->UpdatePendingBytes(
+ buffers_state.total_bytes() + frames * params_.GetBytesPerFrame());
+ return frames;
}
void AudioOutputController::WaitTillDataReady() {
« no previous file with comments | « media/audio/audio_output_controller.h ('k') | media/audio/audio_output_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698