diff options
author | crogers@google.com <crogers@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-23 00:25:23 +0000 |
---|---|---|
committer | crogers@google.com <crogers@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-23 00:25:23 +0000 |
commit | f70f061e17087785320b732ed985a580444464e7 (patch) | |
tree | c19764c1b2b95b2c51e55c0ac9c194c8ba0d4161 /content | |
parent | b8c17f9383c180b17855312481551e0b96b13537 (diff) | |
download | chromium_src-f70f061e17087785320b732ed985a580444464e7.zip chromium_src-f70f061e17087785320b732ed985a580444464e7.tar.gz chromium_src-f70f061e17087785320b732ed985a580444464e7.tar.bz2 |
Audio sample-rate should not be queried directly from the renderer process.
BUG=http://code.google.com/p/chromium/issues/detail?id=90139
TEST=none
(tested on a MacBook Pro with Lion installed to verify the fix)
Review URL: http://codereview.chromium.org/7489023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@93742 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/browser/renderer_host/DEPS | 1 | ||||
-rw-r--r-- | content/browser/renderer_host/render_message_filter.cc | 7 | ||||
-rw-r--r-- | content/browser/renderer_host/render_message_filter.h | 2 | ||||
-rw-r--r-- | content/common/view_messages.h | 4 | ||||
-rw-r--r-- | content/renderer/media/audio_device.cc | 10 | ||||
-rw-r--r-- | content/renderer/media/audio_device.h | 2 | ||||
-rw-r--r-- | content/renderer/renderer_webkitclient_impl.cc | 4 |
7 files changed, 28 insertions, 2 deletions
diff --git a/content/browser/renderer_host/DEPS b/content/browser/renderer_host/DEPS index e773049..edcdf9e 100644 --- a/content/browser/renderer_host/DEPS +++ b/content/browser/renderer_host/DEPS @@ -1,5 +1,6 @@ include_rules = [ "+content/renderer", # For single-process mode. "+media/base", # For media command line switches. + "+media/audio/audio_util.h", # For audio hardware sample-rate. "+third_party/zlib", ] diff --git a/content/browser/renderer_host/render_message_filter.cc b/content/browser/renderer_host/render_message_filter.cc index f06c33c..dad6258 100644 --- a/content/browser/renderer_host/render_message_filter.cc +++ b/content/browser/renderer_host/render_message_filter.cc @@ -33,6 +33,7 @@ #include "content/common/view_messages.h" #include "ipc/ipc_channel_handle.h" #include "ipc/ipc_platform_file.h" +#include "media/audio/audio_util.h" #include "net/base/cookie_monster.h" #include "net/base/host_resolver_impl.h" #include "net/base/io_buffer.h" @@ -365,6 +366,8 @@ bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message, IPC_MESSAGE_HANDLER(ViewHostMsg_EnableSpdy, OnEnableSpdy) IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_Keygen, OnKeygen) IPC_MESSAGE_HANDLER(ViewHostMsg_AsyncOpenFile, OnAsyncOpenFile) + IPC_MESSAGE_HANDLER(ViewHostMsg_GetHardwareSampleRate, + OnGetHardwareSampleRate) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP_EX() @@ -587,6 +590,10 @@ void RenderMessageFilter::OnGenerateRoutingID(int* route_id) { *route_id = render_widget_helper_->GetNextRoutingID(); } +void RenderMessageFilter::OnGetHardwareSampleRate(double* sample_rate) { + *sample_rate = media::GetAudioHardwareSampleRate(); +} + void RenderMessageFilter::OnDownloadUrl(const IPC::Message& message, const GURL& url, const GURL& referrer) { diff --git a/content/browser/renderer_host/render_message_filter.h b/content/browser/renderer_host/render_message_filter.h index 2cc7906..9a2886b 100644 --- a/content/browser/renderer_host/render_message_filter.h +++ b/content/browser/renderer_host/render_message_filter.h @@ -173,6 +173,8 @@ class RenderMessageFilter : public BrowserMessageFilter { void OnCheckNotificationPermission(const GURL& source_url, int* permission_level); + void OnGetHardwareSampleRate(double* sample_rate); + // Used to ask the browser to allocate a block of shared memory for the // renderer to send back data in, since shared memory can't be created // in the renderer on POSIX due to the sandbox. diff --git a/content/common/view_messages.h b/content/common/view_messages.h index 021352c..4db5bf0 100644 --- a/content/common/view_messages.h +++ b/content/common/view_messages.h @@ -746,6 +746,10 @@ IPC_MESSAGE_ROUTED1(ViewMsg_SetCSSColors, IPC_SYNC_MESSAGE_CONTROL0_1(ViewHostMsg_GenerateRoutingID, int /* routing_id */) +// Asks the browser for the default audio hardware sample-rate. +IPC_SYNC_MESSAGE_CONTROL0_1(ViewHostMsg_GetHardwareSampleRate, + double /* sample_rate */) + // Tells the renderer to create a new view. // This message is slightly different, the view it takes (via // ViewMsg_New_Params) is the view to create, the message itself is sent as a diff --git a/content/renderer/media/audio_device.cc b/content/renderer/media/audio_device.cc index e00b370..7264f57 100644 --- a/content/renderer/media/audio_device.cc +++ b/content/renderer/media/audio_device.cc @@ -211,3 +211,13 @@ void AudioDevice::FireRenderCallback() { media::InterleaveFloatToInt16(audio_data_, output_buffer16, buffer_size_); } } + +double AudioDevice::GetAudioHardwareSampleRate() { + // Uses cached value if possible. + static double hardware_sample_rate = 0; + if (!hardware_sample_rate) { + RenderThread::current()->Send( + new ViewHostMsg_GetHardwareSampleRate(&hardware_sample_rate)); + } + return hardware_sample_rate; +} diff --git a/content/renderer/media/audio_device.h b/content/renderer/media/audio_device.h index f36399c..68940f0 100644 --- a/content/renderer/media/audio_device.h +++ b/content/renderer/media/audio_device.h @@ -95,6 +95,8 @@ class AudioDevice double sample_rate() const { return sample_rate_; } size_t buffer_size() const { return buffer_size_; } + static double GetAudioHardwareSampleRate(); + // Methods called on IO thread ---------------------------------------------- // AudioMessageFilter::Delegate methods, called by AudioMessageFilter. virtual void OnRequestPacket(AudioBuffersState buffers_state); diff --git a/content/renderer/renderer_webkitclient_impl.cc b/content/renderer/renderer_webkitclient_impl.cc index 86622d0..da563d1 100644 --- a/content/renderer/renderer_webkitclient_impl.cc +++ b/content/renderer/renderer_webkitclient_impl.cc @@ -21,6 +21,7 @@ #include "content/plugin/npobject_util.h" #include "content/renderer/content_renderer_client.h" #include "content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.h" +#include "content/renderer/media/audio_device.h" #include "content/renderer/render_thread.h" #include "content/renderer/render_view.h" #include "content/renderer/renderer_webaudiodevice_impl.h" @@ -29,7 +30,6 @@ #include "content/renderer/websharedworkerrepository_impl.h" #include "googleurl/src/gurl.h" #include "ipc/ipc_sync_message_filter.h" -#include "media/audio/audio_util.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebBlobRegistry.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebGraphicsContext3D.h" @@ -565,7 +565,7 @@ RendererWebKitClientImpl::createGraphicsContext3D() { } double RendererWebKitClientImpl::audioHardwareSampleRate() { - return media::GetAudioHardwareSampleRate(); + return AudioDevice::GetAudioHardwareSampleRate(); } WebAudioDevice* |