2 votes

Comment enregistrer une carte virtuelle dans alsa depuis l'espace utilisateur ?

Je développe un dispositif virtuel à partir de l'espace utilisateur.

(en utilisant umview http://wiki.virtualsquare.org/wiki/index.php/UMview ) Je dois donc enregistrer mon périphérique dans la liste des cartes son du système.

(Je n'ai jamais utilisé alsa dans un module du noyau donc je pense que je dois appeler la fonction snd_card_register())

mais je ne trouve pas le moyen de le faire depuis l'espace utilisateur...

peut-être que je peux écrire un syscall pour faire ça ?

5voto

Jan Hudec Points 27417

Je pense que vous devriez cesser de vous préoccuper du remplacement d'un fichier particulier (i.e. arrêter à l'aide de umview, ce n'est pas nécessaire) et utilisez simplement la fonction Plugin "file" (fichier) pour créer un dispositif dans le Configuration de l'ALSA qui tuyau les données à votre dispositif virtuel sur un tuyau nommé dans /var/run/virtualsound/output ou quelque chose comme ça.

Contrairement à l'approche umview, cette méthode fonctionnera dans toutes les applications sans devoir les exécuter d'une manière particulière.

0voto

SpectralWave Points 810

J'ai résolu ce problème il y a quelques temps,

Alsa user-space lib ouvre simplement chaque /dev/snd/controlC# de 0 à 32 et lance

ioctl(SNDRV_CTL_IOCTL_CARD_INFO, ...);     

afin de construire une liste avec les cartes son installées.

Si nous montons notre module UmView sur /dev/snd/control# et que nous détournons l'ioctl et y répondons, notre module sera identifié comme une carte son par ALSA.

J'ai créé un dispositif sonore virtuel avec cette technique, vous pouvez le trouver à l'adresse suivante https://github.com/berdav/umdevaudio

Il s'agit d'une manière simple de construire un pilote simple en espace utilisateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X