ΠžΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° rav1e 0.3, AV1 Π΅Π½ΠΊΠΎΠ΄Π΅Ρ€ Π²ΠΎ Rust

сС ΠΎΠ΄Ρ€ΠΆΠ° ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅ Ρ€Π°Π²1Π΅ 0.3, Π΅Π½ΠΊΠΎΠ΄Π΅Ρ€ Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ со високи пСрформанси AV1, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ сообщСствами Xiph ΠΈ Mozilla. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ написан Π½Π° языкС Rust ΠΈ отличаСтся ΠΎΡ‚ эталонного ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° libaom Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ скорости кодирования ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ ΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ бСзопасности. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° дистрибуирани ΠΎΠ΄ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° BSD.

ΠŸΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΈ сС ситС Π³Π»Π°Π²Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° AV1, Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ°Ρ‚Π°
Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΎ ΠΈ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΈ Ρ€Π°ΠΌΠΊΠΈ (ΠΈΠ½Ρ‚Ρ€Π°- ΠΈ Π˜Π½Ρ‚Π΅Ρ€-Ρ€Π°ΠΌΠΊΠΈ), 64x64 супСрблокови, 4:2:0, 4:2:2 ΠΈ 4:4:4 ΠΏΠΎΠ΄ΡΠ΅ΠΌΠΏΠ»ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ…Ρ€ΠΎΠΌΠΈ, 8-, 10- ΠΈ 12-Π±ΠΈΡ‚Π½ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π΄Π»Π°Π±ΠΎΡ‡ΠΈΠ½Π° Π½Π° Π±ΠΎΡ˜Π°Ρ‚Π°, RDO (ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΈΠ·ΠΎΠ±Π»ΠΈΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° стапката) ΠΈΠ·ΠΎΠ±Π»ΠΈΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°, Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΎ ΠΌΠ΅Ρ“ΡƒΡ€Π°ΠΌΠΊΠΈΡ‚Π΅ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° трансформации, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π±Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΡšΠ΅ Π½Π° ΡΠΊΡ€Π°Ρ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° сцСната.

Π—Π°Π±Π΅Π»Π΅ΠΆΠ»ΠΈΠ² Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΡ‚ AV1 Π½Π°Π΄ΠΌΠΈΠ½ΡƒΠ²Π° H.264 ΠΈ VP9 Π²ΠΎ однос Π½Π° моТноститС Π·Π° ΠΊΠΎΠΌΠΏΡ€Π΅ΡΠΈΡ˜Π°, Π½ΠΎ ΠΏΠΎΡ€Π°Π΄ΠΈ слоТСноста Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΡ‚Π΅ ΠΊΠΎΠΈ Π³ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π°Ρ‚ Π±Π°Ρ€Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ повСќС Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ (Π²ΠΎ Π±Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅, libaom Π΅ стотици ΠΏΠ°Ρ‚ΠΈ Π·Π°Π΄ libvpx-vp9 ΠΈ ΠΈΠ»Ρ˜Π°Π΄Π½ΠΈΡ†ΠΈ ΠΏΠ°Ρ‚ΠΈ Π·Π°Π΄ x264).
ΠšΠΎΠ΄Π΅Ρ€ΠΎΡ‚ rav1e Π½ΡƒΠ΄ΠΈ 11 Π½ΠΈΠ²ΠΎΠ° Π½Π° пСрформанси, ΠΎΠ΄ ΠΊΠΎΠΈ Π½Π°Ρ˜Π²ΠΈΡΠΎΠΊΠΈΡ‚Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ Π±Ρ€Π·ΠΈΠ½ΠΈ Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ рСчиси Π²ΠΎ Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. ΠšΠΎΠ΄Π΅Ρ€ΠΎΡ‚ Π΅ достапСн ΠΈ ΠΊΠ°ΠΊΠΎ Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° линија ΠΈ ΠΊΠ°ΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°.

Π’ΠΎ Π½ΠΎΠ²Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°:

  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ ΠΏΠΎΠ±Ρ€Π· Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ Π‘Ρ€Π·ΠΈΠ½Π° 10;
  • Π“ΠΎΠ»Π΅ΠΌΠΈΠ½Π°Ρ‚Π° Π½Π° Π±ΠΈΠ½Π°Ρ€Π½ΠΈΡ‚Π΅ склопови Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½Π° (Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° x86_64/Linux Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π°Ρ„Π°ΡœΠ° ΠΎΠΊΠΎΠ»Ρƒ 3MB);
  • Π’Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ Π·Π° ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 14%;
  • Π”ΠΎΠ΄Π°Π΄Π΅Π½ Ρ„ΠΈΠ»Ρ‚Π΅Ρ€ со повСќС нишки Π·Π° ΠΎΡ‚ΡΡ‚Ρ€Π°Π½ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π±Π»ΠΎΠΊ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ ΠΎΠ΄ Π²ΠΈΠ΄Π΅ΠΎ (Π΄Π΅Π±Π»ΠΎΠΊΠΈΡ€Π°ΡšΠ΅);
  • Π—Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° x86_64, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈ сС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ SIMD инструкции ΠΈ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° Π°Π²Ρ‚ΠΎ-Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π΅ ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅Π½Π°;
  • Π‘Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° распрСдСлба Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ Π·Π° 1/6;
  • Π’ΠΎ RDO (Rate-distortion optimization), Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π·Π° ΠΏΠΎΡ‚ΠΈΡΠ½ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΈΠ·ΠΎΠ±Π»ΠΈΡ‡ΡƒΠ²Π°ΡšΠ°Ρ‚Π° Π²ΠΎ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Ρ€Π°ΠΌΠΊΠ°Ρ‚Π° Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π°;
  • НСкои ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сС прСмСстСни ΠΎΠ΄ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Π°Ρ€ΠΈΡ‚ΠΌΠ΅Ρ‚ΠΈΠΊΠ° со ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Π° Π·Π°ΠΏΠΈΡ€ΠΊΠ° Π²ΠΎ прСсмСтки со Ρ†Π΅Π»ΠΈ Π±Ρ€ΠΎΠ΅Π²ΠΈ;
  • ΠšΠ²Π°Π»ΠΈΡ‚Π΅Ρ‚ΠΎΡ‚ Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° Π±Ρ€Π·ΠΈΠ½Π° Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ Π·Π° 1-2%;
  • Π”ΠΎΠ΄Π°Π΄Π΅Π½ΠΎ Π½ΠΎΠ² Ρ„ΠΈΠ»Ρ‚Π΅Ρ€ Π·Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ΅ насока Π½Π° двиТСњС (Intra Edge);
  • Π”ΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΎΠΏΡ†ΠΈΡ˜Π°Ρ‚Π° β€ž-Sβ€œ (--switch-frame-interval) Π·Π° ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΡ‚ Π½Π° ΠΏΡ€Π΅Ρ„Ρ€Π»ΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Ρ€Π°ΠΌΠΊΠΈ;
  • Π”ΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π° Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° wasm32-wasi (БистСмски ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ WebAssembly).

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€