Po roku prac wypuszczono GStreamer 1.22, wieloplatformowy zestaw komponentów do tworzenia szerokiej gamy aplikacji multimedialnych, od odtwarzaczy multimedialnych i konwerterów plików audio/wideo, po aplikacje VoIP i systemy przesyłania strumieniowego. Kod GStreamera jest objęty licencją LGPLv2.1. Oddzielnie opracowywane są aktualizacje wtyczek gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, a także powiązanie gst-libav i serwer przesyłania strumieniowego gst-rtsp-server . Na poziomie API i ABI nowa wersja jest kompatybilna wstecz z gałęzią 1.0. Już wkrótce zostaną przygotowane zestawy binarne dla systemów Android, iOS, macOS i Windows (w systemie Linux zaleca się korzystanie z pakietów z dystrybucji).
Kluczowe ulepszenia w GStreamer 1.22:
- Ulepszona obsługa formatu kodowania wideo AV1. Dodano możliwość użycia akceleracji sprzętowej do kodowania i dekodowania AV1 poprzez interfejsy API VAAPI/VA, AMF, D3D11, NVCODEC, QSV i Intel MediaSDK. Dodano nowe procedury obsługi RTP dla AV1. Ulepszone parsowanie AV1 w kontenerach MP4, Matroska i WebM. W skład zespołów wchodzą elementy z koderami i dekoderami AV1 bazującymi na bibliotekach dav1d i rav1e.
- Zaimplementowano wsparcie dla Qt6. Dodano element qml6glsink, który używa Qt6 do renderowania wideo wewnątrz sceny QML.
- Dodano elementy gtk4paintablesink i gtkwaylandsink do renderowania przy użyciu GTK4 i Wayland.
- Dodano nowych klientów do adaptacyjnego przesyłania strumieniowego, którzy obsługują protokoły HLS, DASH i MSS (Microsoft Smooth Streaming).
- Zapewnia możliwość tworzenia uproszczonych zespołów zoptymalizowanych pod kątem zmniejszania rozmiaru.
- Dodano obsługę simulcastu WebRTC i Google Congestion Control.
- Dostarczona jest prosta i samodzielna wtyczka do wysyłania za pośrednictwem WebRTC.
- Dodano nowy paker kontenerów multimediów MP4 z obsługą pofragmentowanych i niefragmentowanych danych.
- Dodano nowe wtyczki do usług przechowywania i transkrypcji dźwięku Amazon AWS.
- Zaktualizowano powiązania dla języka Rust. Dodano 19 nowych wtyczek, efektów i elementów napisanych w języku Rust (gst-plugins-rs). Należy zauważyć, że 33% zmian w nowym GStreamerze zostało zaimplementowanych w Ruście (zmiany dotyczą powiązań i wtyczek), a zestaw wtyczek gst-plugins-rs jest jednym z najaktywniej rozwijanych modułów GStreamera. Wtyczek napisanych w Rust można używać w programach w dowolnym języku, a praca z nimi przypomina korzystanie z wtyczek w C i C++.
- Wtyczki Rust są dostarczane jako część oficjalnych pakietów binarnych dla platform Windows i macOS (montaż i dostawa są obsługiwane dla systemów Linux, Windows i macOS).
- Zaimplementowano serwer multimediów oparty na WebRTC napisany w języku Rust, obsługujący WHIP (przyjmowanie HTTP przez WebRTC) i WHEP (wyjście HTTP przez WebRTC).
- Dodano element videocolorscale, który łączy możliwości konwersji wideo i skalowania.
- Ulepszona obsługa wideo o dużej głębi kolorów.
- Dodano obsługę zdarzeń na ekranie dotykowym do interfejsu API nawigacji.
- Dodano elementy korekcji sygnatury czasowej H.264/H.265 do rekonstrukcji PTS/DTS przed pakowaniem pojemników z mediami.
- Na platformie Linux ulepszono użycie DMA, aby współpracować z buforami podczas kodowania, dekodowania, filtrowania i renderowania wideo przy użyciu akceleracji sprzętowej.
- Poprawiono integrację z CUDA: dodano bibliotekę gst-cuda i element cudaconvertscale, zapewniono integrację z elementami D3D11 i NVIDIA dGPU NVMM.
- Poprawiono integrację z Direct3D11: dodano nową bibliotekę gst-d3d11, rozszerzono możliwości wtyczek d3d11screencapture, d3d11videosink, d3d11convert i d3d11compositor.
- W przypadku procesorów graficznych AMD zaimplementowano nowe, przyspieszane sprzętowo kodery wideo w formatach H.264 / AVC, H.265 / HEVC i AV1, zbudowane przy użyciu pakietu SDK AMF (Advanced Media Framework).
- Wtyczka Applemedia dodała obsługę kodowania i dekodowania wideo H.265/HEVC.
- Do wtyczki Androidmedia dodano obsługę kodowania wideo H.265/HEVC.
- Do wtyczek audiomixer, compositor, glvideomixer i d3d11compositor dodano właściwość force-live, aby wymusić włączenie trybu na żywo.
Źródło: opennet.ru