Após um ano e meio de desenvolvimento, foi lançado o GStreamer 1.20, um conjunto de componentes multiplataforma escritos em C para a criação de uma ampla gama de aplicações multimídia, desde reprodutores de mídia e conversores de arquivos de áudio/vídeo até aplicações VoIP e sistemas de streaming. O código GStreamer está licenciado sob LGPLv2.1. Ao mesmo tempo, estão disponíveis atualizações para os plugins gst-plugins-base 1.20, gst-plugins-good 1.20, gst-plugins-bad 1.20, gst-plugins-ugly 1.20, bem como a ligação gst-libav 1.20 e o Servidor de streaming gst-rtsp-server 20. No nível API e ABI, a nova versão é compatível com versões anteriores do branch 1.0. Em breve serão preparados assemblies binários para Android, iOS, macOS e Windows (no Linux é recomendado usar pacotes da distribuição).
Principais melhorias no GStreamer 1.20:
- O desenvolvimento no GitLab passou a usar um único repositório comum a todos os módulos.
- Foi adicionada uma nova biblioteca GstPlay de alto nível, que substitui a API GstPlayer e oferece funcionalidade semelhante para reprodução de conteúdo, diferenciando-se por usar um barramento de mensagens para notificar aplicativos em vez de sinais GObject.
- Adicionado suporte para decodificação de informações de transparência WebM, permitindo a reprodução de vídeos VP8/VP9 com áreas transparentes.
- Os perfis de codificação agora têm suporte para definir propriedades adicionais específicas do aplicativo.
- O Compositor suporta conversão e mixagem de vídeo multithread.
- As classes depayloader e payloader possuem suporte unificado para trabalhar com cabeçalhos RTP adicionais (RTP Header Extensions).
- Adicionado suporte para o mecanismo SMPTE 2022-1 2-D (Forward Error Correction).
- Encodebin e transcodebin para codecs VP8, VP9 e H.265 implementam um modo de codificação inteligente, no qual a transcodificação é realizada apenas quando necessário, e no resto do tempo o fluxo existente é encaminhado.
- O plugin sopahttpsrc agora é compatível com libsoup2 e libsoup3.
- Adicionada a capacidade de decodificar dados de entrada no nível de quadros intermediários (subquadro), o que permite iniciar a decodificação sem esperar o recebimento do quadro completo. O suporte para esta otimização está incluído nos decodificadores OpenJPEG JPEG 2000, FFmpeg H.264 e OpenMAX H.264/H.265.
- Ao decodificar vídeo para os protocolos RTP, WebRTC e RTSP, é fornecido o tratamento automático de perda de pacotes, corrupção de dados e solicitações de quadros-chave.
- O suporte para alteração de dados de codec em tempo real foi adicionado aos compactadores de contêineres de mídia mp4 e Matroska, o que permite alterar o perfil, o nível e a resolução dos fluxos de entrada H.264/H.265.
- Adicionado um modo para criar contêineres de mídia mp4 fragmentados.
- O suporte de áudio foi adicionado à porta baseada em WPE (WebKit Port for Embedded).
- Adicionada a capacidade de usar CUDA para conversão de espaço de cores, dimensionamento de elementos e carregamento de elementos.
- Adicionado suporte para memória NVMM (NVIDIA Memory Module) para elementos OpenGL glupload e gldownload.
- Suporte WebRTC aprimorado.
- Um novo plugin para VA-API (Video Acceleration API) foi proposto, suportando mais decodificadores e elementos de pós-processamento.
- A API AppSink adicionou suporte para eventos, além de buffers e listas de buffers.
- Configurações adicionais para filas internas foram adicionadas ao AppSrc.
- Atualizadas as ligações da linguagem Rust e adicionados 26 novos plug-ins escritos em Rust (gst-plugins-rs).
- Adicionados elementos aesdec e aesenc para criptografia e descriptografia usando o algoritmo AES.
- Adicionados elementos fakeaudiosink e videocodectestsink para teste e depuração.
- Ferramentas aprimoradas para criar compilações minimalistas do GStreamer.
- Adicionada a capacidade de construir com FFmpeg 5.0.
- Para Linux foram implementadas versões dos codecs MPEG-2 e VP9, operando sem salvar estado (Stateless).
- Para Windows, o suporte AV3 e MPEG-11 foi adicionado ao decodificador baseado em Direct1D2/DXVA.
Fonte: opennet.ru