aboutsummaryrefslogtreecommitdiffstats
path: root/libavdevice
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2022-06-11 19:59:32 +0200
committerMarton Balint <cus@passwd.hu>2022-06-16 21:28:20 +0200
commitb67ca8a7a5f443de5eacac9ed4c5d94dfe685a5b (patch)
treeeab09933cb2a82631aaf59a3e7296ce0f7a7db45 /libavdevice
parentb83032899af3fa355f94a7d77a0334fb56e1d919 (diff)
downloadffmpeg-b67ca8a7a5f443de5eacac9ed4c5d94dfe685a5b.tar.gz
avdevice/pulse_audio_dec: reduce default fragment size
Reduces default fragment size from the pulse audio default of 2 sec to 50 ms. This also has an effect on the size of the returned frames, which will be around 50 ms as well, making timestamps more accurate. This should fix the regression in ticket #9776. Pulseaudio timestamps for monitor sources are still pretty inaccurate for me, but I don't see how else should we query latencies from the library. Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavdevice')
-rw-r--r--libavdevice/pulse_audio_dec.c7
1 files changed, 6 insertions, 1 deletions
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;