[pulseaudio-discuss] [PATCH] alsa-util: Reset hwparams_copy before the second try of buffer setup

Tanu Kaskinen tanu.kaskinen at linux.intel.com
Mon Mar 24 01:24:35 PDT 2014


On Fri, 2014-03-21 at 09:18 +0200, Peter Ujfalusi wrote:
> hwparams_copy needs to be reset (as it is also reset for the third and
> fourth try) before the second try.
> 
> If the reset is not done and the first try fails:
> D: [lt-pulseaudio] alsa-util.c: Maximum hw buffer size is 743 ms
> I: [lt-pulseaudio] alsa-util.c: snd_pcm_hw_params_set_buffer_size_near() failed: Invalid argument
> I: [lt-pulseaudio] alsa-util.c: snd_pcm_hw_params_set_period_size_near() failed: Invalid argument
> I: [lt-pulseaudio] alsa-util.c: snd_pcm_hw_params_set_buffer_size_near() failed: Invalid argument
> D: [lt-pulseaudio] alsa-util.c: Set only period size (to 1102 samples).
> 
> We have three failures and finally the fourth (only period size) succeed.
> 
> With this patch:
> D: [lt-pulseaudio] alsa-util.c: Maximum hw buffer size is 743 ms
> I: [lt-pulseaudio] alsa-util.c: snd_pcm_hw_params_set_buffer_size_near() failed: Invalid argument
> D: [lt-pulseaudio] alsa-util.c: Set period size first (to 1102 samples), buffer size second (to 4408 samples).
> 
> We only fail with the first try, the second (period followed by buffer) is
> fine.
> 
> 
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi at ti.com>
> ---
>  src/modules/alsa/alsa-util.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
> index dca1f2e4c54d..1ce2e16d5f0c 100644
> --- a/src/modules/alsa/alsa-util.c
> +++ b/src/modules/alsa/alsa-util.c
> @@ -327,6 +327,7 @@ int pa_alsa_set_hw_params(
>                  goto success;
>              }
>  
> +            snd_pcm_hw_params_copy(hwparams_copy, hwparams);
>              /* Second try: set period size first, followed by buffer size */
>              if (set_period_size(pcm_handle, hwparams_copy, _period_size) >= 0 &&
>                  set_buffer_size(pcm_handle, hwparams_copy, _buffer_size) >= 0 &&

Thanks! Applied.

-- 
Tanu



More information about the pulseaudio-discuss mailing list