diff --git a/doc/indevs.texi b/doc/indevs.texi index 9d8020311a..1141da26d1 100644 --- a/doc/indevs.texi +++ b/doc/indevs.texi @@ -1292,8 +1292,8 @@ Specify the channels in use, by default 2 (stereo) is set. Specify the number of bytes per frame, by default it is set to 1024. @item fragment_size -Specify the minimal buffering fragment in PulseAudio, it will affect the -audio latency. By default it is unset. +Specify the size in bytes of the minimal buffering fragment in PulseAudio, it +will affect the audio latency. By default it is set to 50 ms amount of data. @item wallclock Set the initial PTS using the current time. Default is 1. diff --git a/libavdevice/pulse_audio_dec.c b/libavdevice/pulse_audio_dec.c index ed094fd250..2355b91776 100644 --- a/libavdevice/pulse_audio_dec.c +++ b/libavdevice/pulse_audio_dec.c @@ -162,7 +162,12 @@ static av_cold int pulse_read_header(AVFormatContext *s) return AVERROR(ENOMEM); } - attr.fragsize = pd->fragment_size; + if (pd->fragment_size == -1) { + // 50 ms fragments/latency by default seem good enough + attr.fragsize = pa_frame_size(&ss) * (pd->sample_rate / 20); + } else { + attr.fragsize = pd->fragment_size; + } if (s->url[0] != '\0' && strcmp(s->url, "default")) device = s->url;