diff options
-rw-r--r-- | media/audio/linux/alsa_wrapper.cc | 73 |
1 files changed, 7 insertions, 66 deletions
diff --git a/media/audio/linux/alsa_wrapper.cc b/media/audio/linux/alsa_wrapper.cc index 67331b4..c1ce359 100644 --- a/media/audio/linux/alsa_wrapper.cc +++ b/media/audio/linux/alsa_wrapper.cc @@ -71,76 +71,17 @@ const char* AlsaWrapper::PcmName(snd_pcm_t* handle) { return snd_pcm_name(handle); } -int AlsaWrapper::ConfigureHwParams(snd_pcm_t* handle, - snd_pcm_hw_params_t* hw_params, - snd_pcm_format_t format, - snd_pcm_access_t access, - unsigned int channels, - unsigned int rate, - int soft_resample, - unsigned int latency) { - int err = 0; - if ((err = snd_pcm_hw_params_any(handle, hw_params)) < 0) - return err; - - if ((err = snd_pcm_hw_params_set_rate_resample(handle, hw_params, - soft_resample)) < 0) { - return err; - } - - if ((err = snd_pcm_hw_params_set_format(handle, hw_params, format)) < 0) - return err; - - int dir = 0; - unsigned new_rate = rate; - if ((err = snd_pcm_hw_params_set_rate_near(handle, hw_params, - &new_rate, &dir)) < 0) { - return err; - } - - if ((err = snd_pcm_hw_params_set_access(handle, hw_params, access)) < 0) - return err; - - if ((err = snd_pcm_hw_params_set_channels(handle, hw_params, channels)) < 0) - return err; - - unsigned buffer_time = latency; - if (buffer_time == 0) { - if ((err = snd_pcm_hw_params_get_buffer_time_max(hw_params, - &buffer_time, 0)) < 0) { - return err; - } - if (buffer_time > 500000) - buffer_time = 500000; - } - - unsigned period_time = buffer_time / 4; - if ((err = snd_pcm_hw_params_set_period_time_near(handle, hw_params, - &period_time, 0)) < 0) { - return err; - } - - err = snd_pcm_hw_params_set_buffer_time_near(handle, hw_params, - &buffer_time, 0); - return err; -} - int AlsaWrapper::PcmSetParams(snd_pcm_t* handle, snd_pcm_format_t format, snd_pcm_access_t access, unsigned int channels, unsigned int rate, int soft_resample, unsigned int latency) { - int err = 0; - snd_pcm_hw_params_t* hw_params; - if ((err = snd_pcm_hw_params_malloc(&hw_params)) < 0) - return err; - - if ((err = ConfigureHwParams(handle, hw_params, format, access, channels, - rate, soft_resample, latency)) >= 0) { - err = snd_pcm_hw_params(handle, hw_params); - } - - snd_pcm_hw_params_free(hw_params); - return err; + return snd_pcm_set_params(handle, + format, + access, + channels, + rate, + soft_resample, + latency); } int AlsaWrapper::PcmGetParams(snd_pcm_t* handle, snd_pcm_uframes_t* buffer_size, |