Po półtora roku prac rozwojowych, ukazał się GStreamer 1.20. Jest to wieloplatformowy zestaw komponentów napisany w języku C, przeznaczony do tworzenia szerokiej gamy aplikacji multimedialnych, od odtwarzaczy multimedialnych i konwerterów plików audio/wideo, po aplikacje VoIP i systemy streamingowe. Kod GStreamera jest rozpowszechniany na licencji LGPLv2.1. Jednocześnie dostępne są aktualizacje wtyczek gst-plugins-base 1.20, gst-plugins-good 1.20, gst-plugins-bad 1.20, gst-plugins-ugly 1.20, a także wrappera gst-libav 1.20 i serwera streamingowego gst-rtsp-server 20. Nowa wersja jest wstecznie kompatybilna z gałęzią 1.0 na poziomie API i ABI. Wkrótce zostaną przygotowane wersje binarne dla GStreamera. Android, IOS, macOS и Windows (W Linux (Zaleca się korzystanie z pakietów z dystrybucji).
Kluczowe ulepszenia w GStreamer 1.20:
- Rozwój w GitLabie został przestawiony na korzystanie z jednego repozytorium wspólnego dla wszystkich modułów.
- Dodano nową, wysokopoziomową bibliotekę GstPlay, która zastępuje API GstPlayer i oferuje podobną funkcjonalność odtwarzania treści, różniącą się tym, że zamiast sygnałów GObject wykorzystuje się szynę komunikatów do powiadamiania aplikacji.
- Dodano obsługę dekodowania informacji o przezroczystości WebM, umożliwiając odtwarzanie filmów VP8/VP9 z przezroczystymi obszarami.
- Profile kodowania obsługują teraz ustawianie dodatkowych właściwości specyficznych dla aplikacji.
- Compositor obsługuje wielowątkową konwersję i miksowanie wideo.
- Klasy depayloader i payloader mają ujednoliconą obsługę pracy z dodatkowymi nagłówkami RTP (rozszerzenia nagłówka RTP).
- Dodano obsługę mechanizmu SMPTE 2022-1 2-D (Forward Error Correction).
- Encodebin i transcodebin dla kodeków VP8, VP9 i H.265 implementują tryb inteligentnego kodowania, w którym transkodowanie odbywa się tylko wtedy, gdy jest to konieczne, a przez resztę czasu przesyłany jest istniejący strumień.
- Wtyczka zuphttpsrc jest teraz kompatybilna z bibliotekami libsoup2 i libsoup3.
- Dodano możliwość dekodowania danych wejściowych na poziomie klatek pośrednich (podramki), co pozwala na rozpoczęcie dekodowania bez oczekiwania na odbiór pełnej klatki. Obsługa tej optymalizacji jest dostępna w dekoderach OpenJPEG JPEG 2000, FFmpeg H.264 i OpenMAX H.264/H.265.
- Podczas dekodowania wideo dla protokołów RTP, WebRTC i RTSP zapewniona jest automatyczna obsługa utraty pakietów, uszkodzenia danych i żądań klatek kluczowych.
- Do pakerów kontenerów multimediów mp4 i Matroska dodano obsługę zmiany danych kodeków w locie, co umożliwia zmianę profilu, poziomu i rozdzielczości strumieni wejściowych H.264/H.265.
- Dodano tryb tworzenia pofragmentowanych kontenerów multimediów mp4.
- Do portu opartego na WPE (WebKit Port for Embedded) dodano obsługę dźwięku.
- Dodano możliwość użycia CUDA do konwersji przestrzeni kolorów, skalowania elementów i ładowania elementów.
- Dodano obsługę pamięci NVMM (NVIDIA Memory Module) dla elementów glutload i gldownload OpenGL.
- Ulepszona obsługa WebRTC.
- Zaproponowano nową wtyczkę dla VA-API (Video Acceleration API), obsługującą więcej dekoderów i elementów post-processingu.
- Oprócz buforów i list buforów interfejs API AppSink dodał obsługę zdarzeń.
- Do AppSrc dodano dodatkowe ustawienia dla kolejek wewnętrznych.
- Zaktualizowano powiązania języka Rust i dodano 26 nowych wtyczek napisanych w Rust (gst-plugins-rs).
- Dodano elementy aesdec i aesenc do szyfrowania i deszyfrowania przy użyciu algorytmu AES.
- Dodano elementy fakeaudiosink i videocodectestsink do testowania i debugowania.
- Ulepszone narzędzia do tworzenia minimalistycznych kompilacji GStreamera.
- Dodano możliwość budowania za pomocą FFmpeg 5.0.
- dla Linux Zaimplementowano bezstanowe wersje kodeków MPEG-2 i VP9.
- dla Windows Dekoder bazujący na Direct3D11/DXVA obsługuje teraz AV1 i MPEG-2.
Źródło: opennet.ru
