Varadarajan, Srikanth wrote:
If we have one application using the hardware through ALSA, other applications are unable to get access to it. So, we want to have PulseAudio on top and use the pulse virtual device to render audio through ALSA. Is this a recommended way of having multiple applications access one audio HW simultaneously?
Usually yes.
Is there any other way of handling multiple applications get access to the same hardware?
With ALSA's dmix plugin, but this requires that the hardware supports mmap, i.e., DMA to/from the main memory.
Also, why are mmap and munmap operations required in ALSA?
They aren't, except for dmix.
Right now, we do not have mmap and munmap operations exposed. Though the hardware constraints have "SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID" defined.
In most drivers, the buffer management, including mmap, is automatically handled by the ALSA framework.
If there is a close enough ALSA implementation in the current Linux kernel that I can lookup, please point me to that.
Close to what? What kind of buffer does your device use, DMA in main memory, memory-mapped device memory, or PIO?
Regards, Clemens