เบเบฒเบ™เบ›เปˆเบญเบ rav1e 0.3, เบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” AV1 เปƒเบ™ Rust

เป„เบ”เป‰เบˆเบฑเบ”เบ‚เบถเป‰เบ™ เบ›เปˆเบญเบเบ•เบปเบง rav1e 0.3, เบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฎเบนเบšเปเบšเบšเบงเบดเบ”เบตเป‚เบญเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡ AV1, เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเบŠเบธเบกเบŠเบปเบ™ Xiph เปเบฅเบฐ Mozilla. เบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™ Rust เปเบฅเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” libaom เบญเป‰เบฒเบ‡เบญเบตเบ‡เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเปเบฅเบฐเป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบเบฑเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™ เปเบˆเบเบขเบฒเบเป‚เบ”เบ เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” BSD.

เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ” AV1 เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™
เบเบญเบšเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบžเบฒเบเปƒเบ™ เปเบฅเบฐเบžเบฒเบเบ™เบญเบ (เบžเบฒเบเปƒเบ™ ะธ inter-frames), 64x64 superblocks, 4:2:0, 4:2:2 เปเบฅเบฐ 4:4:4 chroma subsampling, 8-, 10- เปเบฅเบฐ 12-bit เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบชเบตเบ„เบงเบฒเบกเป€เบฅเบดเบ, RDO (Rate-distortion optimization) optimization distortion, เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ•เปˆเบฒเบ‡เป†โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ„เบฒเบ”โ€‹เบ„เบฐโ€‹เป€เบ™โ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡ interframe เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบเบฒเบ™โ€‹เบซเบฑเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹, เบเบฒเบ™โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เบญเบฑเบ”โ€‹เบ•เบฒโ€‹เบเบฒเบ™โ€‹เป„เบซเบผโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบเบฒเบ™โ€‹เบ•เบฑเบ”โ€‹เบชเบฒเบโ€‹.

เบฎเบนเบšเปเบšเบš AV1 เปเบกเปˆเบ™เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™ outstrips H.264 เปเบฅเบฐ VP9 เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”, เปเบ•เปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ‚เบญเบ‡ algorithms เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบงเบเบกเบฑเบ™. เบกเบฑเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบต เป€เบงเบฅเบฒเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” (เปƒเบ™เบ„เบงเบฒเบกเป„เบงเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”, libaom เปเบกเปˆเบ™เบซเบผเบฒเบเบฎเป‰เบญเบเบ„เบฑเป‰เบ‡เบขเบนเปˆเบซเบฅเบฑเบ‡ libvpx-vp9, เปเบฅเบฐเบซเบผเบฒเบเบžเบฑเบ™เป€เบ—เบทเปˆเบญเบขเบนเปˆเบซเบฅเบฑเบ‡ x264).
เบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” rav1e เบชเบฐเบซเบ™เบญเบ‡ 11 เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบงเบฒเบกเป„เบงเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบเป‰เบเบฑเบšเป€เบงเบฅเบฒเบˆเบดเบ‡. เบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบ—เบฑเบ‡เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปƒเบŠเป‰เปเบ–เบงเบ„เบณเบชเบฑเปˆเบ‡ เปเบฅเบฐเป€เบ›เบฑเบ™เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”.

เปƒเบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เปƒเบซเบกเปˆโ€‹:

  • เบชเบฐเป€เปœเบตเบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป„เบงเบ‚เบถเป‰เบ™ เบ„เบงเบฒเบกเป„เบง 10;
  • เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบชเบญเบ‡โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบซเบผเบธเบ”โ€‹เบฅเบปเบ‡ (เปƒเบ™โ€‹เป€เบงโ€‹เบ—เบต x86_64/Linux เบซเปโ€‹เบชเบฐโ€‹เบซเบกเบธเบ”โ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เป€เบ–เบดเบ‡ 3MBโ€‹)โ€‹;
  • เป€เบงเบฅเบฒเบ›เบฐเบเบญเบš เบซเบผเบธเบ”เบฅเบปเบ‡เบ›เบฐเบกเบฒเบ™ 14%;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบซเบผเบฒเบเบเบฐเบ—เบนเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ–เบญเบ™ block artifacts เบˆเบฒเบเบงเบดเบ”เบตเป‚เบญ (deblocking);
  • เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐ x86_64, เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡ SIMD เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ auto-vectorization เป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบ;
  • เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป„เบ”เป‰เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡เป‚เบ”เบ 1/6;
  • เปƒเบ™ RDO (เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบญเบฑเบ”เบ•เบฒเบšเบดเบ”เป€เบšเบทเบญเบ™), เป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เบšเบดเบ”เป€เบšเบทเบญเบ™เบžเบฒเบเปƒเบ™เบเบญเบšเป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡;
  • เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป„เบ”เป‰เบ–เบทเบเบเป‰เบฒเบเบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบฅเบเป€เบฅเบเบ„เบฐเบ™เบดเบ”เบˆเบธเบ”เบฅเบญเบเป„เบ›เบซเบฒเบเบฒเบ™เบ„เปเบฒเบ™เบงเบ™เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบก;
  • เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ„เบงเบฒเบกเป„เบงเบ—เบตเบชเบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ 1-2%;
  • เป€เบžเบตเปˆเบกเปเบฅเป‰เบง เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบ—เบดเบ”เบ—เบฒเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเปƒเบซเบกเปˆ (Intra edge);
  • เป€เบžเบตเปˆเบกเบ—เบฒเบ‡เป€เบฅเบทเบญเบ "-S" (--switch-frame-interval) เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป„เบฅเบเบฐเบเบฒเบ™เบชเบฐเบซเบผเบฑเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เป€เบŸเบฃเบก;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบต wasm32-wasi (เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบฅเบฐเบšเบปเบš WebAssembly).

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™