Lines Matching refs:pcm_handle
51 static int set_format(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, pa_sample_format_t *f) {
88 pa_assert(pcm_handle);
92 if ((ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format_trans[*f])) >= 0)
122 if ((ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format_trans[*f])) >= 0)
134 if ((ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format_trans[*f])) >= 0)
145 static int set_period_size(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, snd_pcm_uframes_t size) {
149 pa_assert(pcm_handle);
154 if (snd_pcm_hw_params_set_period_size_near(pcm_handle, hwparams, &s, &d) < 0) {
157 if (snd_pcm_hw_params_set_period_size_near(pcm_handle, hwparams, &s, &d) < 0) {
160 if ((ret = snd_pcm_hw_params_set_period_size_near(pcm_handle, hwparams, &s, &d)) < 0) {
170 static int set_buffer_size(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, snd_pcm_uframes_t size) {
173 pa_assert(pcm_handle);
176 if ((ret = snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, &size)) < 0) {
184 static void check_access(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, bool use_mmap) {
185 if ((use_mmap && !snd_pcm_hw_params_test_access(pcm_handle, hwparams, SND_PCM_ACCESS_MMAP_INTERLEAVED)) ||
186 !snd_pcm_hw_params_test_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED))
189 if ((use_mmap && !snd_pcm_hw_params_test_access(pcm_handle, hwparams, SND_PCM_ACCESS_MMAP_NONINTERLEAVED)) ||
190 !snd_pcm_hw_params_test_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_NONINTERLEAVED))
192 else if (use_mmap && !snd_pcm_hw_params_test_access(pcm_handle, hwparams, SND_PCM_ACCESS_MMAP_COMPLEX)) {
201 snd_pcm_t *pcm_handle,
219 pa_assert(pcm_handle);
225 if ((ret = snd_pcm_hw_params_any(pcm_handle, hwparams)) < 0) {
230 if ((ret = snd_pcm_hw_params_set_rate_resample(pcm_handle, hwparams, 0)) < 0) {
237 if (snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_MMAP_INTERLEAVED) < 0) {
241 if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
243 check_access(pcm_handle, hwparams, true);
250 } else if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
252 check_access(pcm_handle, hwparams, false);
259 if (!pa_alsa_pcm_is_hw(pcm_handle))
269 if (snd_pcm_info(pcm_handle, pcm_info) == 0 &&
291 if ((ret = snd_pcm_hw_params_set_period_wakeup(pcm_handle, hwparams, false)) < 0)
301 if ((ret = set_format(pcm_handle, hwparams, &_ss.format)) < 0)
304 if ((ret = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &_ss.rate, NULL)) < 0) {
314 if ((ret = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, _ss.channels)) < 0) {
321 if ((ret = snd_pcm_hw_params_set_channels_near(pcm_handle, hwparams, &c)) < 0) {
354 if (set_buffer_size(pcm_handle, hwparams_copy, _buffer_size) >= 0 &&
355 set_period_size(pcm_handle, hwparams_copy, _period_size) >= 0 &&
356 snd_pcm_hw_params(pcm_handle, hwparams_copy) >= 0) {
363 if (set_period_size(pcm_handle, hwparams_copy, _period_size) >= 0 &&
364 set_buffer_size(pcm_handle, hwparams_copy, _buffer_size) >= 0 &&
365 snd_pcm_hw_params(pcm_handle, hwparams_copy) >= 0) {
375 if (set_buffer_size(pcm_handle, hwparams_copy, _buffer_size) >= 0 &&
376 snd_pcm_hw_params(pcm_handle, hwparams_copy) >= 0) {
386 if (set_period_size(pcm_handle, hwparams_copy, _period_size) >= 0 &&
387 snd_pcm_hw_params(pcm_handle, hwparams_copy) >= 0) {
397 if ((ret = snd_pcm_hw_params(pcm_handle, hwparams)) < 0) {
405 pa_log_info("Device %s doesn't support %u Hz, changed to %u Hz.", snd_pcm_name(pcm_handle), ss->rate, _ss.rate);
408 pa_log_info("Device %s doesn't support %u channels, changed to %u.", snd_pcm_name(pcm_handle), ss->channels, _ss.channels);
411 pa_log_info("Device %s doesn't support sample format %s, changed to %s.", snd_pcm_name(pcm_handle), pa_sample_format_to_string(ss->format), pa_sample_format_to_string(_ss.format));
413 if ((ret = snd_pcm_hw_params_current(pcm_handle, hwparams)) < 0) {
428 snd_pcm_hw_params_get_period_wakeup(pcm_handle, hwparams, &no_wakeup);
529 snd_pcm_t *pcm_handle;
552 pcm_handle = pa_alsa_open_by_device_id_mapping(
565 if (pcm_handle) {
569 return pcm_handle;
579 pcm_handle = pa_alsa_open_by_device_id_mapping(
592 if (pcm_handle) {
596 return pcm_handle;
603 pcm_handle = pa_alsa_open_by_device_string(
617 if (pcm_handle && mapping)
620 return pcm_handle;
636 snd_pcm_t *pcm_handle;
651 pcm_handle = pa_alsa_open_by_template(
665 if (!pcm_handle)
672 return pcm_handle;
690 snd_pcm_t *pcm_handle;
702 if ((err = snd_pcm_open(&pcm_handle, d, mode,
714 pcm_handle,
726 snd_pcm_close(pcm_handle);
740 snd_pcm_close(pcm_handle);
745 snd_pcm_close(pcm_handle);
753 snd_pcm_close(pcm_handle);
765 return pcm_handle;
788 snd_pcm_t *pcm_handle;
796 pcm_handle = pa_alsa_open_by_device_string(
811 if (pcm_handle)
812 return pcm_handle;