| 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..82b9f41605a0dbac3a19c62758ef98e2b6b16007 100644
|
| --- a/media/audio/audio_input_controller.cc
|
| +++ b/media/audio/audio_input_controller.cc
|
| @@ -101,6 +101,32 @@ 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();
|
| +
|
| + if (!controller->message_loop_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&AudioInputController::DoCreateForStream, controller,
|
| + stream))) {
|
| + controller = NULL;
|
| + }
|
| +
|
| + return controller;
|
| +}
|
| +
|
| void AudioInputController::Record() {
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| &AudioInputController::DoRecord, this));
|
| @@ -128,8 +154,15 @@ void AudioInputController::DoCreate(AudioManager* audio_manager,
|
| const AudioParameters& params,
|
| const std::string& device_id) {
|
| DCHECK(message_loop_->BelongsToCurrentThread());
|
| + DoCreateForStream(audio_manager->MakeAudioInputStream(params, device_id));
|
| +}
|
| +
|
| +void AudioInputController::DoCreateForStream(
|
| + AudioInputStream* stream_to_control) {
|
| + DCHECK(message_loop_->BelongsToCurrentThread());
|
|
|
| - stream_ = audio_manager->MakeAudioInputStream(params, device_id);
|
| + DCHECK(!stream_);
|
| + stream_ = stream_to_control;
|
|
|
| if (!stream_) {
|
| // TODO(satish): Define error types.
|
|
|