Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1325)

Unified Diff: content/renderer/media/audio_message_filter.cc

Issue 1184473002: Add support for the audio-output-device switching IPC mechanism to the renderer lower layers (media… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix build dependencies for audio_unittests Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 eb5549bec2f28cdd598d0e265d8c9f944a2b8eca..f37b21cf927986c792f04a118f24f7f3a0937578 100644
--- a/content/renderer/media/audio_message_filter.cc
+++ b/content/renderer/media/audio_message_filter.cc
@@ -4,6 +4,8 @@
#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"
@@ -33,6 +35,9 @@ class AudioMessageFilter::AudioOutputIPCImpl
void PauseStream() override;
void CloseStream() override;
void SetVolume(double volume) override;
+ void SwitchOutputDevice(const std::string& device_id,
+ const GURL& security_origin,
+ int request_id) override;
private:
const scoped_refptr<AudioMessageFilter> filter_;
@@ -110,6 +115,17 @@ void AudioMessageFilter::AudioOutputIPCImpl::SetVolume(double volume) {
filter_->Send(new AudioHostMsg_SetVolume(stream_id_, volume));
}
+void AudioMessageFilter::AudioOutputIPCImpl::SwitchOutputDevice(
+ const std::string& device_id,
+ const GURL& security_origin,
+ int request_id) {
+ DCHECK_NE(stream_id_, kStreamIDNotSet);
+ DVLOG(1) << __FUNCTION__
+ << "(" << device_id << ", " << security_origin << ")";
+ filter_->Send(new AudioHostMsg_SwitchOutputDevice(
+ stream_id_, render_frame_id_, device_id, security_origin, request_id));
+}
+
void AudioMessageFilter::Send(IPC::Message* message) {
DCHECK(io_task_runner_->BelongsToCurrentThread());
if (!sender_) {
@@ -125,6 +141,8 @@ bool AudioMessageFilter::OnMessageReceived(const IPC::Message& message) {
IPC_BEGIN_MESSAGE_MAP(AudioMessageFilter, message)
IPC_MESSAGE_HANDLER(AudioMsg_NotifyStreamCreated, OnStreamCreated)
IPC_MESSAGE_HANDLER(AudioMsg_NotifyStreamStateChanged, OnStreamStateChanged)
+ IPC_MESSAGE_HANDLER(AudioMsg_NotifyOutputDeviceSwitched,
+ OnOutputDeviceSwitched)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
@@ -195,4 +213,20 @@ void AudioMessageFilter::OnStreamStateChanged(
delegate->OnStateChanged(state);
}
+void AudioMessageFilter::OnOutputDeviceSwitched(
+ int stream_id,
+ int request_id,
+ media::SwitchOutputDeviceResult result) {
+ DCHECK(io_task_runner_->BelongsToCurrentThread());
+ DVLOG(1) << __FUNCTION__
+ << "(" << stream_id << ", " << request_id << ", " << result << ")";
+ media::AudioOutputIPCDelegate* delegate = delegates_.Lookup(stream_id);
+ if (!delegate) {
+ DLOG(WARNING) << "Got OnOutputDeviceSwitched() event for a nonexistent or"
+ << " removed audio renderer. State: " << result;
+ return;
+ }
+ delegate->OnOutputDeviceSwitched(request_id, result);
+}
+
} // namespace content
« no previous file with comments | « content/renderer/media/audio_message_filter.h ('k') | content/renderer/media/audio_message_filter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698