เบเบฒเบ™เบ›เปˆเบญเบ 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 ะฟะพ ะฒะพะทะผะพะถะฝะพัั‚ัะผ ัะถะฐั‚ะธั, ะฝะพ ะธะท-ะทะฐ ัƒัะปะพะถะฝะตะฝะธั ั€ะตะฐะปะธะทัƒัŽั‰ะธั… ะธั… ะฐะปะณะพั€ะธั‚ะผะพะฒ เบกเบฑเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบต เป€เบงเบฅเบฒเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” (เปƒเบ™เบ„เบงเบฒเบกเป„เบงเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”, libaom เปเบกเปˆเบ™เบซเบผเบฒเบเบฎเป‰เบญเบเบ„เบฑเป‰เบ‡เบขเบนเปˆเบซเบฅเบฑเบ‡ libvpx-vp9, เปเบฅเบฐเบซเบผเบฒเบเบžเบฑเบ™เป€เบ—เบทเปˆเบญเบขเบนเปˆเบซเบฅเบฑเบ‡ x264).
เบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” rav1e เบชเบฐเบซเบ™เบญเบ‡ 11 เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบงเบฒเบกเป„เบงเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบเป‰เบเบฑเบšเป€เบงเบฅเบฒเบˆเบดเบ‡. เบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบ—เบฑเบ‡เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปƒเบŠเป‰เปเบ–เบงเบ„เบณเบชเบฑเปˆเบ‡ เปเบฅเบฐเป€เบ›เบฑเบ™เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”.

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

  • ะŸั€ะตะดะปะพะถะตะฝ ะฑะพะปะตะต ะฑั‹ัั‚ั€ั‹ะน ั€ะตะถะธะผ ะบะพะดะธั€ะพะฒะฐะฝะธั เบ„เบงเบฒเบกเป„เบง 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).

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

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