OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "media/audio/pulse/audio_manager_pulse.h" | 5 #include "media/audio/pulse/audio_manager_pulse.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/environment.h" | 8 #include "base/environment.h" |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 | 125 |
126 // TODO(xians): add support for querying native channel layout for pulse. | 126 // TODO(xians): add support for querying native channel layout for pulse. |
127 return AudioParameters( | 127 return AudioParameters( |
128 AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, | 128 AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, |
129 GetNativeSampleRate(), 16, kDefaultInputBufferSize); | 129 GetNativeSampleRate(), 16, kDefaultInputBufferSize); |
130 } | 130 } |
131 | 131 |
132 AudioOutputStream* AudioManagerPulse::MakeLinearOutputStream( | 132 AudioOutputStream* AudioManagerPulse::MakeLinearOutputStream( |
133 const AudioParameters& params) { | 133 const AudioParameters& params) { |
134 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); | 134 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); |
135 return MakeOutputStream(params); | 135 return MakeOutputStream(params, AudioManagerBase::kDefaultDeviceId); |
136 } | 136 } |
137 | 137 |
138 AudioOutputStream* AudioManagerPulse::MakeLowLatencyOutputStream( | 138 AudioOutputStream* AudioManagerPulse::MakeLowLatencyOutputStream( |
139 const AudioParameters& params, | 139 const AudioParameters& params, |
140 const std::string& device_id) { | 140 const std::string& device_id) { |
141 DLOG_IF(ERROR, !device_id.empty()) << "Not implemented!"; | |
142 DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); | 141 DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); |
143 return MakeOutputStream(params); | 142 return MakeOutputStream( |
| 143 params, |
| 144 device_id.empty() ? AudioManagerBase::kDefaultDeviceId : device_id); |
144 } | 145 } |
145 | 146 |
146 AudioInputStream* AudioManagerPulse::MakeLinearInputStream( | 147 AudioInputStream* AudioManagerPulse::MakeLinearInputStream( |
147 const AudioParameters& params, const std::string& device_id) { | 148 const AudioParameters& params, const std::string& device_id) { |
148 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); | 149 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); |
149 return MakeInputStream(params, device_id); | 150 return MakeInputStream(params, device_id); |
150 } | 151 } |
151 | 152 |
152 AudioInputStream* AudioManagerPulse::MakeLowLatencyInputStream( | 153 AudioInputStream* AudioManagerPulse::MakeLowLatencyInputStream( |
153 const AudioParameters& params, const std::string& device_id) { | 154 const AudioParameters& params, const std::string& device_id) { |
(...skipping 26 matching lines...) Expand all Loading... |
180 int user_buffer_size = GetUserBufferSize(); | 181 int user_buffer_size = GetUserBufferSize(); |
181 if (user_buffer_size) | 182 if (user_buffer_size) |
182 buffer_size = user_buffer_size; | 183 buffer_size = user_buffer_size; |
183 | 184 |
184 return AudioParameters( | 185 return AudioParameters( |
185 AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, input_channels, | 186 AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, input_channels, |
186 sample_rate, bits_per_sample, buffer_size, AudioParameters::NO_EFFECTS); | 187 sample_rate, bits_per_sample, buffer_size, AudioParameters::NO_EFFECTS); |
187 } | 188 } |
188 | 189 |
189 AudioOutputStream* AudioManagerPulse::MakeOutputStream( | 190 AudioOutputStream* AudioManagerPulse::MakeOutputStream( |
190 const AudioParameters& params) { | 191 const AudioParameters& params, |
191 return new PulseAudioOutputStream(params, this); | 192 const std::string& device_id) { |
| 193 DCHECK(!device_id.empty()); |
| 194 return new PulseAudioOutputStream(params, device_id, this); |
192 } | 195 } |
193 | 196 |
194 AudioInputStream* AudioManagerPulse::MakeInputStream( | 197 AudioInputStream* AudioManagerPulse::MakeInputStream( |
195 const AudioParameters& params, const std::string& device_id) { | 198 const AudioParameters& params, const std::string& device_id) { |
196 return new PulseAudioInputStream(this, device_id, params, | 199 return new PulseAudioInputStream(this, device_id, params, |
197 input_mainloop_, input_context_); | 200 input_mainloop_, input_context_); |
198 } | 201 } |
199 | 202 |
200 int AudioManagerPulse::GetNativeSampleRate() { | 203 int AudioManagerPulse::GetNativeSampleRate() { |
201 DCHECK(input_mainloop_); | 204 DCHECK(input_mainloop_); |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 void AudioManagerPulse::SampleRateInfoCallback(pa_context* context, | 326 void AudioManagerPulse::SampleRateInfoCallback(pa_context* context, |
324 const pa_server_info* info, | 327 const pa_server_info* info, |
325 void* user_data) { | 328 void* user_data) { |
326 AudioManagerPulse* manager = reinterpret_cast<AudioManagerPulse*>(user_data); | 329 AudioManagerPulse* manager = reinterpret_cast<AudioManagerPulse*>(user_data); |
327 | 330 |
328 manager->native_input_sample_rate_ = info->sample_spec.rate; | 331 manager->native_input_sample_rate_ = info->sample_spec.rate; |
329 pa_threaded_mainloop_signal(manager->input_mainloop_, 0); | 332 pa_threaded_mainloop_signal(manager->input_mainloop_, 0); |
330 } | 333 } |
331 | 334 |
332 } // namespace media | 335 } // namespace media |
OLD | NEW |