Discuss echo reference feature

Song, Gongjun gongjun.song at intel.com
Tue Aug 2 08:00:11 CEST 2022


Hi all,

Could you please give me some suggestions on how to support loop-back in embedded DSP FW? 
 ------------------------------------
|     CPU: SoC with embedded DSP     |         -------------------------
|                                    |  dai   |                         |
| PCM0P --> volume --> demux --> SSP |------> | codec: speaker amplifer |
|                        |           |        |                         |
| PCM6C <----------------+           |         -------------------------
|                                    |
 ------------------------------------
As the diagram shows, when using the speaker to play audio data (PCM0P), in addition to transferring the audio data to the codec, I also need to transfer this audio data as a reference stream (PCM6C) to the user space for AEC (Automatic Echo Cancellation).

The speaker amplifier doesn’t have the capability to send feedback data to SoC over SSP (Synchronous Serial Protocol, I2S/PCM interface) port. So, it’s the demux widget in the embedded DSP firmware (Sound Open Firmware) that sends a copy of playback data to PCM6C as the feedback for user space to implement AEC. 

When using the above topology file to verify functionality (playing audio data, and starting to record data at the same time), I get the following error:
[  303.956529]  Echo-Ref: ASoC: prepare FE Echo-Ref 
[  303.956531]  Echo-Ref: ASoC: no backend DAIs enabled for Echo-Ref 
[  303.956532]  Echo-Ref: ASoC: dpcm_fe_dai_prepare() failed (-22) 
[  303.957215]  Echo-Ref: ASoC: hw_free FE Echo-Ref 
From the log we can see that the above error is caused by PCM6C not having backend dais (Echo-Ref is the name of the PCM6C). 

Could you give me some suggestions to implement the above case in the kernel and topology? 

Thanks,
Gongjun


More information about the Alsa-devel mailing list