Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] Add virtual DAI #9349

Open
dbaluta opened this issue Aug 7, 2024 · 2 comments
Open

[FEATURE] Add virtual DAI #9349

dbaluta opened this issue Aug 7, 2024 · 2 comments
Assignees
Labels
enhancement New feature or request

Comments

@dbaluta
Copy link
Collaborator

dbaluta commented Aug 7, 2024

Is your feature request related to a problem? Please describe.

We want to have a Virtual DAI for two reasons:

  • debugging and rapid prototyping. We want to be able to create a quick audio pipeline without using a real DAI device.
  • first step in implementing a software loopback pipeline that will help implement a memory to memory processing pipeleline

Describe the solution you'd like

The DAI should have two directions:

  • playback -> just get the data from source and do 'consume' it. Similar with /dev/null.
  • capture -> generate data (zeroes or some patterns) and send it to sink. Similar with /dev/zero or /dev/urandom

Additional context

End goal would be to use this Virtual DAI to implement memory to memory processing. See Compress API interface discussion here:
https://lore.kernel.org/all/CAA+D8APHT8-wsKjqbkP+0gEYXWRFfpNuSpjAQ6Uf_RxZzNQT-g@mail.gmail.com/T/

Cc: @AnneOnciulescu

@dbaluta dbaluta added the enhancement New feature or request label Aug 7, 2024
@dbaluta dbaluta self-assigned this Aug 7, 2024
@plbossart
Copy link
Member

It would make sense indeed to have a 'Null' DAI similar to the 'Null' sink/source in PulseAudio, i.e. an entity that can consume data (playback) or generate data (capture) based on a timer. The loopback could be added. This would handy to e.g. replace SSP or DMIC in the 'nocodec' Intel topologies.

The path to the memory-to-memory solution is less clear. This ALSA/compress solution is based on the premise that there is no real-time limitation or behavior, the data will be processed as fast as possible. This doesn't align well with the rest of the SOF infrastructure IMHO. a "DAI" is really meant to model physical interfaces, and the memory-to-memory doesn't rely on physical interfaces at all. There's also a risk that such a pipeline would prevent others from running, by just using all the processing.

@kv2019i
Copy link
Collaborator

kv2019i commented Aug 13, 2024

@singalsu had a draft PR to this direction -> #8830

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants