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 |
deleted file mode 100644 |
index 9e7322d128e65f0d5f9507a544c8cf01943e7d16..0000000000000000000000000000000000000000 |
--- a/content/renderer/media/audio_message_filter.cc |
+++ /dev/null |
@@ -1,237 +0,0 @@ |
-// 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. |
- |
-#include "content/renderer/media/audio_message_filter.h" |
- |
-#include <string> |
- |
-#include "base/bind.h" |
-#include "base/single_thread_task_runner.h" |
-#include "base/strings/stringprintf.h" |
-#include "content/common/media/audio_messages.h" |
-#include "content/renderer/media/webrtc_logging.h" |
-#include "content/renderer/render_thread_impl.h" |
-#include "ipc/ipc_logging.h" |
- |
-namespace content { |
- |
-namespace { |
-const int kStreamIDNotSet = -1; |
-} |
- |
-class AudioMessageFilter::AudioOutputIPCImpl |
- : public NON_EXPORTED_BASE(media::AudioOutputIPC) { |
- public: |
- AudioOutputIPCImpl(const scoped_refptr<AudioMessageFilter>& filter, |
- int render_frame_id); |
- ~AudioOutputIPCImpl() override; |
- |
- // media::AudioOutputIPC implementation. |
- void RequestDeviceAuthorization(media::AudioOutputIPCDelegate* delegate, |
- int session_id, |
- const std::string& device_id, |
- const url::Origin& security_origin) override; |
- void CreateStream(media::AudioOutputIPCDelegate* delegate, |
- const media::AudioParameters& params) override; |
- void PlayStream() override; |
- void PauseStream() override; |
- void CloseStream() override; |
- void SetVolume(double volume) override; |
- |
- private: |
- const scoped_refptr<AudioMessageFilter> filter_; |
- const int render_frame_id_; |
- int stream_id_; |
- bool stream_created_; |
-}; |
- |
-AudioMessageFilter* AudioMessageFilter::g_filter = NULL; |
- |
-AudioMessageFilter::AudioMessageFilter( |
- scoped_refptr<base::SingleThreadTaskRunner> io_task_runner) |
- : sender_(NULL), io_task_runner_(io_task_runner) { |
- DCHECK(!g_filter); |
- g_filter = this; |
-} |
- |
-AudioMessageFilter::~AudioMessageFilter() { |
- DCHECK_EQ(g_filter, this); |
- g_filter = NULL; |
-} |
- |
-// static |
-AudioMessageFilter* AudioMessageFilter::Get() { |
- return g_filter; |
-} |
- |
-AudioMessageFilter::AudioOutputIPCImpl::AudioOutputIPCImpl( |
- const scoped_refptr<AudioMessageFilter>& filter, |
- int render_frame_id) |
- : filter_(filter), |
- render_frame_id_(render_frame_id), |
- stream_id_(kStreamIDNotSet), |
- stream_created_(false) {} |
- |
-AudioMessageFilter::AudioOutputIPCImpl::~AudioOutputIPCImpl() {} |
- |
-std::unique_ptr<media::AudioOutputIPC> AudioMessageFilter::CreateAudioOutputIPC( |
- int render_frame_id) { |
- DCHECK_GT(render_frame_id, 0); |
- return std::unique_ptr<media::AudioOutputIPC>( |
- new AudioOutputIPCImpl(this, render_frame_id)); |
-} |
- |
-void AudioMessageFilter::AudioOutputIPCImpl::RequestDeviceAuthorization( |
- media::AudioOutputIPCDelegate* delegate, |
- int session_id, |
- const std::string& device_id, |
- const url::Origin& security_origin) { |
- DCHECK(filter_->io_task_runner_->BelongsToCurrentThread()); |
- DCHECK(delegate); |
- DCHECK_EQ(stream_id_, kStreamIDNotSet); |
- DCHECK(!stream_created_); |
- |
- stream_id_ = filter_->delegates_.Add(delegate); |
- filter_->Send(new AudioHostMsg_RequestDeviceAuthorization( |
- stream_id_, render_frame_id_, session_id, device_id, |
- url::Origin(security_origin))); |
-} |
- |
-void AudioMessageFilter::AudioOutputIPCImpl::CreateStream( |
- media::AudioOutputIPCDelegate* delegate, |
- const media::AudioParameters& params) { |
- DCHECK(filter_->io_task_runner_->BelongsToCurrentThread()); |
- DCHECK(!stream_created_); |
- if (stream_id_ == kStreamIDNotSet) |
- stream_id_ = filter_->delegates_.Add(delegate); |
- |
- filter_->Send( |
- new AudioHostMsg_CreateStream(stream_id_, render_frame_id_, params)); |
- stream_created_ = true; |
-} |
- |
-void AudioMessageFilter::AudioOutputIPCImpl::PlayStream() { |
- DCHECK(stream_created_); |
- filter_->Send(new AudioHostMsg_PlayStream(stream_id_)); |
-} |
- |
-void AudioMessageFilter::AudioOutputIPCImpl::PauseStream() { |
- DCHECK(stream_created_); |
- filter_->Send(new AudioHostMsg_PauseStream(stream_id_)); |
-} |
- |
-void AudioMessageFilter::AudioOutputIPCImpl::CloseStream() { |
- DCHECK(filter_->io_task_runner_->BelongsToCurrentThread()); |
- DCHECK_NE(stream_id_, kStreamIDNotSet); |
- filter_->Send(new AudioHostMsg_CloseStream(stream_id_)); |
- filter_->delegates_.Remove(stream_id_); |
- stream_id_ = kStreamIDNotSet; |
- stream_created_ = false; |
-} |
- |
-void AudioMessageFilter::AudioOutputIPCImpl::SetVolume(double volume) { |
- DCHECK(stream_created_); |
- filter_->Send(new AudioHostMsg_SetVolume(stream_id_, volume)); |
-} |
- |
-void AudioMessageFilter::Send(IPC::Message* message) { |
- DCHECK(io_task_runner_->BelongsToCurrentThread()); |
- if (!sender_) { |
- delete message; |
- } else { |
- sender_->Send(message); |
- } |
-} |
- |
-bool AudioMessageFilter::OnMessageReceived(const IPC::Message& message) { |
- DCHECK(io_task_runner_->BelongsToCurrentThread()); |
- bool handled = true; |
- IPC_BEGIN_MESSAGE_MAP(AudioMessageFilter, message) |
- IPC_MESSAGE_HANDLER(AudioMsg_NotifyDeviceAuthorized, OnDeviceAuthorized) |
- IPC_MESSAGE_HANDLER(AudioMsg_NotifyStreamCreated, OnStreamCreated) |
- IPC_MESSAGE_HANDLER(AudioMsg_NotifyStreamStateChanged, OnStreamStateChanged) |
- IPC_MESSAGE_UNHANDLED(handled = false) |
- IPC_END_MESSAGE_MAP() |
- return handled; |
-} |
- |
-void AudioMessageFilter::OnFilterAdded(IPC::Sender* sender) { |
- DCHECK(io_task_runner_->BelongsToCurrentThread()); |
- sender_ = sender; |
-} |
- |
-void AudioMessageFilter::OnFilterRemoved() { |
- DCHECK(io_task_runner_->BelongsToCurrentThread()); |
- |
- // Once removed, a filter will not be used again. At this time all |
- // delegates must be notified so they release their reference. |
- OnChannelClosing(); |
-} |
- |
-void AudioMessageFilter::OnChannelClosing() { |
- DCHECK(io_task_runner_->BelongsToCurrentThread()); |
- sender_ = NULL; |
- |
- DLOG_IF(WARNING, !delegates_.IsEmpty()) |
- << "Not all audio devices have been closed."; |
- |
- IDMap<media::AudioOutputIPCDelegate>::iterator it(&delegates_); |
- while (!it.IsAtEnd()) { |
- it.GetCurrentValue()->OnIPCClosed(); |
- delegates_.Remove(it.GetCurrentKey()); |
- it.Advance(); |
- } |
-} |
- |
-void AudioMessageFilter::OnDeviceAuthorized( |
- int stream_id, |
- media::OutputDeviceStatus device_status, |
- const media::AudioParameters& output_params, |
- const std::string& matched_device_id) { |
- DCHECK(io_task_runner_->BelongsToCurrentThread()); |
- media::AudioOutputIPCDelegate* delegate = delegates_.Lookup(stream_id); |
- if (!delegate) |
- return; |
- |
- delegate->OnDeviceAuthorized(device_status, output_params, matched_device_id); |
-} |
- |
-void AudioMessageFilter::OnStreamCreated( |
- int stream_id, |
- base::SharedMemoryHandle handle, |
- base::SyncSocket::TransitDescriptor socket_descriptor, |
- uint32_t length) { |
- DCHECK(io_task_runner_->BelongsToCurrentThread()); |
- |
- WebRtcLogMessage(base::StringPrintf( |
- "AMF::OnStreamCreated. stream_id=%d", |
- stream_id)); |
- |
- base::SyncSocket::Handle socket_handle = |
- base::SyncSocket::UnwrapHandle(socket_descriptor); |
- |
- media::AudioOutputIPCDelegate* delegate = delegates_.Lookup(stream_id); |
- if (!delegate) { |
- DLOG(WARNING) << "Got OnStreamCreated() event for a non-existent or removed" |
- << " audio renderer. (stream_id=" << stream_id << ")."; |
- base::SharedMemory::CloseHandle(handle); |
- base::SyncSocket socket(socket_handle); |
- return; |
- } |
- delegate->OnStreamCreated(handle, socket_handle, length); |
-} |
- |
-void AudioMessageFilter::OnStreamStateChanged( |
- int stream_id, media::AudioOutputIPCDelegateState state) { |
- DCHECK(io_task_runner_->BelongsToCurrentThread()); |
- media::AudioOutputIPCDelegate* delegate = delegates_.Lookup(stream_id); |
- if (!delegate) { |
- DLOG(WARNING) << "Got OnStreamStateChanged() event for a non-existent or" |
- << " removed audio renderer. State: " << state; |
- return; |
- } |
- delegate->OnStateChanged(state); |
-} |
- |
-} // namespace content |