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