| Index: chrome/browser/renderer_host/audio_renderer_host.cc
|
| diff --git a/chrome/browser/renderer_host/audio_renderer_host.cc b/chrome/browser/renderer_host/audio_renderer_host.cc
|
| index 4c833847dda1611c596e7e6756060e7ba5b864d7..5bfc77ea94310fcf7d96770870d1942731b53e11 100644
|
| --- a/chrome/browser/renderer_host/audio_renderer_host.cc
|
| +++ b/chrome/browser/renderer_host/audio_renderer_host.cc
|
| @@ -55,7 +55,7 @@ static size_t GetMaxAudioStreamsAllowed() {
|
| return kMaxStreams;
|
| }
|
|
|
| -static uint32 SelectHardwarePacketSize(AudioParameters params) {
|
| +static uint32 SelectSamplesPerPacket(AudioParameters params) {
|
| // Select the number of samples that can provide at least
|
| // |kMillisecondsPerHardwarePacket| worth of audio data.
|
| int samples = kMinSamplesPerHardwarePacket;
|
| @@ -64,7 +64,7 @@ static uint32 SelectHardwarePacketSize(AudioParameters params) {
|
| params.sample_rate * kMillisecondsPerHardwarePacket) {
|
| samples *= 2;
|
| }
|
| - return params.channels * samples * params.bits_per_sample / 8;
|
| + return samples;
|
| }
|
|
|
| AudioRendererHost::AudioEntry::AudioEntry()
|
| @@ -347,15 +347,17 @@ void AudioRendererHost::OnCreateStream(
|
| return;
|
| }
|
|
|
| - // Select the hardwaer packet size if not specified.
|
| - uint32 hardware_packet_size = params.packet_size;
|
| - if (!hardware_packet_size) {
|
| - hardware_packet_size = SelectHardwarePacketSize(params.params);
|
| + AudioParameters audio_params(params.params);
|
| +
|
| + // Select the hardware packet size if not specified.
|
| + if (!audio_params.samples_per_packet) {
|
| + audio_params.samples_per_packet = SelectSamplesPerPacket(audio_params);
|
| }
|
| + uint32 packet_size = audio_params.GetPacketSize();
|
|
|
| scoped_ptr<AudioEntry> entry(new AudioEntry());
|
| // Create the shared memory and share with the renderer process.
|
| - if (!entry->shared_memory.CreateAndMapAnonymous(hardware_packet_size)) {
|
| + if (!entry->shared_memory.CreateAndMapAnonymous(packet_size)) {
|
| // If creation of shared memory failed then send an error message.
|
| SendErrorMessage(msg.routing_id(), stream_id);
|
| return;
|
| @@ -376,16 +378,13 @@ void AudioRendererHost::OnCreateStream(
|
| // entry and construct an AudioOutputController.
|
| entry->reader.reset(reader.release());
|
| entry->controller =
|
| - media::AudioOutputController::CreateLowLatency(
|
| - this, params.params,
|
| - hardware_packet_size,
|
| - entry->reader.get());
|
| + media::AudioOutputController::CreateLowLatency(this, audio_params,
|
| + entry->reader.get());
|
| } else {
|
| // The choice of buffer capacity is based on experiment.
|
| entry->controller =
|
| - media::AudioOutputController::Create(this, params.params,
|
| - hardware_packet_size,
|
| - 3 * hardware_packet_size);
|
| + media::AudioOutputController::Create(this, audio_params,
|
| + 3 * packet_size);
|
| }
|
|
|
| if (!entry->controller) {
|
|
|