summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorcrogers@google.com <crogers@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-23 00:25:23 +0000
committercrogers@google.com <crogers@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-23 00:25:23 +0000
commitf70f061e17087785320b732ed985a580444464e7 (patch)
treec19764c1b2b95b2c51e55c0ac9c194c8ba0d4161 /content
parentb8c17f9383c180b17855312481551e0b96b13537 (diff)
downloadchromium_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/DEPS1
-rw-r--r--content/browser/renderer_host/render_message_filter.cc7
-rw-r--r--content/browser/renderer_host/render_message_filter.h2
-rw-r--r--content/common/view_messages.h4
-rw-r--r--content/renderer/media/audio_device.cc10
-rw-r--r--content/renderer/media/audio_device.h2
-rw-r--r--content/renderer/renderer_webkitclient_impl.cc4
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*