pulsesrc: guard fragment size with a lower limit based on latency-time
In case that the pulse daemon runs the source device at a relatively low fixed fragment size compared to the requested latency-time, configure the ring buffer segsize to the largest integer multiple of the fragment size that is still smaller than or equal to the requested latency-time. Fixes bug #597463.
This commit is contained in:
parent
86b8935b07
commit
15c6175044
@ -1014,8 +1014,11 @@ gst_pulsesrc_prepare (GstAudioSrc * asrc, GstRingBufferSpec * spec)
|
||||
GST_INFO_OBJECT (pulsesrc, "fragsize: %d (wanted %d)",
|
||||
actual->fragsize, wanted.fragsize);
|
||||
|
||||
/* adjust latency again */
|
||||
spec->segsize = actual->fragsize;
|
||||
if (actual->fragsize >= wanted.fragsize) {
|
||||
spec->segsize = actual->fragsize;
|
||||
} else {
|
||||
spec->segsize = actual->fragsize * (wanted.fragsize / actual->fragsize);
|
||||
}
|
||||
spec->segtotal = actual->maxlength / spec->segsize;
|
||||
|
||||
pa_threaded_mainloop_unlock (pulsesrc->mainloop);
|
||||
|
Loading…
x
Reference in New Issue
Block a user