Index: content/renderer/media/audio_device.cc |
=================================================================== |
--- content/renderer/media/audio_device.cc (revision 110480) |
+++ content/renderer/media/audio_device.cc (working copy) |
@@ -14,6 +14,11 @@ |
#include "content/renderer/render_thread_impl.h" |
#include "media/audio/audio_util.h" |
+double AudioHardware::output_sample_rate_ = 0.0; |
+double AudioHardware::input_sample_rate_ = 0.0; |
+size_t AudioHardware::output_buffer_size_ = 0; |
+ |
+ |
AudioDevice::AudioDevice(size_t buffer_size, |
int channels, |
double sample_rate, |
@@ -234,24 +239,35 @@ |
} |
} |
-double AudioDevice::GetAudioHardwareSampleRate() { |
- // Uses cached value if possible. |
- static double hardware_sample_rate = 0; |
- if (!hardware_sample_rate) { |
+double AudioHardware::GetOutputSampleRate() { |
+ if (!output_sample_rate_) { |
RenderThreadImpl::current()->Send( |
- new ViewHostMsg_GetHardwareSampleRate(&hardware_sample_rate)); |
+ new ViewHostMsg_GetHardwareSampleRate(&output_sample_rate_)); |
} |
- return hardware_sample_rate; |
+ return output_sample_rate_; |
} |
-size_t AudioDevice::GetAudioHardwareBufferSize() { |
- // Uses cached value if possible. |
- static uint32 buffer_size = 0; |
+double AudioHardware::GetInputSampleRate() { |
+ if (!input_sample_rate_) { |
+ RenderThreadImpl::current()->Send( |
+ new ViewHostMsg_GetHardwareInputSampleRate(&input_sample_rate_)); |
+ } |
+ return input_sample_rate_; |
+} |
- if (!buffer_size) { |
+size_t AudioHardware::GetOutputBufferSize() { |
+ if (!output_buffer_size_) { |
+ uint32 buffer_size = 0; |
RenderThreadImpl::current()->Send( |
new ViewHostMsg_GetHardwareBufferSize(&buffer_size)); |
+ output_buffer_size_ = buffer_size; |
} |
- return static_cast<size_t>(buffer_size); |
+ return output_buffer_size_; |
} |
+ |
+void AudioHardware::ResetCache() { |
+ output_sample_rate_ = 0.0; |
+ input_sample_rate_ = 0.0; |
+ output_buffer_size_ = 0; |
+} |