Após quase um ano de desenvolvimento, foi lançada uma nova versão estável do servidor multimídia PipeWire 1.6.0. Ela substitui o servidor de áudio PulseAudio e apresenta recursos de streaming de vídeo, processamento de áudio de baixa latência e um novo modelo de segurança para controle de acesso em nível de dispositivo e de fluxo. O projeto tem suporte nativo no Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE e muitas outras distribuições Linux. O código é escrito em C e distribuído sob a licença MIT.
O PipeWire é baseado em uma arquitetura multiprocesso que permite o compartilhamento de conteúdo entre vários aplicativos. Ele oferece recursos para processar qualquer fluxo multimídia, mixar e redirecionar fluxos de vídeo e gerenciar fontes de vídeo, como dispositivos de captura de vídeo, webcams ou conteúdo da tela do aplicativo. O PipeWire possibilita a colaboração entre vários aplicativos e uma webcam, além de solucionar os desafios da captura segura de tela e do acesso remoto à tela em um ambiente Wayland.
Quando usado como um som servidorO PipeWire oferece latência mínima e funcionalidades que combinam os recursos do PulseAudio e do JACK, atendendo às necessidades de sistemas profissionais de processamento de áudio que vão além do que o PulseAudio podia oferecer. O PipeWire oferece um modelo de segurança avançado que permite o controle de acesso em nível de dispositivo e de fluxo. Esse modelo de acesso simplifica o roteamento de áudio e vídeo de e para contêineres isolados.
Na nova versão:
- Foi adicionado um decodificador para o codec de áudio LDAC, usado para transmitir áudio de alta qualidade via Bluetooth. A biblioteca libldac é usada para a decodificação.
- Adicionada a opção "bluez5-plc-spandsp" para compensar a perda de pacotes na transmissão de áudio via Bluetooth, utilizando os recursos da biblioteca SpanDSP.
- Adicionada implementação segura de funções para analisar e criar objetos serializados no formato POD (Plain Old Data) em memória compartilhada.
- Foi implementada a capacidade de transmitir informações sobre o suporte dos nós PipeWire a recursos adicionais por meio de metadados, o que pode ser usado para sincronizar o uso de funcionalidades estendidas, como o suporte à operação RELEASE.
- Adicionada a possibilidade de anexar dados adicionais do usuário a comandos e eventos transmitidos entre nós.
- Foram implementadas funções auxiliares adicionais para a criação e análise de formatos de compressão.
- O limite padrão para o número máximo de canais foi aumentado para 128. Foi adicionada a possibilidade de alterar esse limite em tempo de compilação.
- Adicionada a configuração "audio.layout" para definir o layout de som surround multicanal (por exemplo, "audio.layout = 5.1") sem precisar listar as posições dos canais ("audio.position = [ FL, FR, FC, LFE, SL, SR ]").
- Adicionamos um mecanismo de "Parâmetros de Capacidade" para negociar as capacidades de enlace antes de definir o formato e os buffers.
- Adicionada compatibilidade com novos tipos de cores para HDR.
- Os loops de processamento de eventos agora suportam bloqueios de inversão de prioridade, evitando situações em que uma thread de alta prioridade precisa esperar que um bloqueio mantido por uma thread de baixa prioridade seja liberado. Bloqueios leves são usados em vez de `epoll` e `eventfd` para sincronizar o estado entre as threads.
- Adicionada a funcionalidade de determinar a posição do canal através da análise de dados EDID.
- A transmissão de um mapa de canais de som surround (qual canal está à direita, qual está à esquerda, etc.) para o subsistema ALSA é garantida.
- Muitas melhorias foram feitas em relação ao Bluetooth, RTP (Real-time Transport Protocol) e AVB (Audio Video Bridging).
- Os trabalhos prosseguiram na implementação do protocolo de rede de Milão para transmissão de dados multimídia em tempo real.
- O resampler agora suporta funções de redução de distorção personalizáveis, como Blackman e Kaiser. Cálculos de ponto fixo agora são usados para melhorar a precisão do cálculo de fase.
- Foi introduzida a capacidade de usar filtros de áudio FFmpeg e modelos de IA baseados em ONNX para processamento de áudio, como o detector de voz Silero, no grafo de nós.
- O suporte para clientes que utilizam o protocolo v0, usado em versões anteriores do PipeWire, foi descontinuado.
- O módulo jack-tunnel foi atualizado para suportar a conexão automática de portas.
- O sistema de streaming ROC agora oferece suporte a layouts com múltiplas faixas.
- Foi disponibilizada a possibilidade de alterar os limites de recursos (rlimit) através de um arquivo de configuração.
- Adicionada a propriedade "thread.reset-on-fork" para controlar a reinicialização de threads durante a criação de um novo processo (fork). Para clientes JACK, a reinicialização de threads pode ser desativada definindo "thread.reset-on-fork=false" para replicar o comportamento do JACK.
- Adicionada a flag node.exclusive, que garante que uma porta tenha apenas uma origem e um consumidor, o que é necessário para implementar o mecanismo de Sincronização Explícita.
- Adicionada a flag node.reliable para o modo de entrega garantida.
- O utilitário pw-cat agora oferece suporte a MIDI SysEx (System Exclusive, para configurar sintetizadores), ao contêiner midiclip e a formatos de áudio não comprimidos. Foram adicionadas opções para definir formatos de contêiner e codec de áudio, bem como para visualizar uma lista de contêineres, codecs, layouts de som surround e nomes de canais suportados.
Fonte: opennet.ru
