@@ -186,7 +186,7 @@ AudioLayer::playSamples(void* buffer, int toCopy)
int
AudioLayer::putUrgent(void*buffer,inttoCopy)
{
snd_pcm_avail_update(_PlaybackHandle);
//snd_pcm_avail_update( _PlaybackHandle );
fillHWBuffer();
if(_PlaybackHandle)
{
...
...
@@ -345,7 +345,6 @@ AudioLayer::open_device(std::string pcm_p, std::string pcm_c, int flag)
if(err=snd_pcm_hw_params_set_rate_near(_PlaybackHandle,hwparams,&rate_out,&dir)<0)_debugAlsa(" Cannot set sample rate (%s)\n",snd_strerror(err));
if(err=snd_pcm_hw_params_set_channels(_PlaybackHandle,hwparams,1)<0)_debugAlsa(" Cannot set channel count (%s)\n",snd_strerror(err));
if(err=snd_pcm_hw_params_set_period_size_near(_PlaybackHandle,hwparams,&period_size_out,&dir)<0)_debugAlsa(" Cannot set period size (%s)\n",snd_strerror(err));
if(err=snd_pcm_hw_params_set_period_time_min(_PlaybackHandle,hwparams,&period_time,&dir)<0)_debugAlsa(" Cannot set period time (%s)\n",snd_strerror(err));
if(err=snd_pcm_hw_params_set_buffer_size_near(_PlaybackHandle,hwparams,&buffer_size_out)<0)_debugAlsa(" Cannot set buffer size (%s)\n",snd_strerror(err));
if(err=snd_pcm_hw_params(_PlaybackHandle,hwparams)<0)_debugAlsa(" Cannot set hw parameters (%s)\n",snd_strerror(err));
snd_pcm_hw_params_free(hwparams);
...
...
@@ -354,16 +353,19 @@ AudioLayer::open_device(std::string pcm_p, std::string pcm_c, int flag)
if(err=snd_pcm_sw_params_set_avail_min(_PlaybackHandle,swparams,val)<0)_debugAlsa(" Cannot set min avail (%s)\n",snd_strerror(err));
if(err=snd_pcm_sw_params_set_silence_threshold(_PlaybackHandle,swparams,val)<0)_debugAlsa(" Cannot set silence threshold (%s)\n",snd_strerror(err));
if(err=snd_pcm_sw_params(_PlaybackHandle,swparams)<0)_debugAlsa(" Cannot set sw parameters (%s)\n",snd_strerror(err));
snd_pcm_sw_params_free(swparams);
if(err=snd_async_add_pcm_handler(&_AsyncHandler,_PlaybackHandle,AlsaCallBack,this)<0)_debugAlsa(" Unable to install the async callback handler (%s)\n",snd_strerror(err));
deviceClosed=false;
}
fillHWBuffer();
_talk=false;
returntrue;
}
...
...
@@ -389,8 +391,8 @@ AudioLayer::write(void* buffer, int length)
}
elseif(bytes==-EPIPE)
{
//_debugAlsa(" %d Alsa error from writei (%s)\n", bytes, snd_strerror(bytes));
snd_pcm_prepare(_PlaybackHandle);
_debugAlsa(" %d Alsa error from writei (%s)\n",bytes,snd_strerror(bytes));
handle_xrun_playback();
snd_pcm_writei(_PlaybackHandle,buffer,frames);
}
elseif(bytes==-ESTRPIPE)
...
...
@@ -420,7 +422,7 @@ AudioLayer::read( void* buffer, int toCopy)