#include "base/bind.h"
#include "base/message_loop/message_loop_proxy.h"
+#include "base/strings/stringprintf.h"
#include "content/common/media/audio_messages.h"
+#include "content/renderer/media/webrtc_logging.h"
#include "ipc/ipc_logging.h"
-
-namespace content {
+#include "ipc/ipc_sender.h"
namespace {
+
const int kStreamIDNotSet = -1;
+
+void LogMessage(int stream_id, const std::string& msg) {
+ std::ostringstream oss;
+ oss << "[stream_id=" << stream_id << "] AIMF::" << msg;
+ content::WebRtcLogMessage(oss.str());
+ DVLOG(1) << oss.str();
}
+}
+
+namespace content {
+
class AudioInputMessageFilter::AudioInputIPCImpl
: public NON_EXPORTED_BASE(media::AudioInputIPC) {
public:
AudioInputMessageFilter::AudioInputMessageFilter(
const scoped_refptr<base::MessageLoopProxy>& io_message_loop)
- : channel_(NULL),
+ : sender_(NULL),
io_message_loop_(io_message_loop) {
DCHECK(!g_filter);
g_filter = this;
void AudioInputMessageFilter::Send(IPC::Message* message) {
DCHECK(io_message_loop_->BelongsToCurrentThread());
- if (!channel_) {
+ if (!sender_) {
delete message;
} else {
- channel_->Send(message);
+ sender_->Send(message);
}
}
return handled;
}
-void AudioInputMessageFilter::OnFilterAdded(IPC::Channel* channel) {
+void AudioInputMessageFilter::OnFilterAdded(IPC::Sender* sender) {
DCHECK(io_message_loop_->BelongsToCurrentThread());
- // Captures the channel for IPC.
- channel_ = channel;
+ // Captures the sender for IPC.
+ sender_ = sender;
}
void AudioInputMessageFilter::OnFilterRemoved() {
void AudioInputMessageFilter::OnChannelClosing() {
DCHECK(io_message_loop_->BelongsToCurrentThread());
- channel_ = NULL;
+ sender_ = NULL;
DLOG_IF(WARNING, !delegates_.IsEmpty())
<< "Not all audio devices have been closed.";
uint32 length,
uint32 total_segments) {
DCHECK(io_message_loop_->BelongsToCurrentThread());
+ LogMessage(stream_id, "OnStreamCreated");
#if !defined(OS_WIN)
base::SyncSocket::Handle socket_handle = socket_descriptor.fd;
DCHECK(delegate);
stream_id_ = filter_->delegates_.Add(delegate);
+ // TODO(henrika): remove all LogMessage calls when we have sorted out the
+ // existing "no input audio" issues.
+ LogMessage(stream_id_, "CreateStream");
AudioInputHostMsg_CreateStream_Config config;
config.params = params;
void AudioInputMessageFilter::AudioInputIPCImpl::RecordStream() {
DCHECK_NE(stream_id_, kStreamIDNotSet);
+ LogMessage(stream_id_, "RecordStream");
filter_->Send(new AudioInputHostMsg_RecordStream(stream_id_));
}
void AudioInputMessageFilter::AudioInputIPCImpl::CloseStream() {
DCHECK(filter_->io_message_loop_->BelongsToCurrentThread());
DCHECK_NE(stream_id_, kStreamIDNotSet);
+ LogMessage(stream_id_, "CloseStream");
filter_->Send(new AudioInputHostMsg_CloseStream(stream_id_));
filter_->delegates_.Remove(stream_id_);
stream_id_ = kStreamIDNotSet;