PipeWire

**PipeWire** on infrastruktuuri äänen ja videon käsittelyyn Linux-alustalla, joka pyrkii yhdistämään PulseAudion ja JACK Audio Connection Kitin käyttötapaukset. 

PipeWiren alkuperäinen kehittäjä on Wim Taymans, joka sai ajatuksen William Manleyn PulseVideosta, sekä tarpeesta näytön kaappaukseen. Taymans liittyi Red Hatille vuonna 2013 ja aloitti PipeWiren kehittämisen vuonna 2015.
Alkuperäinen käyttökohde oli videokuvan välittäminen, johon tuli lisänä turvallisuus ja Flatpak-tuki. Taymans oli myös GStreamerin kehittäjä. PipeWiren tavoitteena on tukea ammattilaiskäyttöä kuluttajakäytön lisäksi, johon PulseAudio ei pyri. PipeWire käyttää JACKin kaltaista mallia äänen käsittelyyn. PipeWireen on lisätty keskeytyspohjainen (IRQ) ajoitus, jolloin sen latenssi vastaa JACKin tasoa.

Ohjelmisto on suunniteltu korjaamaan PulseAudion ja JACKin ongelmakohdat. PipeWiren eduiksi sanotaan korkea suorituskyky myös alhaisen latenssin kanssa, turvallisuus, joustavuus ja integroitavuus sekä ylläpidettävyys. Muokattavuus soveltuu erikoiskohteisiin kuten sulautettuihin järjestelmiin. Yhteensopivuuden vuoksi asiakasohjelmille on kirjastot, jolloin ne eivät tarvitse muutoksia.

Videokaappaus verkkokameralta on aiemmin tapahtunut suoraan Video4Linux -rajapinnan kautta, mutta siihen liittyvien rajoitteiden ja uusien tarpeiden vuoksi on ilmaantunut tarve vaihtoehtoiselle tavalle.

Versio 1.0.0 on julkaistu 26. marraskuuta 2023. Jatkokehityksenä aikomuksena on yhdistää stream- ja filter-rajapinnat, ja lisätä NetJack2-tuki ja FFADO-ajurien tuki. PulseAudio- ja JACK-rajapinnat ovat edelleen tuettuja. Versiossa 1.4 mukana on muun muassa UMP (Universal MIDI) -tuki ja Direct Stream Digital (DSD) -tuki.

## Käyttökohteet
PipeWire on alkujaan julkaistu Fedoran versiossa 27. PipeWire korvasi PulseAudion oletuksena käytettävänä Fedoran versiossa 34. GNOME käyttää versiosta 3.38 lähtien PipeWirea näytön jakamiseen Waylandin kanssa.
Ubuntun versiossa 22.10 PipeWire on oletuksena käytössä. Debian siirtyi versiossa 12 PipeWireen.

## Tekniikka
PipeWire on mediapalvelin, joka suorittaa graafissa sijaitsevia multimediasolmuja. Solmut voidaan suorittaa palvelinprosessissa tai erillisissä prosesseissa, jotka kommunikoivat palvelimen kanssa. Palvelin ja protokolla tukevat videota ja audiota.

PipeWiressa on kaksi pääkomponenttia: graafipohjainen mediakäsittely ja asynkroninen prosessien välinen kommunikaatio (IPC). Palvelinprosessi toteuttaa graafin, ja asiakasohjelmat toimivat tämän kanssa. IPC-mekanismin inspiraatio on Wayland-protokollasta, mutta erikoistuneella serialisoinnilla monimutkaisempien tietorakenteiden vuoksi. PipeWiren arkkitehtuuri perustuu laajennusmoduuleille, jotka voivat muuttaa toimintoja ja saatavia ominaisuuksia.

## Apuohjelmistot

PipeWiren ydinpalvelin ei toteuta kaikkea itse, vaan osa toiminnoista on jätetty apuohjelmiin. PipeWiren yhteyksien hallintaan ja esittämiseen on useita apuohjelmia:
* WirePlumber käsittelee istuntoja ja tukee Lua-kielellä tehtyjä moduuleja
* qpwgraph on Qt-pohjainen työkalu yhteyksien esittämiseen ja tallentamiseen
* Helvum on GTK-pohjainen työkalu yhteyksien esittämiseen

## Lähteet

## Aiheesta muualla
* The PipeWire multimedia framework and its potential in AGL (PDF) 
* FAQ 
* PipeWire dokumentaatiota