No subject

Tue May 20 11:56:44 CEST 2008

first to start dmix then a copy of the process (app) will remain till
the system is shutdown ?

Also I see that from alsa-lib 1.0.12 a check is performed before starting dmix.

file: src/pcm/pcm_dmix.c
function: snd_pcm_dmix_open

               if (dmix->shmptr->use_server) {
                       dmix->server_free = dmix_server_free;

                       ret = snd_pcm_direct_server_create(dmix);
                       if (ret < 0) {
                               SNDERR("unable to create server");
                               goto _err;

When I checked how dmix->shmptr->use_server is set

file: src/pcm/pcm_dmix.c
function: snd_pcm_direct_initialize_slave

               int ver = 0;
               ioctl(spcm->poll_fd, SNDRV_PCM_IOCTL_PVERSION, &ver);
               if (ver < SNDRV_PROTOCOL_VERSION(2, 0, 8))
                       dmix->shmptr->use_server = 1;

So if sndrv version is older than 2.0.8, use_server is set!

So even using alsa-lib greater than 1.0.12 doesn't guarantee that the
forked process (without exec) code path will be avoided.

I'm currently porting the sound code of our app from OSS to ALSA but
this problem is preventing me from doing so.
Is there any way to get around this problem?

Help here will be greatly appreciated.


PS: I've tried using the ioctl mentioned above after copying the
necessary macros from kernel headers but ioctl returns error
"Inappropriate ioctl for this device" on my Ubuntu 7.04 system.

More information about the Alsa-devel mailing list