[alsa-devel] SoC multiple streams
Hi all,
I'm developing an SoC driver for a sound engine that supports playing up to 64 simultaneous substreams, all mixed in h/w to a stereo DAC. But it doesn't appear that the SoC framework supports multiple substreams, according to soc_new_pcm(). Am I missing something, or is this on the asoc development roadmap?
Thanks, Steve
On Mon, 2007-06-18 at 14:55 -0700, Steve Longerbeam wrote:
Hi all,
I'm developing an SoC driver for a sound engine that supports playing up to 64 simultaneous substreams, all mixed in h/w to a stereo DAC. But it doesn't appear that the SoC framework supports multiple substreams, according to soc_new_pcm(). Am I missing something, or is this on the asoc development roadmap?
It's now on the development roadmap ;)
https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=ASoCRoadMap
Liam
Liam Girdwood wrote:
On Mon, 2007-06-18 at 14:55 -0700, Steve Longerbeam wrote:
Hi all,
I'm developing an SoC driver for a sound engine that supports playing up to 64 simultaneous substreams, all mixed in h/w to a stereo DAC. But it doesn't appear that the SoC framework supports multiple substreams, according to soc_new_pcm(). Am I missing something, or is this on the asoc development roadmap?
It's now on the development roadmap ;)
https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=ASoCRoadMap
that's cool, thanks.
I've got some more questions about multiple substreams. In the sound engine I'm working on, each "voice" (substream) has its own private controls, such as L/R volume, 3D (distance and angle factors), and gain envelopes. All 64 substreams are then mixed in h/w to a single stereo stream, and global controls are then applied, such as master volume.
It's looking like the way to implement per-substream controls is to add the controls for all possible substreams, and then somehow determine which substream is being referred to in the get/put callbacks, and then get/put the control for only that substream. Is this the way per-substream controls should be done?
Also, with 64 substreams and multiple controls for each, we're talking about adding hundreds of controls, can ALSA handle this? I can imagine alsamixer looking quite crowded :-/
Thanks, Steve
On 6/27/07, Steve Longerbeam stevel@embeddedalley.com wrote:
It's looking like the way to implement per-substream controls is to add the controls for all possible substreams, and then somehow determine which substream is being referred to in the get/put callbacks, and then get/put the control for only that substream. Is this the way per-substream controls should be done?
Also, with 64 substreams and multiple controls for each, we're talking about adding hundreds of controls, can ALSA handle this? I can imagine alsamixer looking quite crowded :-/
Please check the ALSA emu10k1 driver for a sample implementation. 32 substreams, hardware mixing with independent HW volume control for each.
Lee
participants (3)
-
Lee Revell
-
Liam Girdwood
-
Steve Longerbeam