Index: media/audio/audio_input_device.cc |
diff --git a/media/audio/audio_input_device.cc b/media/audio/audio_input_device.cc |
index c92ab2b1307d4420d3bbbc5a9af12d8f222e0a95..c5077e9ab4018e10dd400e66537660d1dcdba5b9 100644 |
--- a/media/audio/audio_input_device.cc |
+++ b/media/audio/audio_input_device.cc |
@@ -49,29 +49,21 @@ AudioInputDevice::AudioInputDevice( |
const scoped_refptr<base::MessageLoopProxy>& io_loop) |
: ScopedLoopObserver(io_loop), |
callback_(NULL), |
- event_handler_(NULL), |
ipc_(ipc), |
stream_id_(0), |
session_id_(0), |
- pending_device_ready_(false), |
agc_is_enabled_(false) { |
CHECK(ipc_); |
} |
void AudioInputDevice::Initialize(const AudioParameters& params, |
CaptureCallback* callback, |
- CaptureEventHandler* event_handler) { |
+ int session_id) { |
DCHECK(!callback_); |
- DCHECK(!event_handler_); |
+ DCHECK_EQ(0, session_id_); |
audio_parameters_ = params; |
callback_ = callback; |
- event_handler_ = event_handler; |
-} |
- |
-void AudioInputDevice::SetDevice(int session_id) { |
- DVLOG(1) << "SetDevice (session_id=" << session_id << ")"; |
- message_loop()->PostTask(FROM_HERE, |
- base::Bind(&AudioInputDevice::SetSessionIdOnIOThread, this, session_id)); |
+ session_id_ = session_id; |
} |
void AudioInputDevice::Start() { |
@@ -164,11 +156,7 @@ void AudioInputDevice::OnStateChanged( |
audio_thread_.Stop(MessageLoop::current()); |
audio_callback_.reset(); |
- if (event_handler_) |
- event_handler_->OnDeviceStopped(); |
- |
stream_id_ = 0; |
- pending_device_ready_ = false; |
break; |
case AudioInputIPCDelegate::kRecording: |
NOTIMPLEMENTED(); |
@@ -190,30 +178,6 @@ void AudioInputDevice::OnStateChanged( |
} |
} |
-void AudioInputDevice::OnDeviceReady(const std::string& device_id) { |
- DCHECK(message_loop()->BelongsToCurrentThread()); |
- DVLOG(1) << "OnDeviceReady (device_id=" << device_id << ")"; |
- |
- // Takes care of the case when Stop() is called before OnDeviceReady(). |
- if (!pending_device_ready_) |
- return; |
- |
- // If AudioInputDeviceManager returns an empty string, it means no device |
- // is ready for start. |
- if (device_id.empty()) { |
- ipc_->RemoveDelegate(stream_id_); |
- stream_id_ = 0; |
- } else { |
- ipc_->CreateStream(stream_id_, audio_parameters_, device_id, |
- agc_is_enabled_, kRequestedSharedMemoryCount); |
- } |
- |
- pending_device_ready_ = false; |
- // Notify the client that the device has been started. |
- if (event_handler_) |
- event_handler_->OnDeviceStarted(device_id); |
-} |
- |
void AudioInputDevice::OnIPCClosed() { |
ipc_ = NULL; |
} |
@@ -231,23 +195,14 @@ void AudioInputDevice::InitializeOnIOThread() { |
if (stream_id_) |
return; |
- stream_id_ = ipc_->AddDelegate(this); |
- // If |session_id_| is not specified, it will directly create the stream; |
- // otherwise it will send a AudioInputHostMsg_StartDevice msg to the browser |
- // and create the stream when getting a OnDeviceReady() callback. |
- if (!session_id_) { |
- ipc_->CreateStream(stream_id_, audio_parameters_, |
- AudioManagerBase::kDefaultDeviceId, agc_is_enabled_, |
- kRequestedSharedMemoryCount); |
- } else { |
- ipc_->StartDevice(stream_id_, session_id_); |
- pending_device_ready_ = true; |
+ if (session_id_ <= 0) { |
+ DLOG(WARNING) << "Invalid session id for the input stream " << session_id_; |
+ return; |
} |
-} |
-void AudioInputDevice::SetSessionIdOnIOThread(int session_id) { |
- DCHECK(message_loop()->BelongsToCurrentThread()); |
- session_id_ = session_id; |
+ stream_id_ = ipc_->AddDelegate(this); |
+ ipc_->CreateStream(stream_id_, session_id_, audio_parameters_, |
+ agc_is_enabled_, kRequestedSharedMemoryCount); |
} |
void AudioInputDevice::StartOnIOThread() { |
@@ -267,8 +222,6 @@ void AudioInputDevice::ShutDownOnIOThread() { |
} |
stream_id_ = 0; |
- session_id_ = 0; |
- pending_device_ready_ = false; |
agc_is_enabled_ = false; |
} |
@@ -282,6 +235,7 @@ void AudioInputDevice::ShutDownOnIOThread() { |
base::ThreadRestrictions::ScopedAllowIO allow_io; |
audio_thread_.Stop(NULL); |
audio_callback_.reset(); |
+ session_id_ = 0; |
} |
void AudioInputDevice::SetVolumeOnIOThread(double volume) { |