Dopo un anno e mezzo di sviluppo, è stato rilasciato GStreamer 1.20, un insieme di componenti cross-platform scritto in C per la creazione di un'ampia gamma di applicazioni multimediali, da lettori multimediali e convertitori di file audio/video a applicazioni VoIP e sistemi di streaming. Il codice di GStreamer è distribuito sotto la licenza LGPLv2.1. Sono disponibili anche aggiornamenti per i plugin gst-plugins-base 1.20, gst-plugins-good 1.20, gst-plugins-bad 1.20, gst-plugins-ugly 1.20, insieme a un wrapper gst-libav 1.20 e il server di streaming gst-rtsp-server 20. A livello di API e ABI, la nuova versione è retrocompatibile con il ramo 1.0. Gli assemblaggi binari saranno presto disponibili per Android, iOS, macOS e Windows (su Linux si consiglia di utilizzare i pacchetti forniti dalla distribuzione).
Principali miglioramenti di GStreamer 1.20:
- Lo sviluppo su GitLab è stato spostato all'uso di un unico repository comune per tutti i moduli.
- È stata aggiunta una nuova libreria di alto livello GstPlay, che sostituisce l'API GstPlayer e offre funzioni simili per la riproduzione dei contenuti, differenti per l'uso della bus di messaggi per notificare le applicazioni invece dei segnali GObject.
- È stata aggiunta la supporto per la decodifica delle informazioni di trasparenza nel formato WebM, che consente di riprodurre video VP8/VP9 con aree trasparenti.
- Nei profili di codifica è stata aggiunta la possibilità di configurare proprietà aggiuntive specifiche per le applicazioni.
- Nel Compositore è stata implementata la supporto per la trasformazione e la mescolanza video in modalità multithread.
- Nelle classi depayloader e payloader è stata uniformata la supporto per la gestione di intestazioni RTP aggiuntive (Estensioni Header RTP).
- È stata aggiunta la supporto per il meccanismo di correzione degli errori preventiva SMPTE 2022-1 2-D (Forward Error Correction).
- In encodebin e transcodebin per i codec VP8, VP9 e H.265 è stata implementata una modalità di codifica intelligente («smart encoding»), in cui la ricodifica avviene solo se necessario, mentre durante gli altri momenti viene semplicemente trasmesso il flusso esistente.
- È stata garantita la compatibilità del plugin souphttpsrc con libsoup2 e libsoup3.
- È stata aggiunta la possibilità di decodificare i dati in ingresso a livello di fotogrammi intermedi (sub-frame), consentendo di avviare la decodifica senza attendere il ricevimento del fotogramma completo. Questo ottimizzazione è stata coinvolta nei decodificatori OpenJPEG JPEG 2000, FFmpeg H.264 e OpenMAX H.264/H.265.
- Nella decodifica dei video per i protocolli RTP, WebRTC e RTSP è garantito un trattamento automatico della perdita di pacchetti, dei dati danneggiati e delle richieste di fotogrammi chiave.
- Negli imballatori dei contenitori multimediali mp4 e Matroska è stata aggiunta la supporto per la modifica dei dati del codec in tempo reale, consentendo di cambiare profilo, livello e risoluzione per i flussi in ingresso H.264/H.265.
- È stata aggiunta la modalità di creazione di contenitori multimediali mp4 frammentati.
- Nel porto basato su WPE (WebKit Port for Embedded) è stato aggiunto il supporto audio.
- È stata aggiunta la possibilità di utilizzare CUDA per la conversione dello spazio colore, il ridimensionamento degli elementi e il caricamento degli elementi.
- Per gli elementi OpenGL glupload e gldownload è stato aggiunto il supporto per la memoria NVMM (NVIDIA Memory Module).
- Migliorato il supporto per WebRTC.
- È stato proposto un nuovo plugin per VA-API (Video Acceleration API), che supporta più decoder e elementi di post-elaborazione.
- Nell'API AppSink è stato aggiunto il supporto per eventi oltre a buffer e liste di buffer.
- In AppSrc sono state aggiunte impostazioni aggiuntive per le code interne.
- Aggiornate le binding in Rust e aggiunti 26 nuovi plugin scritti in Rust (gst-plugins-rs).
- Aggiunti gli elementi aesdec e aesenc per la crittografia e decrittografia utilizzando l'algoritmo AES.
- Aggiunti gli elementi fakeaudiosink e videocodectestsink per il test e il debug.
- Migliorati gli strumenti per la creazione di build minimaliste di GStreamer.
- Aggiunta la possibilità di compilare con FFmpeg 5.0.
- Per Linux sono state implementate varianti dei codec MPEG-2 e VP9, funzionanti senza salvataggio dello stato (Stateless).
- Per Windows, nel decodificatore basato su Direct3D11/DXVA è stato aggiunto il supporto per AV1 e MPEG-2.
Fonte: opennet.ru
