Po roku rozwoju, wydano GStreamer 1.22, wieloplatformowy zestaw komponentów do tworzenia szerokiego zakresu aplikacji multimedialnych, od odtwarzaczy multimedialnych i konwerterów audio/wideo, po aplikacje VoIP i systemy strumieniowego przesyłania. Kod GStreamer jest udostępniany na licencji LGPLv2.1. Osobno rozwijane są aktualizacje wtyczek gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, a także powiązania gst-libav i serwer strumieniowy gst-rtsp-server. Na poziomie API i ABI, nowa wersja jest wstecznie kompatybilna z gałęzią 1.0. Binarne wersje zostaną wkrótce przygotowane dla Androida, iOS, macOS i Windows (w przypadku Linuxa zaleca się korzystanie z pakietów z dystrybucji).
Kluczowe ulepszenia GStreamer 1.22:
- Poprawiono wsparcie dla formatu kodowania wideo AV1. Dodano możliwość wykorzystania sprzętowego przyspieszenia kodowania i dekodowania AV1 przez API VAAPI/VA, AMF, D3D11, NVCODEC, QSV oraz Intel MediaSDK. Dodano nowe RTP-handlerzy dla AV1. Ulepszono parsowanie AV1 w kontenerach MP4, Matroska i WebM. W skład budowy wchodzą elementy z kodkami i dekodkami AV1 opartymi na bibliotekach dav1d i rav1e.
- Zrealizowano wsparcie dla Qt6. Dodano element qml6glsink, wykorzystujący Qt6 do renderowania wideo wewnątrz sceny QML.
- Dodano elementy gtk4paintablesink i gtkwaylandsink do renderowania z użyciem GTK4 i Wayland.
- Dodano nowe klientów dla adaptacyjnego strumieniowania, wspierających protokoły HLS, DASH i MSS (Microsoft Smooth Streaming).
- Udostępniono możliwość tworzenia uproszczonych wersji zoptymalizowanych pod kątem zmniejszenia rozmiaru.
- Dodano wsparcie dla WebRTC simulcast i Google Congestion Control.
- Udostępniono prosty i samowystarczalny plugin do wysyłania przez WebRTC.
- Dodano nowy opakowacz kontenerów multimedialnych MP4 z wsparciem dla danych fragmentowanych i niefragmentowanych.
- Dodano nowe wtyczki do przechowywania w Amazon AWS i usługi transkrypcji dźwięku.
- Zaktualizowano powiązania dla języka Rust. Dodano 19 nowych wtyczek, efektów i elementów napisanych w Rust (gst-plugins-rs). Zauważono, że 33% z zmian w nowym GStreamer zostały zrealizowane w Rust (zmiany dotyczą powiązań i wtyczek), a zestaw wtyczek gst-plugins-rs jest jednym z najbardziej aktywnie rozwijanych modułów GStreamer. Wtyczki napisane w języku Rust mogą być używane w programach w dowolnych językach, a ich obsługa jest podobna do obsługi wtyczek w C i C++.
- Zapewniono dostawę wtyczek dla Rust w oficjalnych pakietach binarnych dla platform Windows i macOS (kompilacja i dostawa wspierana dla Linux, Windows i macOS).
- Zrealizowano napisany w Rust serwer medialny oparty na WebRTC, wspierający WHIP (WebRTC HTTP ingest) i WHEP (WebRTC HTTP egress).
- Dodano element videocolorscale, łączący w sobie możliwości konwersji i skalowania wideo.
- Ulepszono wsparcie dla wideo o dużej głębi kolorów.
- W API Navigation dodano wsparcie dla zdarzeń z ekranów dotykowych.
- Dodano elementy korekcji znaczników czasowych H.264/H.265 do rekonstrukcji PTS/DTS przed pakowaniem kontenerów medialnych.
- Na platformie Linux poprawiono zastosowanie DMA do współpracy z buforami podczas kodowania, dekodowania, filtrowania i renderowania wideo z użyciem przyspieszenia sprzętowego.
- Ulepszono integrację z CUDA: dodano bibliotekę gst-cuda i element cudaconvertscale, zapewniając integrację z elementami D3D11 i GPU NVIDIA NVMM.
- Ulepszono integrację z Direct3D11: dodano nową bibliotekę gst-d3d11, rozszerzając możliwości wtyczek d3d11screencapture, d3d11videosink, d3d11convert i d3d11compositor.
- Dla GPU AMD wprowadzono nowe sprzętowo przyspieszone kodeki wideo w formatach H.264/AVC, H.265/HEVC i AV1, zbudowane z wykorzystaniem SDK AMF (Advanced Media Framework).
- We wtyczce applemedia dodano wsparcie dla kodowania i dekodowania wideo H.265/HEVC.
- We wtyczce androidmedia dodano wsparcie dla kodowania wideo H.265/HEVC.
- We wtycznach audiomixer, compositor, glvideomixer i d3d11compositor dodano właściwość force-live, aby wymusić tryb live.
Źródło: opennet.ru
