Decoding: use fds instead of channels, since we already do buffering internally.