diff --git a/src/audio/audiolayer.cpp b/src/audio/audiolayer.cpp index 018a61a2c8ddfb81d70f7ae5a07b238dfcb1ecb3..a0db12cbb3d747c3405ecd0a05fc0c22c8555154 100644 --- a/src/audio/audiolayer.cpp +++ b/src/audio/audiolayer.cpp @@ -299,17 +299,16 @@ AudioLayer::isCaptureActive(void) { AudioLayer::open_device(std::string pcm_p, std::string pcm_c, int flag) { int err; - snd_pcm_hw_params_t* hwParams; + snd_pcm_hw_params_t* hwParams = NULL; + snd_pcm_sw_params_t *swparams = NULL; unsigned int rate_in = getSampleRate(); unsigned int rate_out = getSampleRate(); int dir = 0; snd_pcm_uframes_t period_size_in = getFrameSize() * getSampleRate() / 1000 ; snd_pcm_uframes_t buffer_size_in = 4096; snd_pcm_uframes_t threshold = getFrameSize() * getSampleRate() / 1000 * 2 ; - snd_pcm_uframes_t period_size_out = 1024; //getFrameSize() * getSampleRate() / 1000 * 2 ;// 1024 ; - unsigned int period_time = 20; - snd_pcm_uframes_t buffer_size_out = period_size_out * 4 ; - snd_pcm_sw_params_t *swparams = NULL; + snd_pcm_uframes_t period_size_out = 1024 ; + snd_pcm_uframes_t buffer_size_out = period_size_out * 8 ; if(flag == SFL_PCM_BOTH || flag == SFL_PCM_CAPTURE) { @@ -388,9 +387,9 @@ AudioLayer::open_device(std::string pcm_p, std::string pcm_c, int flag) int AudioLayer::write(void* buffer, int length) { - if(snd_pcm_state( _PlaybackHandle ) == SND_PCM_STATE_XRUN) - handle_xrun_playback(); - _debugAlsa("avail = %d - toWrite = %d\n" , snd_pcm_avail_update( _PlaybackHandle ) , length / 2); + //if(snd_pcm_state( _PlaybackHandle ) == SND_PCM_STATE_XRUN) + //handle_xrun_playback(); + //_debugAlsa("avail = %d - toWrite = %d\n" , snd_pcm_avail_update( _PlaybackHandle ) , length / 2); snd_pcm_uframes_t frames = snd_pcm_bytes_to_frames( _PlaybackHandle, length); int err = snd_pcm_writei( _PlaybackHandle , buffer , frames ); @@ -413,9 +412,9 @@ AudioLayer::write(void* buffer, int length) break; } - /*if( err >=0 && err < frames ) - _debugAlsa("Short write - Frames remaining = %d\n", frames - err); - */ + if( err >=0 && err < frames ) + _debugAlsa("Short write : %d out of %d\n", err , frames); + return ( err > 0 )? err : 0 ; } diff --git a/src/audio/audiolayer.h b/src/audio/audiolayer.h index 65d8ca4bfb96aedace49947fe9cf934b01ec9c50..8cbbdaab73696ad66648e217b5fde830ef510574 100644 --- a/src/audio/audiolayer.h +++ b/src/audio/audiolayer.h @@ -289,13 +289,6 @@ class AudioLayer { snd_pcm_t* _PlaybackHandle; snd_pcm_t* _CaptureHandle; - /* - * Handles to manipulate capture and playback hardware configuration - * ALSA Library API - */ - snd_pcm_hw_params_t *_PlaybackHwParams; - snd_pcm_hw_params_t *_CaptureHwParams; - /* * Handle on asynchronous event */