Após sete meses de desenvolvimento, uma nova versão estável do servidor multimídia PipeWire 1.2.0 foi formada, substituindo o servidor de áudio PulseAudio e se diferenciando dele ao adicionar recursos para trabalhar com fluxos de vídeo, possibilitar o processamento de áudio com latências mínimas e uma nova modelo de segurança para gerenciar o acesso em nível de dispositivos e fluxos individuais. O projeto é suportado no GNOME e é utilizado por padrão no Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE e muitas outras distribuições Linux. O código do projeto é escrito em C e distribuído sob a licença LGPLv2.1.
O PipeWire é baseado em uma arquitetura multiprocessual, permitindo o compartilhamento de conteúdo entre vários aplicativos.
São oferecidas funcionalidades para processar quaisquer fluxos multimídia, misturar e redirecionar fluxos de vídeo, além de gerenciar fontes de vídeo, como dispositivos de captura de vídeo, webcams ou o conteúdo da tela gerado por aplicativos. Por exemplo, o PipeWire permite que vários aplicativos trabalhem juntos com uma webcam e resolve problemas de captura segura de conteúdo da tela e acesso remoto à tela em um ambiente Wayland.
Quando usado como servidor de áudio, o PipeWire pode garantir latências mínimas e fornecer funcionalidades que combinam as capacidades do PulseAudio e do JACK, incluindo atender às necessidades de sistemas profissionais de processamento de áudio, que o PulseAudio não conseguia atender. Além disso, o PipeWire oferece um modelo de segurança avançado, permitindo gerenciar acesso em nível de dispositivos individuais e fluxos específicos, facilitando a configuração de redirecionamento de áudio e vídeo de e para contêineres isolados. Um dos principais objetivos é o suporte a aplicativos autossuficientes no formato Flatpak e o funcionamento no stack gráfico baseado em Wayland.
Na nova versão:
- No modelo de processamento de fluxos de dados baseado em gráfico de nós, foi adicionada a suporte para processamento assíncrono, no qual o gráfico de nós não é bloqueado na ausência de saída de um determinado nó, mas continua a trabalhar, utilizando dados do nó obtidos no ciclo anterior. Assim, ao custo de um ciclo de atraso, é possível evitar a situação em que um nó bloqueia o funcionamento dos outros nós no gráfico.
- Foi implementada a concepção de grupos de nós sincronizados (node.sync-group), permitindo a criação de grupos de nós que são ativados simultaneamente pelo planejador. A função pode ser utilizada para o agendamento simultâneo da ativação de nós durante a inicialização do transporte JACK.
- Melhorada a exibição de informações sobre erros no arquivo de configuração, com a adição de menção ao local onde ocorreu o erro nas configurações (número da linha e posição na linha).
- Adicionada a suporte à tecnologia Explicit Sync, permitindo que aplicativos informem ao gerenciador de composição baseado no protocolo Wayland sobre a prontidão da saída de um quadro na tela, o que possibilita a redução de atrasos e a eliminação de artefatos na exibição de gráficos. Em particular, o Explicit Sync resolve problemas de interrupção de exibição e travamentos em sistemas com GPU NVIDIA e habilitado suporte ao Wayland.
- Implementada a possibilidade de definição de metadados obrigatórios ao negociar parâmetros de buffer, que são utilizados para garantir suporte ao "Explicit Sync".
- Adicionada a suporte para criar e usar múltiplos ciclos de processamento de dados (data-loop) no cliente e servidor. Nos ciclos de processamento de dados foram adicionadas funcionalidades para vincular a núcleos de CPU específicos e definir prioridades.
- Oferecida a possibilidade de alterar os níveis de depuração, que controlam a saída de informações nos logs, sem reinicialização, utilizando metadados.
- Revisada a lógica de vinculação de pares (nós no gráfico de fluxos de dados que definem fontes externas ou receptores de dados).
- Aceitos patches para o tratamento de dispositivos marcados como conflitantes através do ALSA UCM (Use Case Manager).
- Adicionado o módulo snapcast-discover para transmissão de conteúdo em servidores SnapCast.
Fonte: opennet.ru
