| Index: media/audio/audio_util.cc
|
| diff --git a/media/audio/audio_util.cc b/media/audio/audio_util.cc
|
| index b4b8751885b570b2ebdabb30ae78f6122e7ca20a..8caced5204243dd7e1ee1337f6a6e5e7ce9dd386 100644
|
| --- a/media/audio/audio_util.cc
|
| +++ b/media/audio/audio_util.cc
|
| @@ -14,9 +14,11 @@
|
| #include "base/basictypes.h"
|
| #include "base/logging.h"
|
| #include "base/shared_memory.h"
|
| +#include "base/time.h"
|
| #if defined(OS_WIN)
|
| #include "base/win/windows_version.h"
|
| #endif
|
| +#include "media/audio/audio_parameters.h"
|
| #include "media/audio/audio_util.h"
|
| #if defined(OS_MACOSX)
|
| #include "media/audio/mac/audio_low_latency_input_mac.h"
|
| @@ -436,4 +438,29 @@ void Crossfade(int bytes_to_crossfade, int number_of_channels,
|
| }
|
| }
|
|
|
| +// The minimum number of samples in a hardware packet.
|
| +// This value is selected so that we can handle down to 5khz sample rate.
|
| +static const int kMinSamplesPerHardwarePacket = 1024;
|
| +
|
| +// The maximum number of samples in a hardware packet.
|
| +// This value is selected so that we can handle up to 192khz sample rate.
|
| +static const int kMaxSamplesPerHardwarePacket = 64 * 1024;
|
| +
|
| +// This constant governs the hardware audio buffer size, this value should be
|
| +// chosen carefully.
|
| +// This value is selected so that we have 8192 samples for 48khz streams.
|
| +static const int kMillisecondsPerHardwarePacket = 170;
|
| +
|
| +uint32 SelectSamplesPerPacket(int sample_rate) {
|
| + // Select the number of samples that can provide at least
|
| + // |kMillisecondsPerHardwarePacket| worth of audio data.
|
| + int samples = kMinSamplesPerHardwarePacket;
|
| + while (samples <= kMaxSamplesPerHardwarePacket &&
|
| + samples * base::Time::kMillisecondsPerSecond <
|
| + sample_rate * kMillisecondsPerHardwarePacket) {
|
| + samples *= 2;
|
| + }
|
| + return samples;
|
| +}
|
| +
|
| } // namespace media
|
|
|