| « Avancement sur le son |
Le son sous GNU/Hurd
Bon voilà, les résultats du Google Summer of Code 2006 sont tombés, et je n'ai pas été sélectionné
. Bref, passons. J'étais candidat pour l'implémentation du son sur le Hurd, et voici une brève description en français de ce que je compte faire :
D'abord, intégrer quelques drivers ALSA de Linux 2.6 dans le noyau GNU Mach. En particulier Ensoniq AudioPCI ES1370/ES1371 (c'est la carte son de ma hurdbox windu) et ESS Allegro/Maestro3 (c'est celle de mon portable solo). Il faudra donc ajouter le glue code nécéssaire à l'intégration de ces drivers. Puis on verra si c'est déjà possible de faire geindre le lappy avec du code de test dans le noyau. Ensuite il faudra coder le support du son dans l'interface des périphériques de GNU Mach (les fonctions device_xxx()). Il y aura beaucoup d'actions à implémenter, mais ça devrait aller relativement vite.
Et ensuite, et c'est là le plus problématique, ça sera l'interface userland. Pour le moment je pense à un translator qui implémenterait une interface ALSA en s'attachant à /dev/snd, mais apparament ça plaît pas aux Hurdistes. Et à moi non plus d'ailleurs. Marco Gerards a proposé que channelio/libchannel (qui n'existe pas encore) soit ce translator. Mais bon j'ai pas le temps d'être au chômage technique et je pense pas avoir bien compris ce que channelio doit être et faire. Thomas Bushnell a également proposé l'implémentation d'une interface spécifique au Hurd, et cette idée me plaît bien, sauf que ça voudrait dire qu'il faut modifier toutes les applications générant du son pour qu'elles sachent utiliser cette nouvelle interface... Donc je suis pas très partant pour ça, et de toute façon, ça rejoint assez la méthode channelio. Donc voilà, pour le moment je garde mon idée d'ALSA, parce qu'au moins on sait que ça marche, ça existe déjà, il suffira de porter alsa-lib pour que toutes les applis sonores puissent fonctionner avec peu ou pas de modifications.
Là je suis pris pendant encore un moment, mais je pense commencer vers le début de juin, et je posterai dès qu'il y aura du nouveau, et si possible du code à tester
.
3 commentaires
Pour le reste : je pense pas que Marco veuille te mettre au chômage technique en attendant channelio, mais plutôt te le faire coder ;-) Ça a toujours été considéré comme un des principaux aspects du support du son sous GNU/Hurd. channelio est à la future libchannel exactement ce que http://wiki.hurdfr.org/index.php/HIG#storeio est à libstore. Quant à libchannel, c'est simple : toute l'API de libstore est basée sur les blocs (on crée des stores avec un block size donnée, on lit/écrit N bytes à partir du block M : bref, c'est des périphériques en mode block. libchannel doit fournir l'abstraction équivalente pour les périphériques en mode caractère.
Si je ne m'abuse, l'interface OSS est entièrement composée d'une série de périphériques (dsp, mixer, midi et sequencer) qui sont lisibles comme des périphériques en mode caractère avec une série d'ioctls chiants en plus. La partie I/O devrait donc être gérée par un channelio basé sur le channel correspondant (un channel dsp par exemple). Il faudra voir comment c'est possible de rajouter des ioctls (donc en fait des interfaces spécifiques, par exemple avec des appels transmis tels quels au channel, ou sinon avec un translator sur dsp qui transmet les appels I/O et gère le reste).
Je ne sais pas du tout comment marche ALSA, mais il faut voir si cela peut pas se baser aussi sur des périphériques en mode caractère. Quant à l'interface spécifique, il semble que JACK dise que le fonctionnement en read()/write() étant pas adapté pour leur usage, ils ont développé la leur : peut-être s'en inspirer ? Il faut voir à quel point il est possible, par exemple, d'implémenter l'interface ALSA par dessus, mais si ça n'est pas possible je ne vois pas le problème à fournir deux interfaces parallèles (une bonne et une de compatibilité, comme OSS et ALSA sous Linux ;-).
Sinon, sur http://sv.gnu.org/task/?func=detailitem&item_id=1619 il y a une mbox avec des messages, notamment de Roland, décrivant libchannel et channelio : si tu n'as pas vu, ça t'intéressera.
Sinon, je suis très content que Hurd évolue et que des gens codent dessus. L'informatique est une science extrênement jeune, on a encore plein de choses à découvrir et à inventer !
Je ne pense pas que ça soit une mauvaise chose que Hurd traine des pieds, car j'ai plutôt l'impression qu'en fait le choix techniques sont longuement discutés, et c'est une bonne chose. Trop de projets ont zappé l'étape de la conception, et trainent des défauts de conceptions durant plusieurs années ...
Haypo
Les commentaires sont fermés pour cet article.