Currently all SRs in and out use the same FIFO length. This means it needs to be sized for the worst case and consequently causes higher than needed latencies at lower output rates. Currently it gets sized by the app and passed in as a constant:
|
void asrc_task(chanend_t c_asrc_input, asrc_in_out_t *asrc_io, asynchronous_fifo_t *fifo, unsigned fifo_length){ |
We now have the figures (and equation) of how large it should be this could be optimised depending on SR to improve low rate group delay by quite a lot (35% or better).