Rust์˜ AV1 ์ธ์ฝ”๋”์ธ rav0.3e 1 ์ถœ์‹œ

์ผ์–ด๋‚ฌ๋‹ค ๋ฌธ์ œ rav1e 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% ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋จ ์ƒˆ๋กœ์šด ๋ชจ์…˜ ๋ฐฉํ–ฅ ์˜ˆ์ธก ํ•„ํ„ฐ(์ธํŠธ๋ผ ์—์ง€);
  • ํ”„๋ ˆ์ž„ ๊ฐ„ ์ „ํ™˜ ๊ฐ„๊ฒฉ์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์˜ต์…˜ "-S"(--switch-frame-interval)๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • wasm32-wasi ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ๋นŒ๋“œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์›น์–ด์…ˆ๋ธ”๋ฆฌ ์‹œ์Šคํ…œ ์ธํ„ฐํŽ˜์ด์Šค).

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€