Index: content/renderer/media/audio_message_filter.cc |
diff --git a/content/renderer/media/audio_message_filter.cc b/content/renderer/media/audio_message_filter.cc |
index 81689925d5e4a56626063413ff246a6132d420e6..ef3bd804362a822c84ed4a9980cc0bb4511f258f 100644 |
--- a/content/renderer/media/audio_message_filter.cc |
+++ b/content/renderer/media/audio_message_filter.cc |
@@ -21,19 +21,44 @@ AudioMessageFilter* AudioMessageFilter::Get() { |
AudioMessageFilter::AudioMessageFilter() |
: channel_(NULL) { |
- VLOG(1) << "AudioMessageFilter::AudioMessageFilter()"; |
+ DVLOG(1) << "AudioMessageFilter::AudioMessageFilter()"; |
DCHECK(!filter_); |
filter_ = this; |
} |
-int32 AudioMessageFilter::AddDelegate(Delegate* delegate) { |
+int AudioMessageFilter::AddDelegate(media::AudioOutputIPCDelegate* delegate) { |
return delegates_.Add(delegate); |
} |
-void AudioMessageFilter::RemoveDelegate(int32 id) { |
+void AudioMessageFilter::RemoveDelegate(int id) { |
delegates_.Remove(id); |
} |
+void AudioMessageFilter::CreateStream(int stream_id, |
+ const media::AudioParameters& params) { |
+ Send(new AudioHostMsg_CreateStream(stream_id, params)); |
+} |
+ |
+void AudioMessageFilter::PlayStream(int stream_id) { |
+ Send(new AudioHostMsg_PlayStream(stream_id)); |
+} |
+ |
+void AudioMessageFilter::PauseStream(int stream_id) { |
+ Send(new AudioHostMsg_PauseStream(stream_id)); |
+} |
+ |
+void AudioMessageFilter::FlushStream(int stream_id) { |
+ Send(new AudioHostMsg_FlushStream(stream_id)); |
+} |
+ |
+void AudioMessageFilter::CloseStream(int stream_id) { |
+ Send(new AudioHostMsg_CloseStream(stream_id)); |
+} |
+ |
+void AudioMessageFilter::SetVolume(int stream_id, double volume) { |
+ Send(new AudioHostMsg_SetVolume(stream_id, volume)); |
+} |
+ |
bool AudioMessageFilter::Send(IPC::Message* message) { |
if (!channel_) { |
delete message; |
@@ -64,8 +89,7 @@ bool AudioMessageFilter::OnMessageReceived(const IPC::Message& message) { |
} |
void AudioMessageFilter::OnFilterAdded(IPC::Channel* channel) { |
- VLOG(1) << "AudioMessageFilter::OnFilterAdded()"; |
- // Captures the channel for IPC. |
+ DVLOG(1) << "AudioMessageFilter::OnFilterAdded()"; |
channel_ = channel; |
} |
@@ -75,10 +99,18 @@ void AudioMessageFilter::OnFilterRemoved() { |
void AudioMessageFilter::OnChannelClosing() { |
channel_ = NULL; |
+ LOG_IF(WARNING, !delegates_.IsEmpty()) |
+ << "Not all audio devices have been closed."; |
+ |
+ IDMap<media::AudioOutputIPCDelegate>::iterator it(&delegates_); |
+ while (!it.IsAtEnd()) { |
+ it.GetCurrentValue()->OnIPCClosed(); |
+ it.Advance(); |
+ } |
} |
AudioMessageFilter::~AudioMessageFilter() { |
- VLOG(1) << "AudioMessageFilter::~AudioMessageFilter()"; |
+ DVLOG(1) << "AudioMessageFilter::~AudioMessageFilter()"; |
DCHECK(filter_); |
filter_ = NULL; |
} |
@@ -95,10 +127,10 @@ void AudioMessageFilter::OnStreamCreated( |
#if !defined(OS_WIN) |
base::SyncSocket::Handle socket_handle = socket_descriptor.fd; |
#endif |
- Delegate* delegate = delegates_.Lookup(stream_id); |
+ media::AudioOutputIPCDelegate* delegate = delegates_.Lookup(stream_id); |
if (!delegate) { |
DLOG(WARNING) << "Got audio stream event for a non-existent or removed" |
- " audio renderer. (stream_id=" << stream_id << ")."; |
+ " audio renderer. (stream_id=" << stream_id << ")."; |
base::SharedMemory::CloseHandle(handle); |
base::SyncSocket socket(socket_handle); |
return; |
@@ -107,11 +139,10 @@ void AudioMessageFilter::OnStreamCreated( |
} |
void AudioMessageFilter::OnStreamStateChanged( |
- int stream_id, AudioStreamState state) { |
- Delegate* delegate = delegates_.Lookup(stream_id); |
+ int stream_id, media::AudioOutputIPCDelegate::State state) { |
+ media::AudioOutputIPCDelegate* delegate = delegates_.Lookup(stream_id); |
if (!delegate) { |
- DLOG(WARNING) << "Got audio stream event for a non-existent or removed" |
- " audio renderer."; |
+ DLOG(WARNING) << "No delegate found for state change. " << state; |
return; |
} |
delegate->OnStateChanged(state); |