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

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

Issue 11880009: Introduce AudioHardwareConfig for renderer side audio device info. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Style nits. Created 7 years, 11 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 22915c521c53264ededd36610bf119e14089c95c..4eef36c2d8150240a3efc19a511071763f964cc1 100644
--- a/content/renderer/media/audio_message_filter.cc
+++ b/content/renderer/media/audio_message_filter.cc
@@ -23,21 +23,22 @@ AudioMessageFilter* AudioMessageFilter::Get() {
AudioMessageFilter::AudioMessageFilter()
: next_stream_id_(1),
- channel_(NULL) {
+ channel_(NULL),
+ audio_hardware_config_(NULL) {
DVLOG(1) << "AudioMessageFilter::AudioMessageFilter()";
DCHECK(!filter_);
filter_ = this;
}
int AudioMessageFilter::AddDelegate(media::AudioOutputIPCDelegate* delegate) {
- base::AutoLock guard(delegates_lock_);
+ base::AutoLock auto_lock(lock_);
const int id = next_stream_id_++;
delegates_.insert(std::make_pair(id, delegate));
return id;
}
void AudioMessageFilter::RemoveDelegate(int id) {
- base::AutoLock guard(delegates_lock_);
+ base::AutoLock auto_lock(lock_);
delegates_.erase(id);
}
@@ -96,6 +97,7 @@ 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_NotifyDeviceChanged, OnOutputDeviceChanged)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
@@ -115,7 +117,7 @@ void AudioMessageFilter::OnChannelClosing() {
DelegateMap zombies;
{
- base::AutoLock guard(delegates_lock_);
+ base::AutoLock auto_lock(lock_);
delegates_.swap(zombies);
}
@@ -153,7 +155,7 @@ void AudioMessageFilter::OnStreamCreated(
#endif
{
- base::AutoLock guard(delegates_lock_);
+ base::AutoLock auto_lock(lock_);
DelegateMap::const_iterator it = delegates_.find(stream_id);
if (it != delegates_.end()) {
it->second->OnStreamCreated(handle, socket_handle, length);
@@ -169,7 +171,7 @@ void AudioMessageFilter::OnStreamCreated(
void AudioMessageFilter::OnStreamStateChanged(
int stream_id, media::AudioOutputIPCDelegate::State state) {
- base::AutoLock guard(delegates_lock_);
+ base::AutoLock auto_lock(lock_);
DelegateMap::const_iterator it = delegates_.find(stream_id);
DLOG_IF(WARNING, it == delegates_.end())
<< "No delegate found for state change. " << state;
@@ -177,4 +179,24 @@ void AudioMessageFilter::OnStreamStateChanged(
it->second->OnStateChanged(state);
}
+void AudioMessageFilter::OnOutputDeviceChanged(int stream_id,
+ int new_buffer_size,
+ int new_sample_rate) {
+ base::AutoLock auto_lock(lock_);
+
+ // Ignore the message if an audio hardware config hasn't been created; this
+ // can occur if the renderer is using the high latency audio path.
+ // TODO(dalecurtis): After http://crbug.com/173435 is fixed, convert to CHECK.
+ if (!audio_hardware_config_)
+ return;
+
+ audio_hardware_config_->UpdateOutputConfig(new_buffer_size, new_sample_rate);
+}
+
+void AudioMessageFilter::SetAudioHardwareConfig(
+ media::AudioHardwareConfig* config) {
+ base::AutoLock auto_lock(lock_);
+ audio_hardware_config_ = config;
+}
+
} // namespace content
« no previous file with comments | « content/renderer/media/audio_message_filter.h ('k') | content/renderer/media/audio_renderer_mixer_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698