diff --git a/src/modules/module-protocol-pulse/defs.h b/src/modules/module-protocol-pulse/defs.h index d5b9ee73b..c2b458e19 100644 --- a/src/modules/module-protocol-pulse/defs.h +++ b/src/modules/module-protocol-pulse/defs.h @@ -42,6 +42,8 @@ #define MIN_BUFFERS 8u #define MAX_BUFFERS 64u +#define MIN_SAMPLES 24u + #define MAXLENGTH (4*1024*1024) /* 4MB */ #define DEFAULT_TLENGTH_MSEC 2000 /* 2s */ #define DEFAULT_PROCESS_MSEC 20 /* 20ms */ diff --git a/src/modules/module-protocol-pulse/pulse-server.c b/src/modules/module-protocol-pulse/pulse-server.c index 9edddc254..800fbd61a 100644 --- a/src/modules/module-protocol-pulse/pulse-server.c +++ b/src/modules/module-protocol-pulse/pulse-server.c @@ -905,6 +905,7 @@ static void fix_playback_buffer_attr(struct stream *s, struct buffer_attr *attr) m -= m % frame_size; attr->minreq = SPA_MIN(process, m); } + attr->minreq = SPA_MAX(attr->minreq, MIN_SAMPLES * frame_size); if (attr->tlength < attr->minreq+frame_size) attr->tlength = attr->minreq + frame_size; @@ -1146,6 +1147,8 @@ static void fix_record_buffer_attr(struct stream *s, struct buffer_attr *attr) attr->fragsize = usec_to_bytes_round_up(DEFAULT_FRAGSIZE_MSEC*1000, &s->ss); attr->fragsize -= attr->fragsize % frame_size; attr->fragsize = SPA_MAX(attr->fragsize, frame_size); + attr->fragsize = SPA_MAX(attr->fragsize, MIN_SAMPLES * frame_size); + if (attr->fragsize > attr->maxlength) attr->fragsize = attr->maxlength;