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 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 | 105 |
106 // TODO(xians): add support for querying native channel layout for pulse. | 106 // TODO(xians): add support for querying native channel layout for pulse. |
107 return AudioParameters( | 107 return AudioParameters( |
108 AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, | 108 AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, |
109 GetNativeSampleRate(), 16, kDefaultInputBufferSize); | 109 GetNativeSampleRate(), 16, kDefaultInputBufferSize); |
110 } | 110 } |
111 | 111 |
112 AudioOutputStream* AudioManagerPulse::MakeLinearOutputStream( | 112 AudioOutputStream* AudioManagerPulse::MakeLinearOutputStream( |
113 const AudioParameters& params) { | 113 const AudioParameters& params) { |
114 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); | 114 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); |
115 return MakeOutputStream(params); | 115 return MakeOutputStream(params, std::string()); |
116 } | 116 } |
117 | 117 |
118 AudioOutputStream* AudioManagerPulse::MakeLowLatencyOutputStream( | 118 AudioOutputStream* AudioManagerPulse::MakeLowLatencyOutputStream( |
119 const AudioParameters& params) { | 119 const AudioParameters& params, const std::string& input_device_id) { |
120 DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); | 120 DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); |
121 return MakeOutputStream(params); | 121 return MakeOutputStream(params, input_device_id); |
122 } | 122 } |
123 | 123 |
124 AudioInputStream* AudioManagerPulse::MakeLinearInputStream( | 124 AudioInputStream* AudioManagerPulse::MakeLinearInputStream( |
125 const AudioParameters& params, const std::string& device_id) { | 125 const AudioParameters& params, const std::string& device_id) { |
126 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); | 126 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); |
127 return MakeInputStream(params, device_id); | 127 return MakeInputStream(params, device_id); |
128 } | 128 } |
129 | 129 |
130 AudioInputStream* AudioManagerPulse::MakeLowLatencyInputStream( | 130 AudioInputStream* AudioManagerPulse::MakeLowLatencyInputStream( |
131 const AudioParameters& params, const std::string& device_id) { | 131 const AudioParameters& params, const std::string& device_id) { |
(...skipping 23 matching lines...) Expand all Loading... |
155 int user_buffer_size = GetUserBufferSize(); | 155 int user_buffer_size = GetUserBufferSize(); |
156 if (user_buffer_size) | 156 if (user_buffer_size) |
157 buffer_size = user_buffer_size; | 157 buffer_size = user_buffer_size; |
158 | 158 |
159 return AudioParameters( | 159 return AudioParameters( |
160 AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, input_channels, | 160 AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, input_channels, |
161 sample_rate, bits_per_sample, buffer_size); | 161 sample_rate, bits_per_sample, buffer_size); |
162 } | 162 } |
163 | 163 |
164 AudioOutputStream* AudioManagerPulse::MakeOutputStream( | 164 AudioOutputStream* AudioManagerPulse::MakeOutputStream( |
165 const AudioParameters& params) { | 165 const AudioParameters& params, const std::string& input_device_id) { |
166 if (params.input_channels()) { | 166 if (params.input_channels()) { |
167 return new PulseAudioUnifiedStream(params, this); | 167 return new PulseAudioUnifiedStream(params, input_device_id, this); |
168 } | 168 } |
169 | 169 |
170 return new PulseAudioOutputStream(params, this); | 170 return new PulseAudioOutputStream(params, this); |
171 } | 171 } |
172 | 172 |
173 AudioInputStream* AudioManagerPulse::MakeInputStream( | 173 AudioInputStream* AudioManagerPulse::MakeInputStream( |
174 const AudioParameters& params, const std::string& device_id) { | 174 const AudioParameters& params, const std::string& device_id) { |
175 return new PulseAudioInputStream(this, device_id, params, | 175 return new PulseAudioInputStream(this, device_id, params, |
176 input_mainloop_, input_context_); | 176 input_mainloop_, input_context_); |
177 } | 177 } |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 void AudioManagerPulse::SampleRateInfoCallback(pa_context* context, | 290 void AudioManagerPulse::SampleRateInfoCallback(pa_context* context, |
291 const pa_server_info* info, | 291 const pa_server_info* info, |
292 void* user_data) { | 292 void* user_data) { |
293 AudioManagerPulse* manager = reinterpret_cast<AudioManagerPulse*>(user_data); | 293 AudioManagerPulse* manager = reinterpret_cast<AudioManagerPulse*>(user_data); |
294 | 294 |
295 manager->native_input_sample_rate_ = info->sample_spec.rate; | 295 manager->native_input_sample_rate_ = info->sample_spec.rate; |
296 pa_threaded_mainloop_signal(manager->input_mainloop_, 0); | 296 pa_threaded_mainloop_signal(manager->input_mainloop_, 0); |
297 } | 297 } |
298 | 298 |
299 } // namespace media | 299 } // namespace media |
OLD | NEW |