Skip to content
Snippets Groups Projects
Commit 846f3814 authored by Alexandre Savard's avatar Alexandre Savard
Browse files

[#2333] Update playback audiostream parameters

parent 3d2a5409
No related branches found
No related tags found
No related merge requests found
...@@ -184,11 +184,11 @@ AudioStream::createStream (pa_context* c) ...@@ -184,11 +184,11 @@ AudioStream::createStream (pa_context* c)
// parameters are defined as number of bytes // parameters are defined as number of bytes
// 2048 bytes (1024 int16) is 20 ms at 44100 Hz // 2048 bytes (1024 int16) is 20 ms at 44100 Hz
if (_streamType == PLAYBACK_STREAM) { if (_streamType == PLAYBACK_STREAM) {
attributes->maxlength = 32000; attributes->maxlength = 64000;
attributes->tlength = 16000; attributes->tlength = 32000;
attributes->prebuf = 1024; attributes->prebuf = 4096; // Pulseaudio will not start if prebuffering is not reached
attributes->minreq = 512; attributes->minreq = 2048; // The server side playback framesize
attributes->fragsize = (uint32_t) -1; attributes->fragsize = 8192; // Fragment size at wich we receive an interupt
pa_stream_connect_playback( s , NULL , attributes, PA_STREAM_INTERPOLATE_TIMING, &_volume, NULL); pa_stream_connect_playback( s , NULL , attributes, PA_STREAM_INTERPOLATE_TIMING, &_volume, NULL);
// pa_stream_connect_playback (s , NULL , attributes, PA_STREAM_START_CORKED, &_volume, NULL); // pa_stream_connect_playback (s , NULL , attributes, PA_STREAM_START_CORKED, &_volume, NULL);
} else if (_streamType == CAPTURE_STREAM) { } else if (_streamType == CAPTURE_STREAM) {
...@@ -197,13 +197,14 @@ AudioStream::createStream (pa_context* c) ...@@ -197,13 +197,14 @@ AudioStream::createStream (pa_context* c)
// attributes->fragsize = (uint32_t)-1; // attributes->fragsize = (uint32_t)-1;
attributes->maxlength = 32000; attributes->maxlength = 32000;
attributes->tlength = 16000; attributes->tlength = (uint32_t)-1;
attributes->prebuf = 1024; attributes->prebuf = (uint32_t)-1;
attributes->minreq = 512; attributes->minreq = (uint32_t)-1;
attributes->fragsize = (uint32_t)-1; attributes->fragsize = (uint32_t)-1;
// pa_stream_connect_record (s , NULL , attributes , PA_STREAM_START_CORKED); // 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, NULL, PA_STREAM_INTERPOLATE_TIMING );
} else if (_streamType == UPLOAD_STREAM) { } else if (_streamType == UPLOAD_STREAM) {
pa_stream_connect_upload (s , 1024); pa_stream_connect_upload (s , 1024);
} else { } else {
......
...@@ -58,10 +58,11 @@ static void playback_underflow_callback (pa_stream* s, void* userdata UNUSED) ...@@ -58,10 +58,11 @@ static void playback_underflow_callback (pa_stream* s, void* userdata UNUSED)
{ {
_debug ("PulseLayer::Buffer Underflow\n"); _debug ("PulseLayer::Buffer Underflow\n");
SFLDataFormat* out = (SFLDataFormat*) pa_xmalloc (framesPerBuffer*sizeof(SFLDataFormat)); // fill in audio buffer twice the prebuffering value to restart playback
bzero (out, framesPerBuffer*sizeof(SFLDataFormat)); SFLDataFormat* out = (SFLDataFormat*) pa_xmalloc (framesPerBuffer*sizeof(SFLDataFormat)*2);
bzero (out, framesPerBuffer*sizeof(SFLDataFormat)*2);
pa_stream_write (s, out, framesPerBuffer*sizeof(SFLDataFormat), NULL, 0, PA_SEEK_RELATIVE); pa_stream_write (s, out, framesPerBuffer*sizeof(SFLDataFormat)*2, NULL, 0, PA_SEEK_RELATIVE);
pa_stream_trigger (s, NULL, NULL); pa_stream_trigger (s, NULL, NULL);
pa_xfree (out); pa_xfree (out);
...@@ -561,6 +562,7 @@ void PulseLayer::writeToSpeaker (void) ...@@ -561,6 +562,7 @@ void PulseLayer::writeToSpeaker (void)
} }
} }
_urgentRingBuffer.Discard(toGet); _urgentRingBuffer.Discard(toGet);
pa_xfree (out); pa_xfree (out);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment