[alsa-devel] ALSA Underrun / Silence playback

Irfan shaikh irfan.shaikh at sasken.com
Mon Dec 5 07:40:10 CET 2011


Hello devel,

          I am trying to implement s/w params for ALSA playback device 
such that there is SILENCE playback for UNDERRUN (-32).
          To achieve above i used below s/w params API's. But still i 
observe UNDERRUN in my AUDIO Playback.
          Please correct me if i am mising somenting.
{When i do get boundry, i get some weird value 1572864000. Thus i tried 
to use alsa buffer size for threshold}

/*************************************************************************************/ 

   if (snd_pcm_sw_params_get_boundary (alsaParams->p_swparams, 
&boundary) < 0)
         {
                 printf ("Could not gete snd_pcm_sw_params_get_boundary");
                 return NULL;
         }

//      threshold = boundary;
         threshold = alsaParams->periodsize * alsaParams->no_of_periods;

         if (snd_pcm_sw_params_set_stop_threshold 
(alsaParams->pcm_handle, alsaParams->p_swparams, threshold) < 0)
         {
                 printf("Could not gete snd_pcm_sw_params_get_boundary");
                 return NULL;
         }

         if (snd_pcm_sw_params_set_silence_threshold 
(alsaParams->pcm_handle, alsaParams->p_swparams, 0) < 0 ||
                         snd_pcm_sw_params_set_silence_size 
(alsaParams->pcm_handle, alsaParams->p_swparams, boundary) < 0)      /* 
play silence on XRUN */
         {
                 printf("Could not set silence params");
                 return NULL;
         }
/*************************************************************************************/

Thanks in advance !!

Regards,



More information about the Alsa-devel mailing list