CRAS: dsp_pipeline - Adds external dsp module interface

Adds the ext_dsp_module interface to represent the dynamic
stream level processing block applied after iodev's dsp.

WebRTC APM would like to utilize the floating point buffer
processed after device side software dsp. In order to save
buffer copy and int <-> float conversion work, appends the
ext_dsp_module to existing dsp pipeline to become a multiple
output pipeline.

This change extends the builtin sink module by allowing it be
connected to an ext_dsp_module and runs its process function
when data flows to sink.

For streams use WebRTC APM processing, they will get buffer
from the ext_dsp_module, and the rest of the streams will get
buffer from the sink module.

BUG=chromium:710465
TEST=unittest pass

Change-Id: If7fd88c42cceaad04dbda1c3d867df8933e72dec
Reviewed-on: https://chromium-review.googlesource.com/1018752
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
9 files changed