Depending on if its used for input or output audio, it can be used in two
different ways, so it has to expose its input buffer to minimise copy (when the
input of the resampler is output audio, directly written inside an audio
callback), and to be able to expose an internal buffer so that the output of
the resampling process can directly be passed to a callback.
When created, additional latency can be added to the pipeline so that multiple
resamplers of different filter length (=latency) can be synchronized.
The auto pointer frees in the dtor.
The auto array has a number of feature that are useful to work with real-time
streaming audio: push back and pop front (because we're dealing with temporal
data), insert silence, auto resize, no compaction when it's resized down, bound
check, direct internal access to work nicely with other APIs.