[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: A propos d'Alsa & Co



On Tue, Sep 17, 2002 at 07:36:33PM +0200, spear wrote:
> Alsa est il une sorte d'interface ou un " module " (pas au sens habituel
> genre les pilotes) du système qui gère l'audio ?

Alsa est une combinaison interface + librairie.

Tout ça fait partie d'un problème très géneral: D'un coté,
j'ai du matériel (carte son, carte video), dont les
possibilités sont variables, de l'autre, j'ai des
applications qui veulent simplement "faire du son" ou
"afficher une image".

Il y a plusieurs façon d'interfacer tout ça. Pour les cartes
vidéos par exemple, jusqu'à récement chaque driver de carte
vidéo définissait sa propre interface (interface entre noyau
et application ici, donc read/write/ioctl et c'est à peu
près tout) et une application devait s'adapter à l'interface
en question pour utiliser la carte vidéo. Comme dans la
plupart des cas, seuls X utilisait la carte vidéo, c'est pas
trop problématique (y'a pas vraiement de recopie de code).
Par contre, si il y a bcp d'applications differentes, c'est
pas propre car chaque application va devoir réimplementer la
même chose.

Pour le son, OSS a simplement definit une interface au
niveau du noyau (read/write/ioctl) qui est standard et que
chaque driver doit implementer. C'est la responsabilité du
driver d'implementer toutes les possibilités de la carte à
travers cette interface, et il doit également pouvoir dire
qu'il ne supporte pas certaines fonctions si le matériel ne
le supporte pas. L'application en contrepartie doit
s'adapter à ce que le driver dit. Par exemple, si
l'application veut faire de la stereo à 44Khz et que la
carte ne peut pas faire ça, le driver dit que c'est pas
possible mais qu'il peut plutôt faire stereo 22Khz. C'est la
responsabilité de l'application de faire du 22Khz. (Certains
pensent que le driver devrait faire la conversion lui-même.
C'est une mauvaise idée pour plusieurs raisons qui dépassent
le cadre de mon humeur matinale).

C'est également la façon dont fonctionne Video4Linux.

ALSA va un pas plus loin: il (elle?) definit une interface
entre noyau et "userland" (read/write/ioctl), puis fournit
également un librairie pour faire une interface plus simple
pour l'application. C'est donc:
- Une interface entre noyau et userland (qu'il ne faut pas
  utiliser, entre autre parce qu'elle peut encore changer),
- Un ensemble de drivers pour des cartes son, qui utilisent
  cette interface,
- Une librairie que les applications utilisent, qui fournit
  des fonctions plus simples à utiliser que les ioctls et
fait des conversions si besoin est.

Au passage, notons que Alsa n'est pas nécessairement très
utile dans la mesure où, souvent, toutes les applications
passent de toute façon à travers un serveur de son (esd par
exemple), ce qui nous ramène à la situation de X.

> En bref, au jour d'aujourd'hui, hors Alsa & Oss, point de son ?

Rien ne t'empèche d'écrire un driver avec ta propre
interface, et d'écrire une application qui l'utilise...
C'est sans doute pas une bonne idée, cela dit :-)

/Y



Reply to: