Po roku prac przedstawiono wydanie GStreamer 1.26, wieloplatformowego zestawu komponentów do tworzenia szerokiego zakresu aplikacji multimedialnych, od odtwarzaczy multimedialnych i konwerterów plików audio/wideo, po aplikacje VoIP i systemy strumieniowego przesyłania. Kod GStreamer jest rozpowszechniany na licencji LGPLv2.1. Osobno rozwijane są aktualizacje wtyczek gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, a także wiązka gst-libav i serwer strumieniowy gst-rtsp-server. Na poziomie API i ABI nowe wydanie jest wstecznie zgodne z gałęzią 1.0. Binaries będą wkrótce dostępne dla Androida, iOS, macOS i Windows (w Linuxie zaleca się korzystanie z pakietów z dystrybucji).
Kluczowe ulepszenia GStreamer 1.26:
- Dodano enkoder i dekoder formatu wideo VVC (Versatile Video Coding), znanego również jako standard kompresji wideo H.266, opracowanego wspólnie przez grupy robocze MPEG (ISO/IEC JTC 1) i VCEG (ITU-T), przy współpracy takich firm jak Apple, Ericsson, Intel, Huawei, Microsoft, Qualcomm i Sony. H.266 zastępuje H.265 (HEVC) i oferuje wysoką skuteczność przesyłania i przechowywania wszystkich rozdzielczości ekranu (od SD i HD po 4K i 8K), obsługuje wideo z rozszerzonym zakresem dynamicznym (HDR, High Dynamic Range) oraz wideo panoramiczne w trybie 360 stopni.
- Dodano enkoder i dekoder standardu kodowania wideo LCEVC (Low Complexity Enhancement Video Coding), implementującego dodatkową warstwę z metadanymi w celu poprawy jakości istniejących kodeków H.26x i MP4/ISOBMFF.
- Dodano enkoder i dekoder dla formatu obrazów JPEG XS, który jest promowany jako lekki system kodowania obrazów, zapewniający minimalne opóźnienia przy kodowaniu i dekodowaniu, skupiony na optymalizacji przesyłania sekwencji obrazów o bardzo wysokiej jakości (do 8K). JPEG XS pozwala znacząco obniżyć wymaganą przepustowość łącza bez zauważalnych dla ludzkiego oka strat w jakości.
- Dodano możliwość subsytucji i wyodrębniania ukrytych napisów dla formatów H.264 i H.265.
- Ulepszono wsparcie dla adaptacyjnego strumieniowania na bazie protokołów HLS (HTTP Live Streaming) i DASH (Dynamic Adaptive Streaming over HTTP). Dodano nowe odbiorniki multimedialne (sink) hlscmafsink i hlssink3 do wyjścia fragmentów CMAF (fMP4) oraz MPEG-TS, a także hlsmultivariantsink do wariantowego wyjścia.
- Do pakowacza i rozpakowacza kontenerów multimedialnych MPEG-TS dodano wsparcie dla kodeków H.266, JPEG XS, AV1 i VP9, a także metadanych SMPTE ST-2038 i ID3.
- Do formatów Matroska i ISO MP4 dodano pakowacze i rozpakowacze dla kodeka H.266/VVC. W MP4 dodano rozpakowacze dla wideo w formatach Hap i Lagarith.
- Dodano wsparcie dla SMPTE 2038, systemu do dołączania dodatkowych danych i metadanych do kontenerów multimedialnych.
- Ulepszono integrację z graficznym API Vulkan. Rozszerzono możliwości zarządzania pamięcią, wyboru przestrzeni kolorów, zarządzania urządzeniami i pracy w trybie pełnoekranowym. Dodano wsparcie dla rozszerzeń Vulkan, które przyspieszają dekodowanie wideo H264 i H265. Zwiększono wydajność kodera korzystającego z Vulkan.
- Ulepszono integrację z OpenGL. Dodano wsparcie dla dodatkowych formatów konwersji kolorów i formatów pikseli. Dodano wsparcie dla importu strumieni z użyciem DMABufs.
- Ulepszono integrację z biblioteką Qt6 i QML.
- Rozszerzono komponenty do integracji z CUDA i NVIDIA Video Codec SDK. Dodano koder formatu AV1 oparty na API NVCODEC.
- Zrealizowano bibliotekę gst-d3d12 z koderami i dekoderami opartymi na API Direct3D 12.
- Do stosu RTSP dodano wsparcie dla zarządzania kluczami MIKEY po stronie klienta.
- W audioconvert dodano wsparcie dla reorganizacji kanałów dźwiękowych.
- Do wtyczki opartej na bibliotece GTK3 dodano wsparcie dla OpenGL/WGL na platformie Windows.
- W elemencie imagefreeze dodano wsparcie dla formatów JPEG i PNG.
- W elemencie pitch zrealizowano możliwość odtwarzania wstecz.
- W elemencie rtmp2 ulepszono mechanizmy uwierzytelniania na serwerach RTP. Dodano wsparcie dla uwierzytelniania w CDN Limelight.
- Wtyczka do integracji z VA-API wzbogacona została o elementy przyspieszające dekodowanie H.266 (VVC), a także kodowanie VP8 i JPEG.
- Dodano elementy do pracy ze strumieniami opartymi na protokole QUIC (raw QUIC, RTP-over-QUIC i WebTransport).
- Zestaw gst-plugins-rs zawiera 23 nowe elementy lub wtyczki napisane w języku Rust. Wtyczki napisane w języku Rust mogą być używane w programach w dowolnych językach, a ich obsługa jest podobna do użycia wtyczek w C i C++.
Źródło: opennet.ru
