Выпуск rav1e 0.3, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° AV1 Π½Π° языкС Rust

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

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ всС основныС возмоТности AV1, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ
Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅- ΠΈ внСшнС-ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ² (intra- ΠΈ inter-ΠΊΠ°Π΄Ρ€ΠΎΠ²), супСрблоков 64×64, Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ субдискрСтизации 4:2:0, 4:2:2 ΠΈ 4:4:4, 8-, 10- ΠΈ 12-разрядного кодирования Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ Ρ†Π²Π΅Ρ‚Π°, RDO (Rate-distortion optimization) ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ искаТСний, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ прСдсказания ΠΌΠ΅ΠΆΠΊΠ°Π΄Ρ€ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ выявлСния трансформаций, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ выявлСниС усСчСния сцСны.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ AV1 Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°Π΅Ρ‚ H.264 ΠΈ VP9 ΠΏΠΎ возмоТностям сТатия, Π½ΠΎ ΠΈΠ·-Π·Π° услоТнСния Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ сущСствСнно большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для кодирования (ΠΏΠΎ скорости кодирования libaom отстаёт ΠΎΡ‚ libvpx-vp9 Π² сотни Ρ€Π°Π·, Π° ΠΎΡ‚ x264 Π² тысячи Ρ€Π°Π·).
ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ rav1e прСдоставляСт 11 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ скорости, Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΠΊ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ доступСн ΠΊΠ°ΠΊ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ‚Π°ΠΊ ΠΈ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии:

  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ быстрый Ρ€Π΅ΠΆΠΈΠΌ кодирования Speed 10;
  • Π‘ΠΎΠΊΡ€Π°Ρ‰Ρ‘Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… сборок (Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ x86_64/Linux Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 3ΠœΠ‘);
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 14% сокращСно врСмя сборки;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ для удалСния Π±Π»ΠΎΡ‡Π½Ρ‹Ρ… Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ (deblocking);
  • Для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ x86_64 Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ с использованиСм инструкций SIMD ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΠ²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ;
  • На 1/6 сниТСно число ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΡŽ памяти;
  • Π’ RDO (Rate-distortion optimization) ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° подавлСния Π²Π½ΡƒΡ‚Ρ€ΠΈΠΊΠ°Π΄Ρ€ΠΎΠ²Ρ‹Ρ… искаТСний;
  • НСкоторыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ с использования Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Π½Π° цСлочислСнныС вычислСния;
  • На 1-2% ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΎ качСство кодирования Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ скорости;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ прСдсказания направлСния двиТСния (Intra edge);
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «-S» (—switch-frame-interval) для опрСдСлСния ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°Π΄Ρ€Π°ΠΌΠΈ;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сборки для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ wasm32-wasi (WebAssembly System Interface).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ