ืฉื—ืจื•ืจ ืฉืœ rav1e 0.3, ืžืงื•ื“ื“ AV1 ื‘- Rust

ื”ืชืจื—ืฉ ืกื•ื’ื™ื” rav1e 0.3, ืžืงื•ื“ื“ ืคื•ืจืžื˜ ืงื™ื“ื•ื“ ื•ื™ื“ืื• ื‘ืขืœ ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื AV1, ืฉืคื•ืชื— ืขืœ ื™ื“ื™ ื”ืงื”ื™ืœื•ืช Xiph ื•ืžื•ื–ื™ืœื”. ื”ืžืงื•ื“ื“ ื›ืชื•ื‘ ื‘-Rust ื•ืฉื•ื ื” ืžืžืงื•ื“ื“ ื”-Reference Libaom ืขืœ ื™ื“ื™ ื”ื’ื“ืœืช ืžื”ื™ืจื•ืช ื”ืงื™ื“ื•ื“ ืžืฉืžืขื•ืชื™ืช ื•ื”ื’ื‘ืจืช ืชืฉื•ืžืช ื”ืœื‘ ืœืื‘ื˜ื—ื”. ืงื•ื“ ืคืจื•ื™ืงื˜ ืžื•ืคืฅ ืขืœ ื™ื“ื™ ืชื—ืช ืจื™ืฉื™ื•ืŸ BSD.

ื›ืœ ื”ืชื›ื•ื ื•ืช ื”ืขื™ืงืจื™ื•ืช ืฉืœ AV1 ื ืชืžื›ื•ืช, ื›ื•ืœืœ ืชืžื™ื›ื”
ืžืกื’ืจื•ืช ืžืงื•ื“ื“ื•ืช ืคื ื™ืžื™ื•ืช ื•ื—ื™ืฆื•ื ื™ื•ืช (ืชื•ึนืš ะธ ื”ื™ืชืจ-frames), 64x64 superblocks, 4:2:0, 4:2:2 ื•-4:4:4 chroma subsampling, ืงื™ื“ื•ื“ ืขื•ืžืง ืฆื‘ืข ืฉืœ 8, 10 ื•-12 ืกื™ื‘ื™ื•ืช, ืขื™ื•ื•ืช ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ RDO (Rate-distortion optimization), ืžืฆื‘ื™ื ืฉื•ื ื™ื ืœื—ื™ื–ื•ื™ ืฉื™ื ื•ื™ื™ื ื‘ื™ืŸ-ืคืจื™ื™ื ื•ื–ื™ื”ื•ื™ ื˜ืจื ืกืคื•ืจืžืฆื™ื•ืช, ืฉืœื™ื˜ื” ื‘ืงืฆื‘ ื”ื–ืจื™ืžื” ื•ื–ื™ื”ื•ื™ ืงื˜ื™ืขื” ืฉืœ ืกืฆื ื”.

ืคื•ืจืžื˜ AV1 ืžื•ืจื’ืฉ ืžืชืขืœื” H.264 ื•-VP9 ืžื‘ื—ื™ื ืช ื™ื›ื•ืœื•ืช ื“ื—ื™ืกื”, ืืš ื‘ืฉืœ ืžื•ืจื›ื‘ื•ืช ื”ืืœื’ื•ืจื™ืชืžื™ื ื”ืžื™ื™ืฉืžื™ื ืื•ืชื ื“ื•ืจืฉ ื”ืจื‘ื” ื™ื•ืชืจ ื–ืžืŸ ืœืงื™ื“ื•ื“ (ื‘ืžื”ื™ืจื•ืช ื”ืงื™ื“ื•ื“, libaom ื ืžืฆื ืžืื•ืช ืคืขืžื™ื ืžืื—ื•ืจื™ libvpx-vp9, ื•ืืœืคื™ ืคืขืžื™ื ืžืื—ื•ืจื™ x264).
ืžืงื•ื“ื“ rav1e ืžืฆื™ืข 11 ืจืžื•ืช ื‘ื™ืฆื•ืขื™ื, ืฉื”ื’ื‘ื•ื”ื” ืฉื‘ื”ืŸ ืžืกืคืงืช ืžื”ื™ืจื•ื™ื•ืช ืงื™ื“ื•ื“ ื›ืžืขื˜ ื‘ื–ืžืŸ ืืžืช. ื”ืžืงื•ื“ื“ ื–ืžื™ืŸ ื”ืŸ ื›ืฉื™ืจื•ืช ืฉื•ืจืช ืคืงื•ื“ื” ื•ื”ืŸ ื›ืกืคืจื™ื™ื”.

ื‘ื’ืจืกื” ื”ื—ื“ืฉื”:

  • ืžื•ืฆืข ืžืฆื‘ ืงื™ื“ื•ื“ ืžื”ื™ืจ ื™ื•ืชืจ ืžื”ื™ืจื•ืช 10;
  • ื’ื•ื“ืœ ื”ืžื›ืœื•ืœื™ื ื”ื‘ื™ื ืืจื™ื™ื ื”ืฆื˜ืžืฆื (ื‘ืคืœื˜ืคื•ืจืžืช x86_64/Linux ื”ืกืคืจื™ื™ื” ืชื•ืคืกืช ื›-3MB);
  • ื–ืžืŸ ื”ื”ืจื›ื‘ื” ืžื•ืคื—ืช ื‘ื›-14%;
  • ื ื•ืกืฃ ืžืกื ืŸ ืžืจื•ื‘ื” ื”ืœื™ื›ื™ ืœื”ืกืจืช ื—ืคืฆื™ ื‘ืœื•ืง ืžื•ื•ื™ื“ืื• (ื‘ื™ื˜ื•ืœ ื—ืกื™ืžื”);
  • ืขื‘ื•ืจ ืืจื›ื™ื˜ืงื˜ื•ืจืช x86_64, ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื ื•ืกืคื•ืช ื™ื•ืฉืžื• ื‘ืืžืฆืขื•ืช ื”ื•ืจืื•ืช SIMD ื•ื”ืฉื™ืžื•ืฉ ื‘ื•ืงื˜ื•ืจื™ื–ืฆื™ื” ืื•ื˜ื•ืžื˜ื™ืช ื”ื•ืจื—ื‘;
  • ืžืกืคืจ ืคืขื•ืœื•ืช ื”ืงืฆืืช ื”ื–ื™ื›ืจื•ืŸ ื”ื•ืคื—ืช ื‘-1/6;
  • ื‘-RDO (ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืงืฆื‘ ืขื™ื•ื•ืช), ื”ื”ื™ื’ื™ื•ืŸ ืœื“ื™ื›ื•ื™ ืขื™ื•ื•ืชื™ื ืชื•ืš-ืžืกื’ืจืช ืฉื•ืคืจ;
  • ื—ืœืง ืžื”ืคืขื•ืœื•ืช ื”ื•ืขื‘ืจื• ืžืฉื™ืžื•ืฉ ื‘ืืจื™ืชืžื˜ื™ืงื” ืฉืœ ื ืงื•ื“ื” ืฆืคื” ืœื—ื™ืฉื•ื‘ื™ื ืฉืœืžื™ื;
  • ืื™ื›ื•ืช ื”ืงื™ื“ื•ื“ ื‘ืจืžืช ื”ืžื”ื™ืจื•ืช ื”ืฉื ื™ื™ื” ืฉื•ืคืจื” ื‘-1-2%;
  • ื ื•ืกืฃ ืžืกื ืŸ ื—ื“ืฉ ืœื—ื™ื–ื•ื™ ื›ื™ื•ื•ืŸ ืชื ื•ืขื” (Intra edge);
  • ื ื•ืกืคื” ืืคืฉืจื•ืช "-S" (--switch-frame-interval) ื›ื“ื™ ืœืงื‘ื•ืข ืืช ืžืจื•ื•ื— ื”ืžืขื‘ืจ ื‘ื™ืŸ ืžืกื’ืจื•ืช;
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื‘ื ื™ื™ื” ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžืช wasm32-wasi (ืžืžืฉืง ืžืขืจื›ืช WebAssembly).

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”