Wydanie SVT-AV1 4.3.0, enkodera dla formatu wideo AV1

Opublikowano wydanie biblioteki SVT-AV1 4.3.0 (Scalable Video Technology AV1) z implementacjami kodera i dekodera formatu kodowania wideo AV1, które wykorzystują rozszerzenia sprzętowe obecne w procesorach x86_64 i ARM do przyspieszenia obliczeń. Projekt został stworzony przez firmę Intel we współpracy z Netflix w celu osiągnięcia poziomu wydajności odpowiedniego do transcodingu wideo w czasie rzeczywistym oraz zastosowania w usługach wideo na żądanie (VOD). Obecnie rozwój jest prowadzony pod auspicjami sojuszu Open Media (AOMedia), który nadzoruje rozwój formatu kodowania wideo AV1. Wcześniej projekt był rozwijany w ramach OpenVisualCloud, który również opracowuje kodery SVT-HEVC i SVT-VP9. Kod jest rozpowszechniany na licencji BSD.

SVT-AV1 może być kompilowany dla systemów opartych na dowolnych architekturach, które mają kompilator obsługujący standard C99, ale najlepsza wydajność osiągana jest w systemach x86_64, gdzie stosowane są optymalizacje assemblera oparte na instrukcjach SIMD (preferowane wsparcie AVX2 w CPU, ale jako minimum wystarczy SSE2). Zużycie pamięci zależy od liczby rdzeni procesora wykorzystywanych podczas kodowania, regulowane opcją „—lp”. Z powodu złożoności algorytmów stosowanych w AV1, kodowanie tego formatu wymaga znacznie więcej zasobów niż w przypadku innych formatów.

Wśród zmian w nowym wydaniu SVT-AV1:

  • Przeprowadzono optymalizację kompromisów jakość/szybkość dla wszystkich presetów, co pozwoliło zmniejszyć obciążenie CPU o 5-8% przy zachowaniu tego samego poziomu jakości, a także skrócić czas kodowania o 10-11% w trybie wieloprocesowym. Przyspieszono wykonywanie operacji eliminacji nieefektywnych trybów kodowania (MD — Decyzja o Trybie), obliczania wektorów ruchu (MV — Wektor Ruchu) oraz parametrów filtrów podczas kodowania, obliczania rozmiaru współczynników częstotliwości, wyszukiwania przesunięć subpikselowych, kopiowania bloków i odrzucania zbędnych detali za pomocą algorytmu RDOQ (Optymalizacja Ilości Kwantyzacji ze Względem na Zakłócenia). W trybie wieloprocesowym, aby oszczędzać zasoby, algorytm określania translacji zawartości ekranu jest teraz stosowany tylko do klatek I.
  • Dodano eksperymentalny flag „—fast-decode 3” w celu przyspieszenia dekodowania statycznych obrazów.
  • Dodano flagę „—fgs-table”, która włącza obsługę tabel ziarnistości (film grain), oraz API FILM_GRAIN_EVENT do określania parametrów ziarnistości przypisanych do klatek.
  • Zwiększona prędkość kodowania bezstratnego.
  • W trybie kodowania o niskich opóźnieniach wprowadzono równoległe przetwarzanie bloków (tile).
  • Dodano opcję „max_allowed_consecutive_frames_skips” do konfiguracji pomijania klatek w trybie utrzymania stałego bitrate'u (CBR).
  • Dodano parametr „max_hierarchical_levels” do zarządzania pulą buforów używanych podczas zmiany rozmiaru grup klatek pośrednich (mini-GOP — Grupa Klatek).
  • Dodano opcję budowania „—mobile-build” (w CMake — MOBILE_BUILD) do tworzenia 8-bitowej biblioteki dla RTC, VOD i AVIF. Dodano opcje CONFIG_ENABLE_* do wyłączenia kompilacji nieużywanych narzędzi kodujących.
  • Dla systemów x86 wdrożono 8-bitowe procesory CDEF na bazie instrukcji AVX2 i SSE4.1 oraz 16-bitowe transformacje bezpośrednie na bazie instrukcji AVX2 i AVX-512. Dodano zoptymalizowany kod do predykcji międzyklatkowej, pracy z paletami i transformacjami oparty na instrukcjach SSE4.1. Zoptymalizowano procesory do kwantyzacji, kopiowania bloków, obliczania zniekształceń i oceny różnic subpikselowych.
  • Dla systemów ARM dodano wersje procesorów przyspieszone za pomocą instrukcji procesora Neon.

Źródło: opennet.ru

Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS - ProHoster