LookingGlass/common
Chris Spencer 599fdd6ffd [common] ringbuffer: add unbounded mode
In unbounded mode, the read and write pointers are free to move
independently of one another. This is useful where the input and output
streams are progressing at the same rate on average, and we want to keep
the latency stable in the event than an underrun or overrun occurs.

If an underrun occurs (i.e., there is not enough data in the buffer to
satisfy a read request), the missing values with be filled with zeros. When
the writer catches up, the same number of values will be skipped from the
input.

If an overrun occurs (i.e., there is not enough free space in the buffer to
satisfy a write request), excess values will be discarded. When the reader
catches up, the same number of values will be zeroed in the output.

Unbounded mode is currently unused since our audio input and output
streams are not synchronised. This will be implemented in a later commit.

Also reimplemented as a lock-free queue which is safer for use in audio
device callbacks.
2022-01-27 18:03:11 +11:00
..
cmake [common] cmake: correctly link static libbfd.a 2021-03-03 16:37:34 +11:00
include/common [common] ringbuffer: add unbounded mode 2022-01-27 18:03:11 +11:00
src [common] ringbuffer: add unbounded mode 2022-01-27 18:03:11 +11:00
CMakeLists.txt [client/common] move ll from the client into the common code module 2022-01-12 12:22:18 +11:00