Hi!
I'm about to start working on the driver for the new RME MADI FX card with its 194 input and 196 output channels.
I've noticed that the device has a rather uncommon hw buffer layout. Let's stick to the input side for the sake of simplicity:
2ch AES, interleaved 8ch MADI 001-008, interleaved 8ch MADI 009-015, interleaved [..] 8ch MADI 184-192, interleaved
On the output side, there is another stereo pair for headphones.
That is, we're dealing with 25 (or 26 for output) interleaved streams with two or eight channels each.
How could we represent such a layout in ALSA, that is, how are we talking to userspace? Would one create subdevices and rejoin them via plughw? Or use MMAP_COMPLEX and then let every application deal with it on its own? It's certainly not a problem to special-case the MADI FX in jackd1 and jackd2, but OTOH, this would require other ALSA apps to do the same (I'm thinking of proprietary custom code).
I wonder if we could afford to rearrange the buffers in the driver and expose a single non-interleaved buffer to userspace.
WDYT?
TIA