Hi Mark, Takashi
On Thu, Aug 3, 2023 at 9:11 PM Shengjiu Wang shengjiu.wang@gmail.com wrote:
On Thu, Aug 3, 2023 at 1:28 AM Mark Brown broonie@kernel.org wrote:
On Wed, Aug 02, 2023 at 10:41:43PM +0800, Shengjiu Wang wrote:
Currently the ASRC in ALSA is to connect to another I2S device as a sound card. But we'd like to the ASRC can be used by user space directly that user space application can get the output after conversion from ASRC.
That sort of use case would be handled via DPCM at the minute, though persuading it to connect two front ends together might be fun (which is the sort of reason why we want to push digital information down into DAPM and make everything a component).
Thanks.
ASRC M2M case needs to run as fast as possible, no sync clock control. If use sound card to handle ASRC M2M case, the user application should be aplay/arecord, then we need to consider xrun issue, buffer may timeout, sync between aplay and arecord, these should't be considered by pure memory to memory operation.
DPCM may achitect all the audio things in components and sound card, it is good. but for the M2M case, it is complcated. not sure it is doable.
Beside the concern in previous mail,
DPCM needs to separate ASRC to be two substreams (playback and capture).
But the ASRC needs the sample rate & format of input and output first then start conversion.
If the playback controls the rate & format of input, capture substream controls the rate & format of output, as a result one substream needs to get information(dma buffer address, size... rate, format) from another substream, then start both substreams in the last substream. How to synchronize these two substreams is a problem. One stream can be released but another stream doesn't know .
So I don't think it is a good idea to use DPCM for pure M2M case.
So can I persuade you to consider the V4L2 solution?
Best regards Wang Shengjiu