diff options
-rw-r--r-- | content/browser/renderer_host/render_message_filter.cc | 6 | ||||
-rw-r--r-- | content/browser/renderer_host/render_message_filter.h | 1 | ||||
-rw-r--r-- | content/common/view_messages.h | 4 | ||||
-rw-r--r-- | content/renderer/media/audio_device.cc | 11 |
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); } |