This is the most simple base class for audio sources that only requires subclasses to implement a set of simple functions:
* `open()` :Open
the device. * `prepare()` :Configure
the device with the specified format. * `read()`
:Read
samples from the device. * `reset()` :Unblock
reads and flush the device. * `delay()` :Get
the
number of samples in the device but not yet read. * `unprepare()` :Undo
operations done by prepare. * `close()` :Close
the device.
All scheduling of samples and timestamps is done in this base class together with BaseSrc using a default implementation of a RingBuffer that uses threads.