Po roce a půl vývoje byl vydán GStreamer 1.20, multiplatformní sada komponent napsaných v C pro vytváření široké škály multimediálních aplikací, od přehrávačů médií a převodníků audio/video souborů až po VoIP aplikace a streamovací systémy. Kód GStreamer je licencován pod LGPLv2.1. Současně jsou k dispozici aktualizace pluginů gst-plugins-base 1.20, gst-plugins-good 1.20, gst-plugins-bad 1.20, gst-plugins-ugly 1.20 a také vazba gst-libav 1.20 a Streamovací server gst-rtsp-server 20. Na úrovni API a ABI je nové vydání zpětně kompatibilní s větví 1.0. Binární sestavení budou brzy připravena pro Android, iOS, macOS a Windows (v Linuxu se doporučuje používat balíčky z distribuce).
Klíčová vylepšení v GStreamer 1.20:
- Vývoj na GitLabu přešel na používání jediného úložiště společného pro všechny moduly.
- Byla přidána nová knihovna GstPlay na vysoké úrovni, která nahrazuje GstPlayer API a nabízí podobnou funkcionalitu pro přehrávání obsahu, liší se tím, že místo signálů GObject používá k upozorňování aplikací sběrnici zpráv.
- Přidána podpora pro dekódování informací o průhlednosti WebM, umožňující přehrávání videí VP8/VP9 s průhlednými oblastmi.
- Profily kódování nyní podporují nastavení dalších vlastností specifických pro aplikaci.
- Compositor podporuje vícevláknovou konverzi a mixování videa.
- Třídy depayloader a payloader mají jednotnou podporu pro práci s dalšími hlavičkami RTP (RTP Header Extensions).
- Přidána podpora pro mechanismus SMPTE 2022-1 2-D (Forward Error Correction).
- Encodebin a transcodebin pro kodeky VP8, VP9 a H.265 implementují režim inteligentního kódování, ve kterém se překódování provádí pouze v případě potřeby a po zbytek času je stávající stream předán dál.
- Plugin souphttpsrc je nyní kompatibilní s libsoup2 a libsoup3.
- Přidána možnost dekódovat vstupní data na úrovni mezisnímků (sub-frame), což umožňuje zahájit dekódování bez čekání na příjem celého snímku. Podpora této optimalizace je obsažena v dekodérech OpenJPEG JPEG 2000, FFmpeg H.264 a OpenMAX H.264/H.265.
- Při dekódování videa pro protokoly RTP, WebRTC a RTSP je zajištěno automatické zpracování ztráty paketů, poškození dat a požadavků na klíčové snímky.
- Do balíčků kontejnerů médií mp4 a Matroska byla přidána podpora pro změnu dat kodeků za běhu, což umožňuje měnit profil, úroveň a rozlišení pro vstupní streamy H.264/H.265.
- Přidán režim pro vytváření fragmentovaných kontejnerů médií mp4.
- Do portu založeného na WPE (WebKit Port for Embedded) byla přidána podpora zvuku.
- Přidána možnost používat CUDA pro převod barevného prostoru, škálování prvků a načítání prvků.
- Přidána podpora paměti NVMM (NVIDIA Memory Module) pro prvky OpenGL glupload a gldownload.
- Vylepšená podpora WebRTC.
- Byl navržen nový plugin pro VA-API (Video Acceleration API), který podporuje více dekodérů a prvků následného zpracování.
- AppSink API přidalo podporu pro události kromě vyrovnávacích pamětí a seznamů vyrovnávacích pamětí.
- Do AppSrc byla přidána další nastavení pro interní fronty.
- Aktualizované vazby jazyka Rust a přidáno 26 nových pluginů napsaných v Rustu (gst-plugins-rs).
- Přidány prvky aesdec a aesenc pro šifrování a dešifrování pomocí algoritmu AES.
- Přidány prvky fakeaudiosink a videocodectestsink pro testování a ladění.
- Vylepšené nástroje pro vytváření minimalistických sestavení GStreamer.
- Přidána možnost stavět s FFmpeg 5.0.
- Pro Linux byly implementovány verze kodeků MPEG-2 a VP9, které fungují bez uložení stavu (Stateless).
- Pro Windows byla do dekodéru na bázi Direct3D11/DXVA přidána podpora AV1 a MPEG-2.
Zdroj: opennet.ru