Po roce a půl vývoje byl vydán GStreamer 1.20, multiplatformní sadu komponent napsanou v jazyce C pro vytváření širokého spektra multimediálních aplikací, od přehrávačů médií a konvertorů audio/video souborů až po VoIP aplikace a streamingové systémy. Kód GStreamer je distribuován pod licencí 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, stejně jako obal gst-libav 1.20 a streamingový server gst-rtsp-server 20. Na úrovni API a ABI je nové vydání zpětně kompatibilní s větví 1.0. Binaries pro Android, iOS, macOS a Windows budou brzy k dispozici (v Linuxu je doporučeno použít balíčky z distribuce).
Klíčová zlepšení GStreamer 1.20:
- Vývoj na GitLab byl převeden na používání jednotného repozitáře, který je společný pro všechny moduly.
- Byla přidána nová vysoceúrovňová knihovna GstPlay, která nahradila API GstPlayer a nabízí podobné funkce pro přehrávání obsahu, které se liší použitím sběrnice zpráv pro notifikace aplikací místo signálů GObject.
- Byla přidána podpora dekódování informací o transparentnosti ve formátu WebM, což umožňuje přehrávání videa VP8/VP9 s transparentními oblastmi.
- Do profilů kódování byla přidána podpora nastavení dodatečných vlastností specifických pro aplikace.
- Ve Compositor byla implementována podpora transformace a mixování videa v multithreadingovém režimu.
- V třídách depayloader a payloader byla unified podpora pro práci s dodatečnými hlavičkami RTP (RTP Header Extensions).
- Byla přidána podpora mechanismu předběžné korekce chyb SMPTE 2022-1 2-D (Forward Error Correction).
- V encodebin a transcodebin pro kodeky VP8, VP9 a H.265 byl implementován chytrý režim kódování ('smart encoding'), při kterém se překódování provádí pouze v případě potřeby, jinak se provádí průchod existujícího streamu.
- Byla zajištěna kompatibilita pluginu souphttpsrc s libsoup2 a libsoup3.
- Byla přidána možnost dekódování vstupních dat na úrovni mezikroků (sub-frame), což umožňuje začít dekódování, aniž by bylo nutné čekat na příjem celého snímku. Tato optimalizace je aktivována 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ěna automatická manipulace se ztrátou paketů, poškozením dat a žádostmi o klíčové snímky.
- Do obalovačů mediálních kontejnerů mp4 a Matroska byla přidána podpora pro dynamickou změnu datových codeců, což umožňuje měnit profil, úroveň a rozlišení pro vstupní toky H.264/H.265.
- Byl přidán režim vytváření fragmentovaných mediálních kontejnerů mp4.
- Do portu založeného na WPE (WebKit Port for Embedded) byla přidána podpora zvuku.
- Byla přidána možnost použít CUDA pro převod barevného prostoru, škálování prvků a načítání prvků.
- Pro prvky OpenGL glupload a gldownload byla přidána podpora paměti NVMM (NVIDIA Memory Module).
- Byla zlepšena podpora WebRTC.
- Byl navržen nový plugin pro VA-API (Video Acceleration API), který podporuje více dekodérů a prvků postprocessingu.
- Do API AppSink byla přidána podpora událostí kromě bufferů a seznamů bufferů.
- Do AppSrc byly přidány další možnosti pro interní fronty.
- Byly aktualizovány vazby v jazyce Rust a přidáno 26 nových pluginů napsaných v Rustu (gst-plugins-rs).
- Byly přidány prvky aesdec a aesenc pro šifrování a dešifrování pomocí algoritmu AES.
- Byly přidány prvky fakeaudiosink a videocodectestsink pro testování a ladění.
- Byly zlepšeny nástroje pro vytváření minimalistických sestavení GStreamer.
- Byla přidána možnost sestavení s FFmpeg 5.0.
- Pro Linux byly implementovány varianty codeců MPEG-2 a VP9, které pracují bez uchovávání stavu (Stateless).
- Pro Windows byla do dekodéru postaveného na Direct3D11/DXVA přidána podpora AV1 a MPEG-2.
Zdroj: opennet.ru
