Menu Chiudi

Il (complicato) funzionamento dell’Audio in Linux

Diagramma del funzionamento dell'audio in LinuxQuel che vedete riprodotto qui è un diagramma semplificato delle varie componenti che concorrono a produrre i gemiti nei filmati che guardiamo1.

ALSA, OSS, FFADO, PulseAudio, GStreamer, Xine, Phonon, Jack più altri vari ed eventuali ma non necessariamente sempre presenti, si rimpallano il flusso da una parte all’altra. Per questo mi sono più volte espresso in termini non troppo positivi sulla questione (cfr “La truffa delle “distribuzioni per artisti”“).

Se l’argomento Linux Audio vi interessa, vi consiglio di leggere la fonte, perché è un bell’articolo di qualità.

Note all'articolo

  1. Anche io amo il tennis! :P []

31 commenti

  1. tosky

    Non posso leggere l’articolo ora, ma parte male. GStreamer e Xine non sono uno sopra l’altro, sono alternativi tra loro. E cosi’ libvlc o SDL-mixer o OpenAL. Via un livello.
    Phonon e’ per applicazioni Qt. Chi vuole funzioni complesse, usa una libreria ad alto livello. Chi vuole andare diretto, se non vuole usare ALSA, usa Pulseaudio. Fine.

    • felipe

      Beh ok, non è che si può pretendere che un semplice grafico sia *così* dettagliato… Ma questo conferma che la realtà è ancora più complessa :)

  2. Giacomo

    Il grafico e’ effettivamente poco chiaro e non ha corrispondenza con quanto detto nell’articolo, che invece e’ giusto.

    • Destynova

      Mah, forse ha fatto un po di confusione su gstreamer:

      “With GStreamer, Linux audio starts to look even more confusing.”

      Perché mai? Direi che GStreamer ha un posto ben preciso, lo stesso di xine, e presente in altri sistemi operativi.

  3. Destynova

    L’audio su linux è complicato quanto quello di altri sistemi operativi.
    Su windows, ad esempio, abbiamo addirittura 2 framework multimediali, l’equivalente di xine, gstreamer e compagnia, il vecchio vfw (virtualdub usa proprio questo) e windows media. Esistono anche librerie equivalenti a Phonon, generalmente di terze parti. Probabilmente non esiste un equivalente di pulseaudio, forse perché ci pensa windows media.

    Il problema, su Linux, è che tutte le componenti del sistema audio, e multimediale in genere, sono sub-ottime, non a caso Skype usa direttamente alsa sapendo di non poter contare sugli altri componenti.

  4. Siv

    @Destynova: non è vero per Skype, su Ubuntu 9.10 (nei miei PC) utilizza Pulseaudio senza alcun problema.

    Tornando al discorso generale: secondo me in quest’ultimo diciamo anno lo stack audio se la passa un po’ meglio, per quanto io concordi sul discorso dei mille layer; mi sto innanzitutto ricredendo su Pulseaudio, cui faccio passare praticamente tutto (compreso Quake (via libsdl) e Wine (via patch non ufficiali)), e devo ammettere che il sistema regge bene ed integra tutta la faccenda senza difficoltà (gracchiamenti vari, cui solo Flash ogni tanto si lascia andare, ma lì purtroppo non credo ci si possa fare gran chè).
    Ora, mi ricordo perfettamente come un paio di anni fa si arasse dal sistema fresco di installazione PA, o anche altri pseudo strati software, ma ad oggi la situazione sembra migliore.

    Sono anche curioso di provare il backend VLC per Phonon: per carità, Xine si è sempre comportato bene, ma mi sa che è un po’ datato ormai… :)

    • admiral0

      PulseAudio non ha MAI funzionato su nessuno dei miei pc. L’unico dispositivo sul quale va è il mio N900 ma skype inizia a gracchiare e la CPU va alle stelle(indovinate voi il processo succhiaCPU). PulseAudio imo è solo “yet another unuseful layer”(tm) che appesantisce la cpu.

      Quello che sarebbe da fare è migliorare alsa per avere le tante agognate feature di PA. Tornando alla critica, per me neanche Phonon ha senso d’esistere in quanto ci si dovrebbe basare su ALSA per playback audio oppure su GStreamer(altra bestia che si rifiuta ad andare sui miei PC)/Xine/Vlc/whatever (ciao Siv) sopra alsa per cose più specifiche.

      • Destynova

        Phonon è solo una libreria, un layer di astrazione per semplificare l’aggiunta di funzioni multimediali e la portabilità. A mio parere non dovrebbe essere incluso nel sistema audio di Linux. Quando programmavo su Windows ne conoscevo un po di questo tipo di librerie (una era stata pure presa in considerazione per kde4, ma qui vado a memoria…)

        Inoltre Phonon è necessario proprio per la mancanza, su Linux, di un sistema multimediale stabile (nel tempo si intende) e nasce dall’esperienza negativa del team di Amarok con Gstreamer (se ricordate ad un certo punto smisero di supportarlo). Kde non è rappresentato nello sviluppo di gstreamer e di pulseaudio, i cambiamenti di questi due sistemi può solo subirli e Phonon limita i danni.

    • Destynova

      Hai ragione, sono stato poco preciso, mi riferivo a Skype prima di PulseAudio quando accedeva direttamente ad alsa (lo fa ancora se, come spesso succede, pulseaudio non funziona) o a /dev/dsp, nonostante ci fossero altre alternative.

      Io preferirei, in alternativa a xine, vlc e company, una soluzione alla gstreamer, ma non gstreamer, nato con troppi peccati originali che gli ha negato il supporto da una parte della community di linux.

  5. lola

    MAI provato una distro linux in cui la gestione audio fosse anche solo quella di un vecchio window 2000, stile: il programma A emette un suono, il B pure e non si disturbano -_-
    Ma è COSI’ difficile?

  6. un lettore in meno per pollycoke

    Grazie a questo ed agli ultimi articoli pubblicati, pollycoke ha un lettore in meno…

    chi ha scritto l’articolo a cui questo post fa riferimento non ha capito nulla di come funziona… e chi l’ha riportato in questo sito ancora meno…

    già l’immagine è sbagliata…

    ignoranti

    • testard

      x il lettore in meno:
      per caso mi spiegheresti tu come ‘funziona’?
      ..almeno con un link ad un articolo scritto da qualcuno non ‘ignorante’…
      io onestamente ignoro nei dettagli l’argomento.. ma mi piacerebbe approfondire.. puoi condividere la tua verità?

    • felipe

      L’articolo è una panoramica abbastanza fedele di una realtà *molto* complessa.
      Evitiamo inutili reazioni isteriche.

  7. Syco

    ma quindi potrei togliere pulseaudio (semifunzionante) e mettere jack? quale funziona meglio?
    l’unica cosa che so è che pulseaudio crea un livello intermedio per parallelizzare gli output audio, jack fa lo stesso?

    • Saturno

      Beh sarò una mosca bianca ma a me l’audio su linux ha sempre funzionato fin dai tempi che ho iniziato con mandrake (non ricordo se la versione 8 o 9) …
      Diciamo pure che pulseaudio ha avuto dei problemi di gioventù e che effettivamente fino a poco tempo fa dava parecchie rogne, ma oramai mi sembra un progetto abbastanza maturo.
      Poi può piacere o no, questo non sta a me deciderlo, comunque a mio parere un server audio come pulseaudio serviva su linux, anche perché standardizzare l’output visto che non esiste solo alsa, ma anche oss (e per alcune schede ffado) così come vedo utili sistemi di astrazione tipo phonon. L’importante alla fine è rendere standard questi progetti ed evitare la troppa frammentazione e concentrarsi solo su di essi. Sarebbe bello ma forse nell’universo del software libero è un’ utopia …

  8. LorenzoC

    Una delle prime scariche di bestemmie generate da Ubuntu e’ stata generata dal fatto che dopo avere installato Flash l’audio del PC si era ammutolito. Problema risolto andando a sfrucugliare i forum ed editando una chiave nel solito file “conf”. Se non ricordo male bisognava mettere un 1 al posto di uno 0.

    Ora, se l’audio su Linux funziona cosi e cosi (non voglio esagerare dicendo che non funziona), andiamo a smentire il post precedente su quanto le distro Linux siano diventate “facili” (o “piu’ facili”) di Windows. Infatti non e’ che l’audio sia una funzione secondaria di cui si puo’ fare anche a meno, anzi il contrario.

    Inoltre, direi che le stesse considerazioni fatte per i “framework” audio si possono fare anche per il video. Sfido chiunque a dire che “X” e tutto quello che ci sta sopra sono robetta sopraffina.

    • danny

      X non ha problemi.. sono i driver chiusi ad avere problemi con X, X da delle possibilità che non ti immagini.. del resto siete stati viziati con le directx dove produttore e programmatore ci vanno a nozze..

      Comunque non ho mai avuto grandissimi problemi con l’audio in linux, ed avendo esigenze di networking particolari con l’audio e dotando ad un server audio con pulseaudio di grandi capacità, posso districarmi nel gestire l’audio da ogni stanza per ogni stanza dove c,è un diffusore audio..

      Comunque preferisco tenermi quel poco che gli sforzi di grandi menti hanno realizzato per consentirmi di avere software libero che farmi viziare da grandi multinazionali che tutto vogliono che darti la libertà che cerchi..

  9. Amon Paike

    HeHeHe FelipeTor , pochi giorni e stai bombardando a pioggia e raffiche di articoli ;)
    …ti stai rifacendo per tutto il tempo perso…
    …tempo fà dissi che qualche bombetta sporadica non avrebbe fatto male…
    Nice to see you again!

  10. Mattia

    “Quel che vedete riprodotto qui è un diagramma semplificato delle varie componenti che concorrono a produrre i gemiti nei filmati che guardiamo.”

    AHAHAHAH!!! troppo forte :D

  11. Giovanni

    Roba da matti… mi ricordo le prime volte che smanettavo perché sia con ALSA che con OSS il suono gracchiava… poi venne Skype e tremila device da provare per trovare il microfono, poi l’impossibilità di avere audio con DosBox: lì mi sono arreso.

  12. PD

    pulseaudio mi piace come progetto, ma bisogna anche ammettere che la stragrande maggioranza degli utenti non ne ha alcun bisogno.
    se si continua a sviluppare applicazioni solo per pulseaudio, tra un po’ bisognerà fare anche una libreria per alsa che ne emuli l’API… che casino…

  13. bulletxt

    felipe, sei tu che mi confermi che non hai ancora capito un cazzo di come funziona l’audio sotto Linux. Dunque vedendo le tue conoscenze, limitati a capire che i driver della tua scheda audio li ha Alsa che è al capo di tutto. Dopo in maniera OPZIONALE puoi avere un server sonoro, ad esempio PulseAudio il quale prende il lock su Alsa e nessuna software puo accedere ad Alsa in maniera diretta ma passa per PulseAudio. A questo punto, sotto PulseAudio ci possono essere dei backend multimediali che si occupano di decodificare i codec eccetra, come Gstreamer e Xine.
    Phonon invece non c’entra un cazzo. Phonon è una classe qt4 che semplifica il lavoro ad uno sviluppatore qt4 che vuole usare l’audio/video nel suo programma. Phonon di suo non fa nulla. Quello che fa, è appoggiarsi ad un backend multimediale supportato. Al momento phonon supporta Xine e Gstreamer.

    Un altro esempio di sound server come pulseaudio, è Jack, il quale viene usato per dei motivi specifici.

    Ora mi chiedo, è così complicato da capire tutto questo discorso? Se lo è, non scrivere articoli su cose che non conosci, oppure chiedi aiuto a qualcuno.

  14. bulletxt

    e prima che dimentico, vedo tra i commenti che anche le persone non hanno capito un cazzo di PulseAudio e di cosa sia un Sound Server. Studiate e informatevi, altrimenti non dite cazzate.

Rispondi

%d blogger hanno fatto clic su Mi Piace per questo:
Vai alla barra degli strumenti