// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "content/renderer/media/audio_hardware.h" #include "base/logging.h" #include "content/common/view_messages.h" #include "content/renderer/render_thread_impl.h" static int output_sample_rate = 0; static int input_sample_rate = 0; static size_t output_buffer_size = 0; static ChannelLayout input_channel_layout = CHANNEL_LAYOUT_NONE; namespace audio_hardware { int GetOutputSampleRate() { DCHECK(RenderThreadImpl::current() != NULL); if (!output_sample_rate) { RenderThreadImpl::current()->Send( new ViewHostMsg_GetHardwareSampleRate(&output_sample_rate)); } return output_sample_rate; } int GetInputSampleRate() { DCHECK(RenderThreadImpl::current() != NULL); if (!input_sample_rate) { RenderThreadImpl::current()->Send( new ViewHostMsg_GetHardwareInputSampleRate(&input_sample_rate)); } return input_sample_rate; } size_t GetOutputBufferSize() { DCHECK(RenderThreadImpl::current() != NULL); if (!output_buffer_size) { uint32 buffer_size = 0; RenderThreadImpl::current()->Send( new ViewHostMsg_GetHardwareBufferSize(&buffer_size)); output_buffer_size = buffer_size; } return output_buffer_size; } ChannelLayout GetInputChannelLayout() { DCHECK(RenderThreadImpl::current() != NULL); if (input_channel_layout == CHANNEL_LAYOUT_NONE) { ChannelLayout layout = CHANNEL_LAYOUT_NONE; RenderThreadImpl::current()->Send( new ViewHostMsg_GetHardwareInputChannelLayout(&layout)); input_channel_layout = layout; } return input_channel_layout; } void ResetCache() { DCHECK(RenderThreadImpl::current() != NULL); output_sample_rate = 0.0; input_sample_rate = 0.0; output_buffer_size = 0; input_channel_layout = CHANNEL_LAYOUT_NONE; } } // namespace audio_hardware