Dopo quasi un anno di sviluppo, viene presentato il rilascio di GStreamer 1.28, un insieme di componenti multipiattaforma 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 licenza LGPLv2.1. Gli aggiornamenti dei plugin gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, così come il binding gst-libav e il server di streaming gst-rtsp-server, vengono sviluppati separatamente. A livello di API e ABI, la nuova versione è retrocompatibile con il ramo 1.0. I pacchetti binari saranno presto disponibili per Android, iOS, macOS e Windows (su Linux si consiglia di utilizzare i pacchetti dal distributore).
Miglioramenti chiave di GStreamer 1.28:
- Aggiunto un nuovo plugin HIP (Heterogeneous-computing Interface for Portability) per supportare l'interfaccia di programmazione per calcoli eterogenei sviluppata da AMD, in cui oltre alla CPU vengono utilizzati strumenti di calcolo parallelo GPU. HIP semplifica l'implementazione del supporto per diverse GPU in un'unica base di codice (per eseguire su GPU AMD viene utilizzato lo stack ROCm, mentre per GPU NVIDIA è previsto un layer di traduzione in CUDA). Il plugin fornisce componenti implementati utilizzando HIP per eseguire operazioni come mescolamento video, conversioni tra spazi colore, ridimensionamento video e organizzazione dello scambio di dati tra memoria di sistema e memoria video. Inoltre, è stata preparata una libreria per integrare il supporto HIP nelle applicazioni.
- Aggiunta la supporto per lo standard di codifica video LCEVC (Low Complexity Enhancement Video Coding), che implementa uno strato aggiuntivo con metadati per migliorare la qualità video sopra i codec standard H.265 e H.266. L'implementazione dell'encoder e del decoder LCEVC si basa su librerie del SDK V-Nova.
- Aggiunta la supporto per le funzionalità dell'API grafica Vulkan per accelerare la decodifica video nei formati AV1 e VP9 e la codifica video nel formato H.264. Nella decodifica video H.265 basata su Vulkan è stata aggiunta la supporto per la profondità di colore a 10 bit per canale.
- Nell'elemento gtkwaylandsink, progettato per il rendering utilizzando GTK4 e Wayland, sono state ampliate le funzionalità per la gestione del colore, ad esempio è stata aggiunta la supporto per l'interpretazione e l'impostazione dei metadati HDR10.
- Aggiunto un nuovo elemento per la separazione delle fonti audio (ad esempio, la separazione della voce dalla musica di sottofondo), basato sulla libreria charon-audio, che implementa il metodo Demucs in Rust. Inoltre, è stato incluso un plugin Deepgram per il riconoscimento vocale, scritto in Rust.
- Ampliate le capacità di analisi e riconoscimento degli oggetti. Aggiunti elementi per combinare e separare le analisi. Implementati il classificatore tensor-decoder, il rivelatore di volti facedetector, il rivelatore di oggetti YOLOv8, un elemento per l'esecuzione e un decodificatore per il modello di riconoscimento degli oggetti YOLOX. Aggiunto l'elemento tensordecodebin per la connessione automatica dei decodificatori e un elemento per l'esecuzione di modelli AI tramite LiteRT (che sostituisce TensorFlow Lite).
- Aggiunto un nuovo elemento per la decodifica di immagini GIF, scritto in Rust e supportante animazioni cicliche.
- Nell'elemento input-selector è stato implementato un meccanismo a due fasi per il passaggio tra i flussi di input (sinkpad), escludendo la possibilità di stati di race durante il passaggio.
- Nell'elemento webrtcsink è stato aggiunto il supporto per l'accelerazione hardware della codifica tramite VA-API e la possibilità di un nuovo accordo di connessione.
- Aggiunti elementi per combinare ed estrarre flussi nel formato dello standard di trasmissione ST-2038.
- Nell'elemento fallbacksrc è stato aggiunto il supporto per flussi codificati.
- Nel contenitore multimediale FLV, utilizzato per le trasmissioni RTMP, è migliorato il supporto per il video H.265 e aggiunto il supporto per l'audio multicanale.
- Nell'elemento glupload è stato aggiunto il supporto per un caricatore basato su udmabuf, che consente la condivisione dei buffer tra decoder/sorgenti software e GPU, motori di visualizzazione (wayland) e altri dispositivi.
- Aggiunto l'elemento qml6 per il rendering utilizzando Qt6 QML.
- Nella libreria per il lavoro con i video sono state aggiunte operazioni per il ritaglio, la scala, la rotazione e il traslazione.
- Aggiunto l'oggetto GstContext, che consente l'uso di un pool condiviso di flussi durante l'esecuzione di elementi per migliorare le prestazioni di operazioni come il compositing e la trasformazione video.
- Aggiunto l'elemento icecastsink per ricevere flussi da IceCast, che supporta il formato AAC e scritto in Rust.
- Aggiunto un nuovo elemento di clonazione della voce ElevenLabs.
- Nel sintetizzatore vocale è stata aggiunta una modalità per accelerare la riproduzione mantenendo il tono.
- È stato aggiunto un elemento vmaf per la valutazione della qualità video utilizzando il framework VMAF di Netflix.
- È stato aggiunto un nuovo plugin per la decodifica audio MPEG-H, basato sul decodificatore Fraunhofer MPEG-H e in grado di supportare l'estrazione di contenitori multipli MP4.
- È stata ampliata la supporto per i sottotitoli nascosti (CC - Closed Captions) e per l'elaborazione del testo.
Fonte: opennet.ru
