Chromium Code Reviews| Index: media/audio/audio_input_controller.cc |
| diff --git a/media/audio/audio_input_controller.cc b/media/audio/audio_input_controller.cc |
| index 99bb420e89553a84e6292a2fa74d404b5eed91eb..319e242f7be71b24a77ab6569194406bc2a449c8 100644 |
| --- a/media/audio/audio_input_controller.cc |
| +++ b/media/audio/audio_input_controller.cc |
| @@ -101,6 +101,33 @@ scoped_refptr<AudioInputController> AudioInputController::CreateLowLatency( |
| return controller; |
| } |
| +// static |
| +scoped_refptr<AudioInputController> AudioInputController::CreateForStream( |
| + AudioManager* audio_manager, |
| + EventHandler* event_handler, |
| + AudioInputStream* stream, |
| + SyncWriter* sync_writer) { |
| + DCHECK(audio_manager); |
| + DCHECK(sync_writer); |
| + DCHECK(stream); |
| + |
| + // Create the AudioInputController object and ensure that it runs on |
| + // the audio-manager thread. |
| + scoped_refptr<AudioInputController> controller(new AudioInputController( |
| + event_handler, sync_writer)); |
| + controller->message_loop_ = audio_manager->GetMessageLoop(); |
| + |
| + controller->stream_ = stream; |
|
DaleCurtis
2013/01/15 22:02:18
Seems like it might be clearer to make a DoCreate(
miu
2013/01/16 03:22:18
Done. I renamed DoFinishCreate() to DoCreateForSt
|
| + |
| + if (!controller->message_loop_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&AudioInputController::DoFinishCreate, controller))) { |
| + controller = NULL; |
| + } |
| + |
| + return controller; |
| +} |
| + |
| void AudioInputController::Record() { |
| message_loop_->PostTask(FROM_HERE, base::Bind( |
| &AudioInputController::DoRecord, this)); |
| @@ -131,6 +158,12 @@ void AudioInputController::DoCreate(AudioManager* audio_manager, |
| stream_ = audio_manager->MakeAudioInputStream(params, device_id); |
| + DoFinishCreate(); |
| +} |
| + |
| +void AudioInputController::DoFinishCreate() { |
| + DCHECK(message_loop_->BelongsToCurrentThread()); |
| + |
| if (!stream_) { |
| // TODO(satish): Define error types. |
| handler_->OnError(this, 0); |