summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/browser/renderer_host/render_message_filter.cc6
-rw-r--r--content/browser/renderer_host/render_message_filter.h1
-rw-r--r--content/common/view_messages.h4
-rw-r--r--content/renderer/media/audio_device.cc11
4 files changed, 17 insertions, 5 deletions
diff --git a/content/browser/renderer_host/render_message_filter.cc b/content/browser/renderer_host/render_message_filter.cc
index 624af29..8f58ec8 100644
--- a/content/browser/renderer_host/render_message_filter.cc
+++ b/content/browser/renderer_host/render_message_filter.cc
@@ -356,6 +356,8 @@ bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message,
OnCacheableMetadataAvailable)
IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_Keygen, OnKeygen)
IPC_MESSAGE_HANDLER(ViewHostMsg_AsyncOpenFile, OnAsyncOpenFile)
+ IPC_MESSAGE_HANDLER(ViewHostMsg_GetHardwareBufferSize,
+ OnGetHardwareBufferSize)
IPC_MESSAGE_HANDLER(ViewHostMsg_GetHardwareInputSampleRate,
OnGetHardwareInputSampleRate)
IPC_MESSAGE_HANDLER(ViewHostMsg_GetHardwareSampleRate,
@@ -606,6 +608,10 @@ void RenderMessageFilter::OnGenerateRoutingID(int* route_id) {
*route_id = render_widget_helper_->GetNextRoutingID();
}
+void RenderMessageFilter::OnGetHardwareBufferSize(uint32* buffer_size) {
+ *buffer_size = static_cast<uint32>(media::GetAudioHardwareBufferSize());
+}
+
void RenderMessageFilter::OnGetHardwareInputSampleRate(double* sample_rate) {
*sample_rate = media::GetAudioInputHardwareSampleRate();
}
diff --git a/content/browser/renderer_host/render_message_filter.h b/content/browser/renderer_host/render_message_filter.h
index a38aa9e..1215554 100644
--- a/content/browser/renderer_host/render_message_filter.h
+++ b/content/browser/renderer_host/render_message_filter.h
@@ -178,6 +178,7 @@ class RenderMessageFilter : public BrowserMessageFilter {
void OnCheckNotificationPermission(const GURL& source_origin,
int* permission_level);
+ void OnGetHardwareBufferSize(uint32* buffer_size);
void OnGetHardwareInputSampleRate(double* sample_rate);
void OnGetHardwareSampleRate(double* sample_rate);
diff --git a/content/common/view_messages.h b/content/common/view_messages.h
index ce9ea3e..a5315e6 100644
--- a/content/common/view_messages.h
+++ b/content/common/view_messages.h
@@ -682,6 +682,10 @@ IPC_MESSAGE_ROUTED1(ViewMsg_SetCSSColors,
IPC_SYNC_MESSAGE_CONTROL0_1(ViewHostMsg_GenerateRoutingID,
int /* routing_id */)
+// Asks the browser for the default audio hardware buffer-size.
+IPC_SYNC_MESSAGE_CONTROL0_1(ViewHostMsg_GetHardwareBufferSize,
+ uint32 /* buffer_size */)
+
// Asks the browser for the default audio input hardware sample-rate.
IPC_SYNC_MESSAGE_CONTROL0_1(ViewHostMsg_GetHardwareInputSampleRate,
double /* sample_rate */)
diff --git a/content/renderer/media/audio_device.cc b/content/renderer/media/audio_device.cc
index 7f007da..22edb16 100644
--- a/content/renderer/media/audio_device.cc
+++ b/content/renderer/media/audio_device.cc
@@ -213,7 +213,6 @@ void AudioDevice::Run() {
while ((sizeof(pending_data) == socket_->Receive(&pending_data,
sizeof(pending_data))) &&
(pending_data >= 0)) {
-
// Convert the number of pending bytes in the render buffer
// into milliseconds.
audio_delay_milliseconds_ = pending_data / bytes_per_ms;
@@ -247,10 +246,12 @@ double AudioDevice::GetAudioHardwareSampleRate() {
size_t AudioDevice::GetAudioHardwareBufferSize() {
// Uses cached value if possible.
- static size_t buffer_size = 0;
+ static uint32 buffer_size = 0;
- if (!buffer_size)
- buffer_size = media::GetAudioHardwareBufferSize();
+ if (!buffer_size) {
+ RenderThreadImpl::current()->Send(
+ new ViewHostMsg_GetHardwareBufferSize(&buffer_size));
+ }
- return buffer_size;
+ return static_cast<size_t>(buffer_size);
}