Index: content/renderer/media/audio_input_message_filter.cc |
diff --git a/content/renderer/media/audio_input_message_filter.cc b/content/renderer/media/audio_input_message_filter.cc |
index 30e4b01eec3b38a673296aa2ff9aa837e2a21f85..b523ac6d9ce398f0a99f1dd0fd8c9ee5d1804705 100644 |
--- a/content/renderer/media/audio_input_message_filter.cc |
+++ b/content/renderer/media/audio_input_message_filter.cc |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -11,13 +11,24 @@ |
#include "content/common/media/audio_messages.h" |
#include "ipc/ipc_logging.h" |
+AudioInputMessageFilter* AudioInputMessageFilter::filter_ = NULL; |
+ |
AudioInputMessageFilter::AudioInputMessageFilter() |
: channel_(NULL) { |
- VLOG(1) << "AudioInputMessageFilter()"; |
+ DVLOG(1) << "AudioInputMessageFilter()"; |
+ DCHECK(!filter_); |
+ filter_ = this; |
} |
AudioInputMessageFilter::~AudioInputMessageFilter() { |
- VLOG(1) << "AudioInputMessageFilter::~AudioInputMessageFilter()"; |
+ DVLOG(1) << "AudioInputMessageFilter::~AudioInputMessageFilter()"; |
+ DCHECK_EQ(filter_, this); |
+ filter_ = NULL; |
+} |
+ |
+// static. |
+AudioInputMessageFilter* AudioInputMessageFilter::Get() { |
+ return filter_; |
} |
bool AudioInputMessageFilter::Send(IPC::Message* message) { |
@@ -55,7 +66,7 @@ bool AudioInputMessageFilter::OnMessageReceived(const IPC::Message& message) { |
} |
void AudioInputMessageFilter::OnFilterAdded(IPC::Channel* channel) { |
- VLOG(1) << "AudioInputMessageFilter::OnFilterAdded()"; |
+ DVLOG(1) << "AudioInputMessageFilter::OnFilterAdded()"; |
// Captures the channel for IPC. |
channel_ = channel; |
} |
@@ -66,6 +77,14 @@ void AudioInputMessageFilter::OnFilterRemoved() { |
void AudioInputMessageFilter::OnChannelClosing() { |
channel_ = NULL; |
+ LOG_IF(WARNING, !delegates_.IsEmpty()) |
+ << "Not all audio devices have been closed."; |
+ |
+ IDMap<media::AudioInputIPCDelegate>::iterator it(&delegates_); |
+ while (!it.IsAtEnd()) { |
+ it.GetCurrentValue()->OnIPCClosed(); |
+ it.Advance(); |
+ } |
} |
void AudioInputMessageFilter::OnStreamCreated( |
@@ -80,7 +99,7 @@ void AudioInputMessageFilter::OnStreamCreated( |
#if !defined(OS_WIN) |
base::SyncSocket::Handle socket_handle = socket_descriptor.fd; |
#endif |
- Delegate* delegate = delegates_.Lookup(stream_id); |
+ media::AudioInputIPCDelegate* delegate = delegates_.Lookup(stream_id); |
if (!delegate) { |
DLOG(WARNING) << "Got audio stream event for a non-existent or removed" |
" audio capturer (stream_id=" << stream_id << ")."; |
@@ -93,7 +112,7 @@ void AudioInputMessageFilter::OnStreamCreated( |
} |
void AudioInputMessageFilter::OnStreamVolume(int stream_id, double volume) { |
- Delegate* delegate = delegates_.Lookup(stream_id); |
+ media::AudioInputIPCDelegate* delegate = delegates_.Lookup(stream_id); |
if (!delegate) { |
DLOG(WARNING) << "Got audio stream event for a non-existent or removed" |
" audio capturer."; |
@@ -103,8 +122,8 @@ void AudioInputMessageFilter::OnStreamVolume(int stream_id, double volume) { |
} |
void AudioInputMessageFilter::OnStreamStateChanged( |
- int stream_id, AudioStreamState state) { |
- Delegate* delegate = delegates_.Lookup(stream_id); |
+ int stream_id, media::AudioInputIPCDelegate::State state) { |
+ media::AudioInputIPCDelegate* delegate = delegates_.Lookup(stream_id); |
if (!delegate) { |
DLOG(WARNING) << "Got audio stream event for a non-existent or removed" |
" audio renderer."; |
@@ -115,20 +134,43 @@ void AudioInputMessageFilter::OnStreamStateChanged( |
void AudioInputMessageFilter::OnDeviceStarted(int stream_id, |
const std::string& device_id) { |
- Delegate* delegate = delegates_.Lookup(stream_id); |
+ media::AudioInputIPCDelegate* delegate = delegates_.Lookup(stream_id); |
if (!delegate) { |
- DLOG(WARNING) << "Got audio stream event for a non-existent or removed" |
- " audio renderer."; |
+ NOTREACHED(); |
return; |
} |
delegate->OnDeviceReady(device_id); |
} |
-int32 AudioInputMessageFilter::AddDelegate(Delegate* delegate) { |
+int AudioInputMessageFilter::AddDelegate( |
+ media::AudioInputIPCDelegate* delegate) { |
return delegates_.Add(delegate); |
} |
-void AudioInputMessageFilter::RemoveDelegate(int32 id) { |
- VLOG(1) << "AudioInputMessageFilter::RemoveDelegate(id=" << id << ")"; |
+void AudioInputMessageFilter::RemoveDelegate(int id) { |
+ DVLOG(1) << "AudioInputMessageFilter::RemoveDelegate(id=" << id << ")"; |
delegates_.Remove(id); |
} |
+ |
+void AudioInputMessageFilter::CreateStream(int stream_id, |
+ const media::AudioParameters& params, const std::string& device_id, |
+ bool automatic_gain_control) { |
+ Send(new AudioInputHostMsg_CreateStream( |
+ stream_id, params, device_id, automatic_gain_control)); |
+} |
+ |
+void AudioInputMessageFilter::StartDevice(int stream_id, int session_id) { |
+ Send(new AudioInputHostMsg_StartDevice(stream_id, session_id)); |
+} |
+ |
+void AudioInputMessageFilter::RecordStream(int stream_id) { |
+ Send(new AudioInputHostMsg_RecordStream(stream_id)); |
+} |
+ |
+void AudioInputMessageFilter::CloseStream(int stream_id) { |
+ Send(new AudioInputHostMsg_CloseStream(stream_id)); |
+} |
+ |
+void AudioInputMessageFilter::SetVolume(int stream_id, double volume) { |
+ Send(new AudioInputHostMsg_SetVolume(stream_id, volume)); |
+} |