The rate set by module loopback may exceed PA_RATE_MAX by 1%, therefore allow rates higher than PA_RATE_MAX in pa_sample_rate_valid(). --- src/pulse/sample.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pulse/sample.c b/src/pulse/sample.c index cb04254..ff77985 100644 --- a/src/pulse/sample.c +++ b/src/pulse/sample.c @@ -105,7 +105,10 @@ int pa_sample_format_valid(unsigned format) { } int pa_sample_rate_valid(uint32_t rate) { - return rate > 0 && rate <= PA_RATE_MAX; + /* The extra 1% is due to module-loopback: it temporarily sets + * a higher-than-nominal rate to get rid of excessive buffer + * latency */ + return rate > 0 && rate <= PA_RATE_MAX * 101 / 100; } int pa_channels_valid(uint8_t channels) { -- 2.10.1