Understood. But under a data race condition, OVERWRITE_OLD can occur on one channel and not the other. Suppose that the fifo[0] and fifo[1] was already full, here is race condition example:
- ReceivePacketsLoop() writes to fifo[0] and drops old samples
- User reads fifo[0] and fifo[1], now both fifos have space
- ReceivePacketsLoop() writes to fifo[1] without any drops
Now each fifo has the same number of samples, but the samples and timestamps are out of alignment. Software has to realign the samples by dropping samples from one fifo based on the timestamp until alignment is achieved.
I guess ideally, OVERWRITE_OLD would cause identical behaviour on each fifo. Just wanted to make you aware of the race. Because even with a solution for SoapyLMS, a user of the C API may have to to implement similar logic to recover after fifo overflow. Just my 0.02$