Dokumentacija PulseAudio

Izvor: HrOpenWiki
Skoči na: orijentacija, traži

PulseAudio (prije se zvao Polypaudio) je više-platformski, umreženi zvučni server često korišten na Linuxu i FreeBSD operacijskim sustavima. Može se koristiti kao poboljšana zamjena za Enlightened Sound Daemon (ESD). PulseAudio se vrti na MS Windows i POSIX kompatibilnim platformama poput Linuxa i FreeBSD-a. PulseAudio je izdan pod GNU LGPL 2.1 licencom.

Pulseuadio.png


Dizajn

PulseAudio je zvučni server, pozadinski proces koji prihvaća zvučni ulaz od jednog ili više izvora (procesa ili mikrofona) i preusmjerava ih u jedan ili više izlaza.

Jedan od ciljeva PulseAudio je preusmjeravanje svih zvučnih podataka kroz sebe, ukljućujući procese koji pokušavaju komunicirati direktn osa hardverom (poput starih OSS aplikacija). PulseAudio ovo postiže osiguravajući adaptere zaaplikacije koristeći druge audio sustave poput aRts i ESD.

U tipičnom scenariju pod Linuxom, korisnik konfigurira ALSA da koristi virtualni izlaz kojeg osigurava PulseAudio. PulseAudio tada koristi ALSA za komunikaciju sa stvarnim hardverom. PulseAudio također osigurava vlastiti interfejs za aplikacije koje žele podržavati PulseAudio direktno, kao i stare sustave za ESD aplikacije, što omogućava da se iskoristi kao zamjenski sustav za isti taj ESD.

Za OSS aplikacije, PulseAudio osigurava padsp alat, koji zamijenjuje /dev/dsp, time varajući aplikacij da povjeruju kako imaj uekskluzivnu kontrolu nad zvučnom karticom. U stvarnosti, njihov je izlaz preusmjeren kroz PulseAudio.

Značajke

Glavne značajke PulseAudio su:

  • Kontrola glasnoće po aplikaciji
  • Otvorena arhitektura za plugine sa podrškom za module
  • Kompatibilnost sa mnogo audio aplikacija
  • Podrška za više audio izvora i sinkova
  • Operacije sa niskom latencijom i podrška za mjerenje latencije

Zero-copy memorijska arhitektura za povećanje efikasnosti procesorskih resursa

  • Sposobnost otkriti druga računala koja koriste PulseAudio na lokalnoj mreži i puštati zvuk kroz njihove zvučnike direktno
  • Sposobnost da promijeniti izlazni uređaj dok neka aplikacija pušta zvuk, bez da aplikacija ovako nešto podržava ili da uopće bude svjesna ovako nečega)
  • CLI sučelje za pisanje skripti
  • sound dameon sa sposobnosti CLI rekonfiguracije
  • ugrađeni konverzija samplova i resempliranje
  • Sposobnost kombiniranja više kartica u jednu
  • Sposobnost sinkronizacije više izlaza
  • Dinamička detekcija bluetooth audio uređaja
  • Sposobnost ekvilizacije zvukana razini sistema

PA kao sistemski servis

Mrežne postavke PA

Prebacivanje između dva profila

Da bi se brzo prebacili između dva audio profila (npr. HDMI audio izlaza i ugrađenih zvučnika) možemo koristiti ovakvu skriptu:

#!/bin/bash

hdmi=`pactl info | grep hdmi | wc -l`
card="alsa_card.pci-0000_00_1b.0"
analog_profile="output:analog-stereo+input:analog-stereo"
hdmi_profile="output:hdmi-stereo+input:analog-stereo"

if [ $hdmi == 1 ]; then
        echo "HDMI output: off"
        pactl set-card-profile $card $analog_profile
else
        echo "HDMI output: on"
        pactl set-card-profile $card $hdmi_profile
fi

gdje su varijable card, analog_profile i hdmi_profile ovisne o hardverskom postavu i sustavu. Card mora biti ime kartice, a profili pripadajući profili za konfiguraciju zvučnika (sve se može dobiti s pactl list).

Da bi se ova skripta automatski pokrenula pri uštekavanju HDMI-ja u računalo iskoristimo udev pravilo. U datoteku /etc/udev/rules.d/90-hdmi-audio.rules stavimo sljedeći sadržaj:

KERNEL=="card0", SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/audio-switch.sh"

i ponovno učitamo udev pravila s:

udevadm control --reload

Parametre za udev pravilo možemo dobiti s:

udevadm monitor

zatim uključimo HDMI kabel pa ga opet isključimo. Kernel tada javi stanje kojeg uređaja se promijenilo. Direktnim upitom možemo dobiti sve parametre tog uređaja:

udevadm info -a -p /devices/pci0000:00/0000:00:02.0/drm/card0

Izvor

[1]

--Shrike 14:45, 14. ožujka 2011. (UTC)