Currently ARC++ audio latency meets the low latency CDD (<50 ms). However we want to further lower it down. There are many things that can be done to reduce the latency like using a smaller buffer. But eliminating the buffer would make the most difference.
There's a layer of buffering in ARC++ audio HAL. The AudioFlinger in Android calls audio HAL's blocking write() while CRAS uses callback to notify a write is available.
The plan is to add a blocking API to libcras and switch audio HAL to use this new blocking API. Then it could act as a thin wrapper without the buffering. The callback API will be kept as is, the addition of the blocking API should not affect existing CRAS clients.
Comment 1 by chinyue@chromium.org
, Mar 8 2017