Wydanie rav1e 0.3, kodera AV1 w Rust

Odbyła się problem rav1e 0.3, wysokowydajny koder formatu kodowania wideo AV1, opracowany przez społeczności Xiph i Mozilla. Koder napisany jest w języku Rust i różni się od referencyjnego kodera libaom znacznie zwiększając prędkość kodowania i większą dbałość o bezpieczeństwo. Kod projektu dystrybuowane przez na licencji BSD.

Obsługiwane są wszystkie główne funkcje AV1, w tym obsługa
ramki zakodowane wewnętrznie i zewnętrznie (wewnątrz- и między-ramki), superbloki 64x64, podpróbkowanie chrominancji 4:2:0, 4:2:2 i 4:4:4, 8-, 10- i 12-bitowe kodowanie głębi kolorów, zniekształcenie optymalizacyjne RDO (optymalizacja zniekształceń szybkości), różne tryby przewidywania zmian międzyramkowych i identyfikacji transformacji, kontrolowania szybkości przepływu i wykrywania obcięcia sceny.

Format AV1 jest zauważalny przewyższa H.264 i VP9 pod względem możliwości kompresji, ale ze względu na złożoność algorytmów je realizujących wymaga znacznie więcej czasu na kodowanie (pod względem szybkości kodowania libaom jest setki razy gorszy od libvpx-vp9 i tysiące razy gorszy od x264).
Koder rav1e oferuje 11 poziomów wydajności, z których najwyższy zapewnia prędkość kodowania zbliżoną do rzeczywistej. Koder jest dostępny zarówno jako narzędzie wiersza poleceń, jak i jako biblioteka.

W nowej wersji:

  • Zaproponowano szybszy tryb kodowania Prędkość 10;
  • Zmniejszono rozmiar zestawów binarnych (na platformie x86_64/Linux biblioteka zajmuje około 3 MB);
  • Czas montażu skrócony o około 14%;
  • Dodano wielowątkowy filtr do usuwania artefaktów blokowych z wideo (odblokowywanie);
  • Dla architektury x86_64 zaimplementowano dodatkowe optymalizacje z wykorzystaniem instrukcji SIMD oraz rozszerzono zastosowanie autowektoryzacji;
  • Liczba operacji alokacji pamięci została zmniejszona o 1/6;
  • W RDO (optymalizacja zniekształceń szybkości) poprawiono logikę tłumienia zniekształceń wewnątrzklatkowych;
  • Niektóre operacje zostały przeniesione z arytmetyki zmiennoprzecinkowej do obliczeń na liczbach całkowitych;
  • Jakość kodowania na drugim poziomie prędkości została poprawiona o 1-2%;
  • обавлен nowy filtr przewidywania kierunku ruchu (Intra Edge);
  • Dodano opcję "-S" (--switch-frame-interval) w celu określenia interwału przełączania pomiędzy ramkami;
  • Dodano obsługę kompilacji dla platformy wasm32-wasi (Interfejs systemu WebAssembly).

Źródło: opennet.ru

Dodaj komentarz