| 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;
|
| +
|
| + 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);
|
|
|