low-latency pulseaudio pipeline using --input-buffer #4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
sox -t pulseaudio
depends upon pulseaudio buffering.By default buffer size computation leads to (very) significant latencies (up to 2 sec)
A confidential solution for the happy fews is to rely on the PULSE_LATENCY_MSEC environment variable.
This commit publicly exposes pulseaudio in/out buffers by binding them to
sox --[input]-buffer
options.With
sox --input-buffer=40000 -t pulseaudio default -t pulseaudio default
you now get a low-latency pipeline.Notes:
Since --input-buffer defaults to 0, the default (high-latency) behavior stays unchanged
(if PULSE_LATENCY_MSEC isn't set)
Since --buffer default to 8192 and can't be set to 0, it'll now have priority over
PULSE_LATENCY_MSEC (for the playback stream)