From 00b0ae0be6bbb415124adfc67de2a2ee2618066a Mon Sep 17 00:00:00 2001 From: Alexandre Savard <alexandre.savard@savoirfairelinux.net> Date: Fri, 23 Oct 2009 14:05:55 -0400 Subject: [PATCH] [#2333] Use pulseaudio ADJUST_LATENCY flag and ALSA RT-SCHEDULING --- .../src/audio/pulseaudio/audiostream.cpp | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/sflphone-common/src/audio/pulseaudio/audiostream.cpp b/sflphone-common/src/audio/pulseaudio/audiostream.cpp index 87bc28a457..f3a1f3bb0e 100644 --- a/sflphone-common/src/audio/pulseaudio/audiostream.cpp +++ b/sflphone-common/src/audio/pulseaudio/audiostream.cpp @@ -184,28 +184,37 @@ AudioStream::createStream (pa_context* c) // parameters are defined as number of bytes // 2048 bytes (1024 int16) is 20 ms at 44100 Hz if (_streamType == PLAYBACK_STREAM) { + /* + attributes->maxlength = (uint32_t) -1; + attributes->tlength = 1024; + attributes->prebuf = (uint32_t) -1; + attributes->minreq = (uint32_t) -1; + attributes->fragsize = (uint32_t) -1; + */ + attributes->maxlength = 88200; - attributes->tlength = 22050; - attributes->prebuf = 0; // Pulseaudio will not start if prebuffering is not reached - attributes->minreq = 0; // The server side playback framesize - attributes->fragsize = 11025; // Fragment size at wich we receive an interupt + attributes->tlength = 44100; + attributes->prebuf = 4096; + attributes->minreq = 2048; + attributes->fragsize = 4096; + // pa_stream_connect_playback( s , NULL , attributes, PA_STREAM_NOFLAGS, &_volume, NULL); // pa_stream_connect_playback (s , NULL , attributes, PA_STREAM_START_CORKED, &_volume, NULL); - pa_stream_connect_playback( s , NULL , attributes, PA_STREAM_INTERPOLATE_TIMING, &_volume, NULL); + pa_stream_connect_playback( s , NULL , attributes, PA_STREAM_ADJUST_LATENCY, &_volume, NULL); } else if (_streamType == CAPTURE_STREAM) { // attributes->maxlength = 66500; // attributes->fragsize = (uint32_t)-1; - attributes->maxlength = 88200; - attributes->tlength = 22050; - attributes->prebuf = 0; - attributes->minreq = 0; - attributes->fragsize = 11025; + attributes->maxlength = (uint32_t) -1; + attributes->tlength = (uint32_t) -1; + attributes->prebuf = (uint32_t) -1; + attributes->minreq = (uint32_t) -1; + attributes->fragsize = 1024; // pa_stream_connect_record (s , NULL , attributes , PA_STREAM_START_CORKED); // pa_stream_connect_record( s , NULL , attributes , PA_STREAM_INTERPOLATE_TIMING ); - pa_stream_connect_record( s, NULL, attributes, PA_STREAM_INTERPOLATE_TIMING); + pa_stream_connect_record( s, NULL, attributes, PA_STREAM_ADJUST_LATENCY); } else if (_streamType == UPLOAD_STREAM) { pa_stream_connect_upload (s , 1024); } else { -- GitLab