194 | | if (!AlsaBad(snd_pcm_hw_params_set_buffer_time_near(pcm_handle, hwparams, |
195 | | &buffer_time, NULL), "initial buffer time setting failed")) |
196 | | { |
197 | | snd_pcm_uframes_t buffer_size; |
198 | | if (AlsaBad(snd_pcm_hw_params_get_buffer_size(hwparams, &buffer_size), |
199 | | "failed to get buffer size")) |
200 | | return false; |
201 | | if (AlsaBad(snd_pcm_hw_params_get_buffer_time(hwparams, &buffer_time, NULL), |
202 | | "failed to get buffer_time setting")) |
203 | | return false; |
204 | | if (AlsaBad(snd_pcm_hw_params_set_period_time_near(pcm_handle, hwparams, |
205 | | &period_time, NULL), |
206 | | "failed to set period time")) |
207 | | return false; |
208 | | if (AlsaBad(snd_pcm_hw_params_get_period_size(hwparams, &period_size, |
209 | | NULL), |
210 | | "failed to get period size")) |
211 | | return false; |
212 | | } |
213 | | else |
214 | | { |
215 | | VERBOSE(VB_AUDIO, LOC + "hwparams settings, Plan B"); |
216 | | if (AlsaBad(snd_pcm_hw_params_set_period_time_near(pcm_handle, hwparams, |
217 | | &period_time, NULL), "failed to set period time")) |
218 | | return false; |
219 | | if (AlsaBad(snd_pcm_hw_params_get_period_size(hwparams, &period_size, |
220 | | NULL), "failed to get period size")) |
221 | | return false; |
222 | | snd_pcm_uframes_t buffer_size = period_size * 4; |
223 | | if (AlsaBad(snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, |
224 | | &buffer_size), "failed to set buffer size")) |
225 | | return false; |
226 | | if (AlsaBad(snd_pcm_hw_params_get_buffer_size(hwparams, &buffer_size), |
227 | | "failed to get buffer size")) |
228 | | return false; |
229 | | } |
| 194 | if (AlsaBad(snd_pcm_hw_params_set_period_time_near(pcm_handle, hwparams, &period_time, NULL), |
| 195 | "failed to set period time")) |
| 196 | return false; |
| 197 | if (AlsaBad(snd_pcm_hw_params_set_buffer_time_near(pcm_handle, hwparams, &buffer_time, NULL), |
| 198 | "failed to set buffer time")) |
| 199 | return false; |
| 200 | if (AlsaBad(snd_pcm_hw_params_get_period_size(hwparams, &period_size, NULL), |
| 201 | "failed to get period size")) |
| 202 | return false; |
| 203 | |