Sommario
Il 27 giugno 2024 è stato rilasciato PipeWire 1.2.0, una versione che mantiene la compatibilità API e ABI con le precedenti versioni 1.1.x e 1.0.x. Questo aggiornamento include diverse modifiche significative rispetto al rilascio 1.0 dello scorso anno, migliorando le prestazioni e aggiungendo nuove funzionalità.
Supporto per l’elaborazione asincrona
Una delle principali novità è l’implementazione del supporto per l’elaborazione asincrona. I nodi possono ora scegliere (o essere forzati) di essere schedulati in modo asincrono. Questo permette al grafico di continuare l’elaborazione senza aspettare l’output del nodo, utilizzando invece l’output del ciclo precedente o il silenzio. Questo approccio aggiunge un ciclo di latenza, ma evita che alcuni nodi blocchino il grafico di elaborazione. Anche i flussi e i filtri non in tempo reale ora utilizzano questa elaborazione asincrona invece delle loro versioni precedenti, leggermente difettose.
Gruppi di Sincronizzazione
È stato introdotto il concetto di node.sync-group
, che raggruppa i nodi con gruppi di sincronizzazione sovrapposti quando uno di essi imposta node.sync = true
. Questa funzione è ora utilizzata per assicurarsi che tutti i nodi siano schedulati insieme quando il trasporto JACK è avviato, in modo che tutti vedano lo stesso tempo di trasporto.
Miglioramenti nella Segnalazione degli Errori di Parsing
Gli errori di parsing della configurazione sono ora riportati in modo più tempestivo e dettagliato, con numeri di riga e colonna dove il parsing ha iniziato a fallire.
Supporto per la Metadati Obbligatori
È stato aggiunto il supporto per i metadati obbligatori durante la negoziazione dei parametri del buffer. Questo permette di negoziare piani di buffer extra solo quando vengono negoziati determinati metadati. Un caso d’uso è il supporto per la sincronizzazione esplicita che richiede 2 extra fds per le linee temporali.
Supporto per la Sincronizzazione Esplicita
Sono stati aggiunti i metadati e il supporto per la sincronizzazione esplicita.
Supporto per Molteplici Loop di Dati
È stato aggiunto il supporto per creare e utilizzare molteplici loop di dati nel server e nei client. È stato anche aggiunto il supporto per l’affinità della CPU e le priorità nei loop di dati.
Debug e Log Dinamici
I livelli di debug dei log possono ora essere modificati in tempo reale con i metadati. Anche i livelli di log nel server pulse possono essere cambiati dinamicamente con un messaggio /core
.
Patch per i Dispositivi Conflittuali UCM
Le patch per i dispositivi conflittuali UCM sono state integrate.
Modulo Snapcast-Discover
È stato aggiunto il modulo snapcast-discover per lo streaming ai server snapcast.
Miglioramenti ai Peer e ai Contatori
È stato rielaborato il modo in cui i peer sono collegati e i contatori aggiornati. I peer vengono ripresi quando un nodo è scollegato e non ancora processato, riducendo così le interruzioni occasionali nel grafico durante il ricollegamento.
Altri miglioramenti e correzioni
- Correzioni di compilazione dopo l’abilitazione di
-Werror=float-conversion
- Miglioramenti e correzioni ai moduli, inclusi il
module-rtp-sap
, ilrtp-source
e il modulo sink RAOP. - Correzioni per il codice di monitoraggio di
pw-cli
. - Reversione di
peer_enum_params
per motivi di inutilizzo e difetti. - Correzioni nel processamento multicanale in
webrtc AEC
. - Miglioramenti al logging e correzione di una race condition nell’attivazione del bufferpool in GStreamer.
- Miglioramenti al parsing del codice di trasmissione BAP in Bluetooth.
PipeWire continua a evolversi, offrendo miglioramenti significativi per gli utenti e gli sviluppatori che necessitano di una piattaforma audio e video robusta e versatile.