diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 5e3fb98..08fe29b 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -105,11 +105,7 @@ if( WITH_ALSA ) if( ALSA_FOUND ) - # there is support only for ALSA 1.x - set( HAVE_LIBASOUND2 1 ) - set( ALSA_PCM_OLD_SW_PARAMS_API 1 ) - set( ALSA_PCM_OLD_HW_PARAMS_API 1 ) check_include_file( "alsa/asoundlib.h" HAVE_ALSA_ASOUNDLIB_H ) if( NOT HAVE_ALSA_ASOUNDLIB_H ) diff --git a/config.h.cmake b/config.h.cmake index 7c2f7c8..8527cdc 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -35,8 +35,6 @@ #cmakedefine HAVE_LIBASOUND2 1 #cmakedefine HAVE_ALSA_ASOUNDLIB_H 1 #cmakedefine HAVE_SND_PCM_RESUME 1 -#cmakedefine ALSA_PCM_OLD_SW_PARAMS_API 1 -#cmakedefine ALSA_PCM_OLD_HW_PARAMS_API 1 #cmakedefine HAVE_SYS_SOUNDCARD_H 1 #cmakedefine HAVE_LIBPTHREAD 1 diff --git a/flow/audioioalsa9.cpp b/flow/audioioalsa9.cpp index 1c8b3a5..9162d41 100644 --- a/flow/audioioalsa9.cpp +++ b/flow/audioioalsa9.cpp @@ -73,7 +73,8 @@ protected: snd_pcm_t *m_pcm_playback; snd_pcm_t *m_pcm_capture; snd_pcm_format_t m_format; - int m_period_size, m_periods; + snd_pcm_uframes_t m_period_size; + unsigned m_periods; void startIO(); int setPcmParams(snd_pcm_t *pcm); @@ -540,7 +541,11 @@ int AudioIOALSA::setPcmParams(snd_pcm_t *pcm) return 1; } - unsigned int rate = snd_pcm_hw_params_set_rate_near(pcm, hw, _samplingRate, 0); + unsigned rate = _samplingRate; + if (snd_pcm_hw_params_set_rate_near(pcm, hw, &rate, 0) < 0) { + _error = "Unable to set sampling rate!"; + return 1; + } const unsigned int tolerance = _samplingRate/10+1000; if (abs((int)rate - (int)_samplingRate) > (int)tolerance) { _error = "Can't set requested sampling rate!"; @@ -562,12 +567,12 @@ int AudioIOALSA::setPcmParams(snd_pcm_t *pcm) m_period_size <<= 1; if (_channels > 1) m_period_size /= _channels; - if ((m_period_size = snd_pcm_hw_params_set_period_size_near(pcm, hw, m_period_size, 0)) < 0) { + if (snd_pcm_hw_params_set_period_size_near(pcm, hw, &m_period_size, 0) < 0) { _error = "Unable to set period size!"; return 1; } m_periods = _fragmentCount; - if ((m_periods = snd_pcm_hw_params_set_periods_near(pcm, hw, m_periods, 0)) < 0) { + if (snd_pcm_hw_params_set_periods_near(pcm, hw, &m_periods, 0) < 0) { _error = "Unable to set periods!"; return 1; }