Julkaistiin rav1e 0.3, AV1-kooderi Rustissa

tapahtui kysymys rav1e 0.3, korkean suorituskyvyn videokoodausformaatin enkooderi AV1, jonka ovat kehittäneet Xiph- ja Mozilla-yhteisöt. Enkooderi on kirjoitettu rust-kielellä ja eroaa referenssilibaom-kooderista lisäämällä merkittävästi koodausnopeutta ja lisäämällä huomiota turvallisuuteen. Projektin koodi jakelija BSD-lisenssillä.

Kaikki tärkeimmät AV1-ominaisuudet ovat tuettuja, mukaan lukien tuki
sisäisesti ja ulkoisesti koodatut kehykset (sisäinen и muun-kehykset), 64 x 64 superlohkot, 4:2:0, 4:2:2 ja 4:4:4 värin alinäytteenotto, 8-, 10- ja 12-bittinen värisyvyyskoodaus, RDO (Rate-distortion Optimation) -optimointivääristymä, erilaisia ​​tiloja kehysten välisten muutosten ennustamiseen ja muunnosten tunnistamiseen, virtausnopeuden ohjaamiseen ja kohtauksen katkaisun havaitsemiseen.

AV1-muoto on havaittavissa ylittää H.264 ja VP9 pakkausominaisuuksien suhteen, mutta niitä toteuttavien algoritmien monimutkaisuuden vuoksi vaatii huomattavasti enemmän aikaa koodaukseen (koodausnopeudessa libaom on satoja kertoja jäljessä libvpx-vp9:stä ja tuhansia kertoja x264:stä).
rav1e-kooderi tarjoaa 11 suorituskykytasoa, joista korkeimmat tarjoavat lähes reaaliaikaisia ​​koodausnopeuksia. Enkooderi on saatavana sekä komentorivityökaluna että kirjastona.

Uudessa versiossa:

  • Ehdotettu nopeampi koodaustila Nopeus 10;
  • Binäärikokoonpanojen kokoa on pienennetty (x86_64/Linux-alustalla kirjasto vie noin 3 Mt);
  • Kokoamisaika lyhennetty noin 14 %;
  • Lisätty monisäikeinen suodatin estää artefakteja videosta (deblocking);
  • x86_64-arkkitehtuurille on toteutettu lisäoptimointeja SIMD-ohjeiden avulla ja automaattisen vektoroinnin käyttöä on laajennettu;
  • Muistinvaraustoimintojen määrää on vähennetty 1/6:lla;
  • RDO:ssa (Rate-distortion Optimation) kehyksen sisäisten vääristymien vaimentamisen logiikkaa on parannettu;
  • Joitakin operaatioita on siirretty liukulukuaritmetiikasta kokonaislukulaskelmiin;
  • Koodauksen laatua toisella nopeustasolla on parannettu 1-2 %;
  • lisättyä uusi liikesuunnan ennustesuodatin (sisäreuna);
  • Lisätty vaihtoehto "-S" (--switch-frame-interval) kehysten välisen kytkentävälin määrittämiseksi;
  • Lisätty koontituki wasm32-wasi alustalle (WebAssembly-järjestelmän käyttöliittymä).

Lähde: opennet.ru

Lisää kommentti