Channel buffers now dynamically allocated and samples are processed in between buffer reads to be able to satisfy arbitrarily large requests.