OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/media/audio_renderer_mixer_manager.h" | 5 #include "content/renderer/media/audio_renderer_mixer_manager.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 } | 81 } |
82 | 82 |
83 media::AudioParameters hardware_params = | 83 media::AudioParameters hardware_params = |
84 sink->GetOutputDevice()->GetOutputParameters(); | 84 sink->GetOutputDevice()->GetOutputParameters(); |
85 | 85 |
86 // On ChromeOS we can rely on the playback device to handle resampling, so | 86 // On ChromeOS we can rely on the playback device to handle resampling, so |
87 // don't waste cycles on it here. | 87 // don't waste cycles on it here. |
88 #if defined(OS_CHROMEOS) | 88 #if defined(OS_CHROMEOS) |
89 int sample_rate = params.sample_rate(); | 89 int sample_rate = params.sample_rate(); |
90 #else | 90 #else |
91 int sample_rate = hardware_params.sample_rate(); | 91 int sample_rate = |
| 92 hardware_params.format() != media::AudioParameters::AUDIO_FAKE |
| 93 ? hardware_params.sample_rate() |
| 94 : params.sample_rate(); |
92 #endif | 95 #endif |
93 | 96 |
| 97 int buffer_size = |
| 98 hardware_params.format() != media::AudioParameters::AUDIO_FAKE |
| 99 ? media::AudioHardwareConfig::GetHighLatencyBufferSize( |
| 100 hardware_params) |
| 101 : params.frames_per_buffer(); |
| 102 |
94 // Create output parameters based on the audio hardware configuration for | 103 // Create output parameters based on the audio hardware configuration for |
95 // passing on to the output sink. Force to 16-bit output for now since we | 104 // passing on to the output sink. Force to 16-bit output for now since we |
96 // know that works everywhere; ChromeOS does not support other bit depths. | 105 // know that works everywhere; ChromeOS does not support other bit depths. |
97 media::AudioParameters output_params( | 106 media::AudioParameters output_params( |
98 media::AudioParameters::AUDIO_PCM_LOW_LATENCY, params.channel_layout(), | 107 media::AudioParameters::AUDIO_PCM_LOW_LATENCY, params.channel_layout(), |
99 sample_rate, 16, | 108 sample_rate, 16, buffer_size); |
100 media::AudioHardwareConfig::GetHighLatencyBufferSize(hardware_params)); | |
101 | 109 |
102 // If we've created invalid output parameters, simply pass on the input | 110 // If we've created invalid output parameters, simply pass on the input |
103 // params and let the browser side handle automatic fallback. | 111 // params and let the browser side handle automatic fallback. |
104 if (!output_params.IsValid()) | 112 if (!output_params.IsValid()) |
105 output_params = params; | 113 output_params = params; |
106 | 114 |
107 media::AudioRendererMixer* mixer = | 115 media::AudioRendererMixer* mixer = |
108 new media::AudioRendererMixer(params, output_params, sink); | 116 new media::AudioRendererMixer(params, output_params, sink); |
109 AudioRendererMixerReference mixer_reference = { mixer, 1 }; | 117 AudioRendererMixerReference mixer_reference = { mixer, 1 }; |
110 mixers_[key] = mixer_reference; | 118 mixers_[key] = mixer_reference; |
(...skipping 24 matching lines...) Expand all Loading... |
135 int source_render_frame_id, | 143 int source_render_frame_id, |
136 const media::AudioParameters& params, | 144 const media::AudioParameters& params, |
137 const std::string& device_id, | 145 const std::string& device_id, |
138 const url::Origin& security_origin) | 146 const url::Origin& security_origin) |
139 : source_render_frame_id(source_render_frame_id), | 147 : source_render_frame_id(source_render_frame_id), |
140 params(params), | 148 params(params), |
141 device_id(device_id), | 149 device_id(device_id), |
142 security_origin(security_origin) {} | 150 security_origin(security_origin) {} |
143 | 151 |
144 } // namespace content | 152 } // namespace content |
OLD | NEW |