• [^] # Re: Cela dépend des cas...

    Posté par . En réponse au journal Linux ou POSIX ?. Évalué à 10.

    t. T’as autant de systèmes parfaits que d’utilisateurs... J’apprécie que Linux me permette de réellement adapter le système pour qu’il soit parfait pour moi.

    Pour qu'un système soit parfait il faut un minimum de "trucs"
    En ce qui concerne le son sous Linux, tu vas te marrer :

    On va diviser les utilisateurs en plusieurs grosses catégories :
    - L'utilisateur pur, 0 technique, il prend une distrib l'installe et basta
    - L'utilisateur avancé
    - Le Pro du son
    - Le dev

    L'utilisateur pur va installer sa distrib, et là soit ca marche "out of the box", soit il essaye la distrib d'à coté. Au bout de trois distribs essayés il repasse sous windows. Ce mec ne cherche pas la distrib parfaite, il veut que "ca juste marche" quand il installe un truc. Et des fois ca juste marche (sur des PC relativement standards on va dire que ca fait 80% des cas de nos jours, ce qui est une belle performance). Cependant il va avoir tout un tas de petits soucis pour le faire chier : Des blancs entre les morceaux de sa musique (GStreamer est le prédateur naturel du gapless), un volume erratique (Ben oui le son il se règle dans Alsa, dans pulse audio, dans l'émulation OSS, dans GStreamer et parfois dans les applis ... super) Et puis parfois quand il va mettre à jour sa distrib, son plugin flash(proprio ou pas) va déconner grave au niveau du son jusqu'à la prochaine mise à jour. Si ca lui casse trop les pieds, il change.

    L'utilisateur avancé il veut un comportement précis. Par exemple il veut du gapless (pas de blancs entre deux morceaux) parcequ'il écoute du classique/des concerts/des albums correctement assemblés. Lui déjà il souffre. Premièrement il doit foutre dehors GStreamer et s'arranger pour qu'il ne revienne pas à la charge quand il va mettre à jour sa distrib (ce qui demande déjà un bon niveau), ensuite il doit trouver des packages/repository compatibles avec sa distrib dans lesquels la dépendance à GStreamer a été enlevée. Sinon il doit tout compiler à la main, et tout recompiler à chaque mise à jour du kernel (en priant pour que ca marche encore - voire plus loin pour le dev).
    Si il veut harmoniser les volumes, pour avoir un seul point à régler pour toutes les applis il va souffrir encore. Castrer Pulse Audio pour ne pas qu'il se mêle de régler le volume est pas évident du tout.Là aussi à chaque mise à jour du kernel ou presque il est bon pour revisiter ses réglages (d'une mise à jour sur l'autre, les éléments "secondaires" de la carte son, comme les sorties 5.1, les commuts micro/sortie, les entrées mic etc. changent de volume de base, voire de nom, voire de fonction - spécial dédicace au possesseurs de chipset son i810)

    L'utilisateur pro, il devient juste fou. De façon générale il a besoin de jack en mode temps réel, lequel est particulièrement incompatible avec pulse audio. Pulse audio c'est un serveur en user space qui dialogue plusieurs centaine de fois par seconde avec le kernel space. C'est la fête du context switch. Même sur une très grosse machine si vous avez plusieurs logiciels, certains directement sous Jack et d'autres via pulse audio vous allez vous prendre du clock skew dans la gueule. Et genre pas qu'un peu. Un conseil éviter les mix 32khz/44,1khz/48khz ca n'arrange pas le problème, bien au contraire.
    Après il va devoir lui aussi se taper la tête contre les murs avec les réglages de volume et les mises à jour. Si il a vraiment du temps à perdre il va essayer de gicler complètement pulse audio et GStreamer de sa distrib (de toute façon c'est un pro, sa/ses cartes audio font surement du mixage hard). Mais bon GStreamer est utilisé par un grand nombre d'applis son sous Linux (normalement ce ne sont pas celles qui l'interressent, mais bon) et gicler pulse-audio est devenu une tannée sur les distribs classiques. Reste la solution LFS, mais là il faut compiler ffado, ffmepg et jack dans des versions compatibles les unes avec les autres... Bonne chance gars.

    Le dev, neuf fois sur dix, il a déjà laissé tombé. Il s'est arraché les cheveux sur l'absence de doc d'Alsa 0.8, il a failli se tirer une balle sur Alsa 0.9. Il a fait trois mois de dépression lors du passage en V4L2, a été interné pour la sortie d'Alsa 1.0 et ses magnifiques cartes virtuelles pour le mixage. On est en Alsa 1.0.22, les cartes virtuelles ne servent plus, 80% du code qu'il a pu écrire est inutilisable, il n'y a toujours pas de doc, les pilotes HDA sont à pleurer (on a encore changé les volumes par défaut et les noms de la moitié des entrées, mute permet dans certains cas de passer du mode capture au mode sortie). Il a pris sont parti, il écrit pour du high level. Gstreamer principalement, parceque phonon est pas complètement sec et qu'il a failli se pendre quand on a annoncé la mort d'Arts (encore du code qui part à la poubelle). Il sait que son appli traverse X couches d'émulation pour jouer le plus simple des sons. Il a décidé de s'en foutre, mais il lui a fallu deux ans de thérapie pour en arriver là.

    Maxime attend de la concurrence de faire du temps réel. Elle le fait la concurrence ?

    Oui définitvement. La plupart des plateformes de montages sont à la concurrence. Et ca marche. Par contre sous Linux il faut sérieusement s'accrocher. CF plus haut.

    Ah! puis moi j’aime bien mon mpd, la concurrence a un lecteur de musique (juste un lecteur de musique) avec un protocole documenté pour pouvoir coder un petit client tout bien comme je veux (fade in/out+aléatoire pas trop con+console+arrêt uniquement à la fin du morceau)

    MPD marche très bien en tant que serveur. Ceci étant il ne passe pas par GStreamer et il fonctionne encore mieux sans Pulse audio. Le serveur MPD est l'exmple typique du truc qui fait se demander à quoi servent toutes les couches là haut si ce n'est à faire moins bien pour plus d'overhead.
    Les clients MPD java/windows fonctionnent très bien pour tout ce qui est fade-in/fade-out, aléatoire pas trop con etc.

    et puis qui me fasse de la reconversion à la volée de flac vers ogg pour du streaming sur http ou n’importe quoi d’autre via ADSL. Toujours là la concurrence ?

    Oui, oui FFMPeg et consors existent aussi chez la concurrence. Ils fonctionnent aussi très bien.

    Et c’est juste faux :
    make menuconfig
    devices ...
    sound ...
    — ALSA
    — OSS (DEPRECATED) (depuis pfiou... 4 ans? au moins)


    Alsa, alsa driver, oss emulation, oss direct, V4L (deprecated aussi), V4L2
    Sans compter les réglage à la con de type HPET ou Firewire on a 6 API dans le kernel qui fon mumuse avec le son. Tout va bien.
    Et OSS est deprecated depuis près de 7 ans. Mais toujours dans le kernel (parceque bon, c'est quand même le truc qui marche partout et à chaque fois)

    Et j’ai un scoop pour toi : si pulse expose l’API alsa aux applis ne parlant qu’alsa, ben ça veux pas dire que ton son est géré deux fois

    En l'occurence si. Pulse se présente comme un pseudo device alsa, alors qu'il est en user land. Donc double contexte switch (user vers user puis user vers kernel) pour jouer le moindre son. Rajoute Une émulation OSS et gstreamer par dessus et c'est la fête du slip dans tes interrupts.
    Bien sur le dev qui a fait son programme a pas à reprendre le code (encore que pulse-audio de part son caractère user land supporte assez mal les gruikeries Alsa et qu'un crash est vite arrivé). Mais si tu veux une synchro son/image tu te marres bien.

    Et c’est ce que j’ai sur mon ordi. Enfin, j’ai PulseAudio suivant l’humeur du moment.

    Je te parie que sur ton PC tu as pulseaudio, Alsa, Alsa drivers, l'émulation OSS, une voire deux émulation ESD, Gstreamer et peut-être même Phonon ou Arts. Moins certain mais probable : un alsa driver HDA et un autre en virtual midi.
    Il y a peut être trois applis (dont le plugin flash Adobe d'ailleurs) capable de parler directement au HControl Alsa driver pour faire du mixage hard sans passer par les surcouches de surcouche de surcouche.

    Pour info voici le lien vers la doc du HControl interface d'Alsa driver
    http://www.alsa-project.org/alsa-doc/alsa-lib/hcontrol.html

    Si tu préfères passer par l'API Alsa abstraite, voici un lien vers la doc pour utiliser le mixer audio virtuel :
    http://www.alsa-project.org/alsa-doc/alsa-lib/mixer.html

    Ben 8 ans que je suis exclusivement sous Linux, 8 ans que j’ai du son
    Oui, tu as du son. Exactement de la même façon que les utilisateurs windows ont un navigateur internet Microsoft depuis 15 ans. Si ça te suffit tant mieux, mais ca rend pas le truc moins absurde ou plus utilisable.