[Portaudio] Do I need to care about overflow/underflow when using the read/write API?
gineera at aspect135.co.uk
Sun Mar 20 14:24:19 EDT 2016
Thought I would add a couple of comments as a double-reply, mainly from the
On Sunday 20 March 2016 03:46, Spencer Russell wrote:
> So I guess the question probably comes down to:
> When PortAudio experiences an underflow, does it feed zeros to the
> underlying Host API, or does the Host API “know” about the underflow? Based
> on my experience lurking on this list I’m guessing the answer is “it
> depends on the host API”.
It works the other way round - the underflow occurs in the host API audio
system when Portaudio/your-app doesn't deliver samples in time, and is
indicated *to* Portaudio by the host API. Bear in mind Portaudio is
essentially a consistent wrapper around host audio interfaces.
> If the underflow is passed to the Host API, in practice are there APIs in
> the wild that react poorly, or is it OK?
Certainly on Linux-Alsa when an underrun occurs the audio system stops. When
Portaudio is notified it will attempt to restart the stream, but this can
take a significant amount of time, in some cases that have been reported.
On Sunday 20 March 2016 04:36, Phil Burk wrote:
> You should avoid underflows and overflows. Those are errors and should
> never be allowed to happen. If you don't have any signal then just write
> silence (zeros) to keep the stream from underflowing. Or, if you don't plan
> on doing any audio for a few minutes then you could just shut down the
> stream and restart it when you are ready.
Agree completely - don't let underflows and overflows happen; feed zero data
somehow otherwise it will perform very poorly.
More information about the Portaudio