summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/indevs.texi4
-rw-r--r--libavdevice/pulse_audio_dec.c7
2 files changed, 8 insertions, 3 deletions
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;