Skip to content

ha7sh17/libjpeg-turbo

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

license

Intro

์ด๋ฏธ์ง€, ๋น„๋””์˜ค ํ”„๋กœ์„ธ์‹ฑ์˜ ๊ธฐ์ดˆ๊ฐ€ ๋˜๋Š” JPEG ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ž‘์„ฑํ•œ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค.

์•„์ด๋””์–ด๋Š” digital_video_introduction์—์„œ ๋น„๋กฏ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
digital_video_introduction ๋Š” ๋น„๋””์˜ค ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ๋ˆ„๊ตฌ๋‚˜ ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ์นœ์ ˆํ•˜๊ฒŒ ์ž‘์„ฑ๋œ ์ž๋ฃŒ๋กœ ์ € ์Šค์Šค๋กœ๋„ ์ด ์ž๋ฃŒ๋กœ๋ถ€ํ„ฐ ๋งŽ์€ ๋„์›€์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ digital_video_introduction ์ž๋ฃŒ์—๋Š” ๋น„๋””์˜ค ํ”„๋กœ์„ธ์‹ฑ์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” ์ด๋ฏธ์ง€ ํ”„๋กœ์„ธ์‹ฑ์— ๋Œ€ํ•œ ์„ค๋ช…์ด ์—†๋Š” ์•„์‰ฌ์›€์ด ์žˆ์–ด, ๋ณธ ์ž๋ฃŒ๊ฐ€ ๊ทธ ์•„์‰ฌ์›€์„ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ์ฑ„์šธ ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

JPEG์€ ์•„์ฃผ ์˜ค๋ž˜๋œ ๊ธฐ์ˆ ์ด๋ผ ์ฑ…, ๋ธ”๋กœ๊ทธ ๋“ฑ ์ด๋ฏธ ์ž˜ ์„ค๋ช…ํ•ด๋†“์€ ์ž๋ฃŒ๊ฐ€ ๋งŽ์ง€๋งŒ,
JPEG ๊ธฐ์ˆ ์„ ์ฝ”๋“œ ๋ ˆ๋ฒจ๊นŒ์ง€ ์™„๋ฒฝํžˆ ์ดํ•ดํ•˜๊ณ ์žํ•˜๋Š” ์ œ ๊ฐœ์ธ์ ์ธ ํ•„์š”์— ์˜ํ•˜์—ฌ ๋ณธ ์ž๋ฃŒ๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋ณธ ์ž๋ฃŒ๋Š” 2023๋…„ ํ˜„์žฌ ๊ฐ€์žฅ ๋ฒ”์šฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” JPEG ์ธ์ฝ”๋”์ธ mozjpeg ์˜ ํฌํฌ ์›๋ณธ์ธ libjpeg-turbo๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋ณธ ์ž๋ฃŒ์—์„œ๋Š” JPEG ์ด๋ก ๊ณผ ํ•ด๋‹น ์ด๋ก ์— ํ•ด๋‹นํ•˜๋Š” libjpeg-turbo์˜ ์ฝ”๋“œ ์„ค๋ช…์˜ Pairํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ‰์ธ

์ธ์ฝ”๋”ฉ

์ƒ‰์ƒ, ํœ˜๋„, ์‹œ๊ฐ

์‹œ๊ฐ์€ ์ƒ‰์ƒ๋ณด๋‹ค ๋ช…์•”์— ๋” ๋ฏผ๊ฐํ•˜๋ฉฐ, ์ด๋ฅผ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‚ฌ์ง„์„ ๋ณด์„ธ์š”.

luminance vs color

๋งŒ์ผ ์™ผ์ชฝ์˜ ์ด๋ฏธ์ง€์—์„œ ์‚ฌ๊ฐํ˜• A์™€ B๊ฐ€ ๋™์ผํ•œ ์ƒ‰์ƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ•˜์…จ๋‹ค๋ฉด ์ •์ƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋‡Œ๋Š” ์ƒ‰์ƒ๋ณด๋‹ค๋Š” ๋ช…์•”์— ๋” ์‹ ๊ฒฝ์“ฐ๋„๋ก ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์ด์ง€์š”. ์˜ค๋ฅธ์ชฝ์˜ ์‚ฌ์ง„์—์„œ๋Š” ๊ฐ™์€ ์ƒ‰์ƒ์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์ปค๋„ฅํ„ฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ์˜ ๋‡Œ๋Š” ๋‘ ์‚ฌ๊ฐํ˜•์ด ๋™์ผํ•œ ์ƒ‰์ƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ์€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…

๋ˆˆ์€ ๋ณต์žกํ•œ ์žฅ๊ธฐ์ด๋ฉฐ, ๋งŽ์€ ๊ฒƒ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋‚˜ ์—ฌ๊ธฐ์„œ๋Š” ๋Œ€๋ถ€๋ถ„์€ ์›์ถ”์„ธํฌ์™€ ๊ฐ„์ƒ์„ธํฌ์— ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค. ๋ˆˆ์€ ์•ฝ 1์–ต 2์ฒœ๊ฐœ์˜ ๊ฐ„์ƒ์„ธํฌ์™€ 6๋ฐฑ๋งŒ๊ฐœ์˜ ์›์ถ”์„ธํฌ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด, ์ƒ‰์ƒ๊ณผ ๋ช…์•”์„ ๋ˆˆ์˜ ๊ฐ ๊ธฐ๋Šฅ๋“ค์— ์ž…๋ ฅํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ๊ฐ„์ƒ์„ธํฌ ๋Š” ๋Œ€๋ถ€๋ถ„ ๋น›์— ๋ฐ˜์‘ํ•˜๋Š” ๋ฐ˜๋ฉด์—, ์›์ถ”์„ธํฌ๋Š” ์ƒ‰์ƒ์— ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์ƒ‰์†Œ๋ฅผ ์ง€๋‹Œ ์„ธ ๊ฐ€์ง€ ํƒ€์ž…์˜ ์›์ถ” ์„ธํฌ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค: S-cones (ํŒŒ๋ž€์ƒ‰), M-cones (์ดˆ๋ก์ƒ‰) and L-cones (๋นจ๊ฐ„์ƒ‰).

๊ฐ„์ƒ ์„ธํฌ(๋ช…์•”)๊ฐ€ ์›์ถ” ์„ธํฌ(์ƒ‰์ƒ)๋ณด๋‹ค ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, ์ƒ‰์ƒ๋ณด๋‹ค ๋ช…์•”์„ ๋” ์ž˜ ๊ตฌ๋ถ„ํ•  ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์ง์ž‘ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

eyes composition

๋Œ€๋น„ ์ธ์‹ ๋Šฅ๋ ฅ

์‹คํ—˜ ์‹ฌ๋ฆฌํ•™ ๋ฐ ๋‹ค๋ฅธ ๋ถ„์•ผ๋“ค์˜ ์—ฐ๊ตฌ์ž๋“ค์€ ์‚ฌ๋žŒ์˜ ์‹œ๊ฐ์— ๋Œ€ํ•œ ๋งŽ์€ ์ด๋ก ์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋Œ€๋น„ ์ธ์‹ ๋Šฅ๋ ฅ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์€ ๋น›์˜ ๊ณต๊ฐ„๊ณผ ์‹œ๊ฐ„๊ณผ ๊ด€๋ จ ์žˆ์œผ๋ฉฐ, ์ฃผ์–ด์ง„ ์ดˆ๊ธฐ์— ๊ด€์ธกํ•œ ๋น›์ด ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ด, ๊ด€์ธก์ž๊ฐ€ ๋ณ€ํ™”๊ฐ€ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋งํ•˜๊ธฐ๊นŒ์ง€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ณ€ํ™”๊ฐ€ ํ•„์š”ํ•œ์ง€์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. function์ด ๋ณต์ˆ˜ํ˜•์œผ๋กœ ๋˜์–ด ์žˆ๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ๋ฐ”๋กœ ๋Œ€๋น„ ์ธ์‹ ๋Šฅ๋ ฅ์€ ๋ช…์•” ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ƒ‰์ƒ๋„ ๊ด€๊ณ„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ์‹คํ—˜์˜ ๊ฒฐ๊ณผ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์— ์šฐ๋ฆฌ์˜ ๋ˆˆ์ด ์ƒ‰์ƒ๋ณด๋‹ค ๋ช…์•”์— ๋” ๋ฏผ๊ฐํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋งํ•ด์ค๋‹ˆ๋‹ค.

์ด์ œ ๋ฃจ๋งˆ(์ด๋ฏธ์ง€์˜ ๋ช…๋„)์— ๋” ๋ฏผ๊ฐํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด๋ฅผ ์ด์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋””์ฝ”๋”ฉ

Templete

Intro

๋น„๋””์˜ค ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์นœ์ ˆํ•œ ์†Œ๊ฐœ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค. ๋น„๋ก ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž/์—”์ง€๋‹ˆ์–ด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ž‘์„ฑ ํ–ˆ์ง€๋งŒ, ๋ˆ„๊ตฌ๋‚˜ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๊ธ€์ด ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๋Š” ๋น„๋””์˜ค ๊ธฐ์ˆ  ๋‰ด๋น„๋ฅผ ์œ„ํ•œ ๋ฏธ๋‹ˆ ์›Œํฌ์ƒต์—์„œ ๋น„๋กฏ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ์‰ฌ์šด ๋‹จ์–ด, ๋งŽ์€ ์‹œ๊ฐ ์ž๋ฃŒ ๊ทธ๋ฆฌ๊ณ  ์‹ค์šฉ์ ์ธ ์˜ˆ์ œ๋“ค๋กœ ๋””์ง€ํ„ธ ๋น„๋””์˜ค์˜ ์ปจ์…‰์„ ์†Œ๊ฐœํ•˜๋ฉฐ ์–ด๋””์„œ๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์‹์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. ์–ธ์ œ๋‚˜ ์ˆ˜์ • ์‚ฌํ•ญ, ์ œ์•ˆ ๋“ฑ์„ ๋ณด๋‚ด์…”์„œ ๊ฐœ์„ ํ•ด์ฃผ์„ธ์š”.

์‹ค์Šต ์„น์…˜์—์„œ๋Š” ๋„์ปค๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํด๋ก ํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

git clone https://github.com/leandromoreira/digital_video_introduction.git
cd digital_video_introduction
./setup.sh

์•Œ๋ฆผ: ./s/ffmpeg๋‚˜ ./s/mediainfo ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ,ํ•„์š”๋กœ ํ•˜๋Š” ๋ชจ๋“  ์š”๊ตฌ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ๋„์ปค ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์‹ค์Šต ๋‚ด์šฉ์€ ์—ฌ๋Ÿฌ๋ถ„์ด ํด๋ก ํ•œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํด๋”์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ฃผํ”ผํ„ฐ ์˜ˆ์ œ์˜ ๊ฒฝ์šฐ, ./s/start_jupyter.sh๋กœ ์„œ๋ฒ„๋ฅผ ๋ฐ˜๋“œ์‹œ ์‹คํ–‰ํ•ด์•ผํ•˜๋ฉฐ URL์„ ๋ณต์‚ฌํ•ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ๋กœ๊ทธ

  • DRM ์‹œ์Šคํ…œ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • 1.0.0 ๋ฒ„์ „์ด ๋ฆด๋ฆฌ์ฆˆ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์š”์•ฝ ๋ฒ„์ „์˜ ์ค‘๊ตญ์–ด ๋ฒˆ์—ญ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ƒ‰์ธ

๊ธฐ์ดˆ ์šฉ์–ด

์ด๋ฏธ์ง€๋Š” 2์ฐจ์› ๋งคํŠธ๋ฆญ์Šค๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ƒ‰์ƒ์„ ๊ณ ๋ คํ•œ๋‹ค๋ฉด, ์ƒ‰์ƒ ๋ฐ์ดํ„ฐ ์ œ๊ณต์— ์‚ฌ์šฉ๋˜๋Š” ์ถ”๊ฐ€์ ์ธ ์ฐจ์›์ด ์žˆ๋Š” 3์ฐจ์› ๋งคํŠธ๋ฆญ์Šค๋กœ ์—ฌ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ผ์›์ƒ‰(๋นจ๊ฐ„์ƒ‰, ์ดˆ๋ก์ƒ‰, ํŒŒ๋ž€์ƒ‰)์„ ์‚ฌ์šฉํ•ด ์ƒ‰์ƒ๋“ค์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ, ๋นจ๊ฐ„์ƒ‰, ์ดˆ๋ก์ƒ‰, ํŒŒ๋ž€์ƒ‰ ์ˆœ์˜ ์„ธ ๊ฐ€์ง€ ํ‰๋ฉด์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

an image is a 3d matrix RGB

์ด ๋งคํŠธ๋ฆญ์Šค์˜ ๊ฐ๊ฐ์˜ ์ ์„ ํ”ฝ์…€(ํ™”์†Œ)๋ผ ๋ถ€๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํ”ฝ์…€์€ ์ฃผ์–ด์ง„ ์ƒ‰์ƒ์˜ ๊ฐ•๋„(๋ณดํ†ต ์ˆซ์ž ๊ฐ’)๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, ๋นจ๊ฐ„ ํ”ฝ์…€์€ ์ดˆ๋ก์ƒ์ด 0, ํŒŒ๋ž€์ƒ‰์ด 0์ด๊ณ  ๋นจ๊ฐ„์ƒ‰์ด ์ตœ๋Œ€์ธ ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€์š”. ํ•‘ํฌ ์ƒ‰์ƒ ํ”ฝ์…€์€ ์„ธ ๊ฐ€์ง€ ์ƒ‰์ƒ์˜ ์กฐํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ 0๋ถ€ํ„ฐ 255๊นŒ์ง€์˜ ์ˆซ์ž ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•‘ํฌ์ƒ‰ ํ”ฝ์…€์€ ๋นจ๊ฐ„์ƒ‰=255, ์ดˆ๋ก์ƒ‰=192, ํŒŒ๋ž€์ƒ‰=203์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

์ƒ‰์ƒ ์ด๋ฏธ์ง€๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•

์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ƒ‰์ƒ๋“ค์„ ํ‘œํ˜„ํ•˜๋Š”๋ฐ์—๋Š” ๋‹ค์–‘ํ•œ ๋ชจ๋ธ๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค๋ฉด RGB ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ๋•Œ 3๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋Œ€์‹ , ๊ฐ ํ”ฝ์…€์„ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ํ•œ ๋ฐ”์ดํŠธ๋งŒ ํ•„์š”ํ•œ ์ธ๋ฑ์Šค ํŒ”๋ ˆํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€์š”. ์ด๋Ÿฌํ•œ ๋ชจ๋ธ์—์„œ๋Š” 3์ฐจ์› ๋งคํŠธ๋ฆญ์Šค ๋Œ€์‹  2์ฐจ์› ๋งคํŠธ๋ฆญ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ‰์ƒ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•„๋‚„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒ‰์ƒ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜๋“ค์„ ํฌ๊ธฐํ•ด์•ผํ•˜์ฃ .

NES palette

์˜ˆ๋ฅผ๋“ค์–ด ์•„๋ž˜์˜ ์‚ฌ์ง„์„ ํ•œ ๋ฒˆ ๋ณด์„ธ์š”. ์ฒซ ๋ฒˆ์งธ ์–ผ๊ตด์€ ๋ชจ๋“  ์ƒ‰์ƒ์ด ํ‘œํ˜„๋˜์–ด์žˆ์ง€์š”. ๋‹ค๋ฅธ ๊ฒƒ๋“ค์€ ๋นจ๊ฐ„์ƒ‰, ์ดˆ๋ก์ƒ‰, ํŒŒ๋ž€์ƒ‰ ํ‰๋ฉด์ž…๋‹ˆ๋‹ค. (ํšŒ์ƒ‰ ํ†ค์œผ๋กœ ๋‚˜์˜ด)

RGB channels intensity

์—ฌ๊ธฐ์„œ ๋นจ๊ฐ„์ƒ‰(๋‘ ๋ฒˆ์งธ ์–ผ๊ตด์˜ ๋ฐ์€ ๋ถ€๋ถ„๋“ค)์ด ์ƒ‰์ƒ์— ๋งŽ์ด ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ํŒŒ๋ž€์ƒ‰(๋งˆ์ง€๋ง‰ ์–ผ๊ตด)์€ ๋Œ€๋ถ€๋ถ„ ๋งˆ๋ฆฌ์˜ค์˜ ๋ˆˆ๊ณผ ์˜ท์˜ ์ผ๋ถ€์—๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ƒ‰์ƒ์˜ ์˜ํ–ฅ๋ ฅ์ด ๋‚ฎ์€ ๋ถ€๋ถ„์€ ๋งˆ๋ฆฌ์˜ค์˜ ์ˆ˜์—ผ(๊ฐ€์žฅ ์–ด๋‘์šด ๋ถ€๋ถ„)์ž…๋‹ˆ๋‹ค.

๊ฐ๊ฐ์˜ ์ƒ‰์ƒ ๊ฐ•๋„๋Š” ํŠน์ •ํ•œ ์–‘์˜ ๋น„ํŠธ๋ฅผ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์–‘์ด๋ž€ ๋น„ํŠธ ๊นŠ์ด ์ž…๋‹ˆ๋‹ค. ๊ฐ ์ƒ‰์ƒ ํ‰๋ฉด๋‹น 8๋น„ํŠธ(0๋ถ€ํ„ฐ 255 ์‚ฌ์ด์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š”)๋ฅผ ํ• ์• ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด 24๋น„ํŠธ์˜ ์ƒ‰ ๊นŠ์ด(8 ๋น„ํŠธ * R/G/B์˜ 3๊ฐ€์ง€ ํ‰๋ฉด)๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉฐ, 2์˜ 24์Šน ๊ฐ€์ง€์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์„ธ์ƒ์—์„œ ๋น„ํŠธ๋กœ ์ด๋ฏธ์ง€๊ฐ€ ์บก์ณ๋˜๋Š” ์›๋ฆฌ์— ๋Œ€ํ•ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ํ›Œ๋ฅญํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€์˜ ๋˜ ๋‹ค๋ฅธ ์†์„ฑ์€ ํ•ด์ƒ๋„์ž…๋‹ˆ๋‹ค. ํ•ด์ƒ๋„๋Š” ์ฐจ์› ํ•˜๋‚˜์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๋Š” ํ”ฝ์…€์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ณดํ†ต width x height๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. ๊ทธ ์˜ˆ๋กœ ์•„๋ž˜์—๋Š” 4x4 ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

image resolution

์‹ค์Šต: ์ด๋ฏธ์ง€์™€ ์ƒ‰์ƒ ๊ฐ€์ง€๊ณ  ๋†€๊ธฐ

์ฃผํ”ผํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€์™€ ์ƒ‰ ๊ฐ€์ง€๊ณ  ๋†€๊ธฐ๋ฅผ ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด์š”.

์ด๋ฏธ์ง€ ํ•„ํ„ฐ(์™ธ๊ณฝ์„  ๊ฒ€์ถœ, ๊ฐ•์กฐ, ๋ธ”๋Ÿฌ)์— ๋Œ€ํ•ด ํ•™์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋‚˜ ๋น„๋””์˜ค๋ฅผ ๋‹ค๋ฃจ๋‹ค๋ณด๋ฉด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ์†์„ฑ์ธ ์ข…ํšก๋น„(aspect ratio) ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด๋ฏธ์ง€๋‚˜ ํ”ฝ์…€์˜ ํญ๊ณผ ๋†’์ด์˜ ๋น„๋ก€ ๊ด€๊ณ„๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด ์ด ์˜์ƒ ํ˜น์€ ์‚ฌ์ง„์€ 16x9์•ผ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ™”๋ฉด ์ข…ํšก๋น„(DAR) ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ๊ฐ๊ฐ์˜ ํ”ฝ์…€์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ˜•ํƒœ์— ๋Œ€ํ•œ ๊ฒƒ์€ ํ”ฝ์…€ ์ข…ํšก๋น„(PAR) ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

display aspect ratio

pixel aspect ratio

DVD๋Š” DAR 4:3์ด๋‹ค.

DVD์˜ ์‹ค์ œ ํ•ด์ƒ๋„๋Š” 704x480์ด์ง€๋งŒ 10:11(704x10/480x11)์˜ PAR๋กœ ์ธํ•ด 4:3์˜ ์ข…ํšก๋น„๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋น„๋””์˜ค๋Š” ๋˜๋‹ค๋ฅธ ์ฐจ์›์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์˜ ์ถ•์— ๋‚˜์—ด๋œ n๊ฐœ์˜ ํ”„๋ ˆ์ž„์˜ ์—ฐ์†์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ n์€ ํ”„๋ ˆ์ž„๋ ˆ์ดํŠธ ํ˜น์€ ์ดˆ๋‹น ํ”„๋ ˆ์ž„ ์ˆ˜ ์ž…๋‹ˆ๋‹ค.

video

๋น„๋””์˜ค์˜ ๋น„ํŠธ ๋ ˆ์ดํŠธ๋Š” ๋™์˜์ƒ์„ ํ‘œ์‹œํ•˜๋Š”๋ฐ ์ดˆ๋‹น ํ•„์š”ํ•œ ๋น„ํŠธ์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.

๋น„ํŠธ๋ ˆ์ดํŠธ = ํญ * ๋†’์ด * ๋น„ํŠธ ๊นŠ์ด * ์ดˆ๋‹น ํ”„๋ ˆ์ž„ ์ˆ˜

์˜ˆ๋ฅผ๋“ค์–ด ์–ด๋–ค ์˜์ƒ์ด 30fps, 24๋น„ํŠธ ํ”ฝ์…€ ๊นŠ์ด, 480x240์˜ ํ•ด์ƒ๋„์— ์••์ถ•์„ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋ผ๋ฉด ์ดˆ๋‹น 82,944,000๋น„ํŠธ ํ˜น์€ 82.944 Mbps (30x480x240x24)๊ฐ€ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๋น„ํŠธ ๋ ˆ์ดํŠธ๊ฐ€ ๊ฑฐ์˜ ์ผ์ •ํ•œ ๊ฒฝ์šฐ ์ด๋ฅผ ๊ณ ์ • ๋น„ํŠธ๋ ˆ์ดํŠธ(CBR)๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ ๊ฐ€๋ณ€์˜ ๊ฒฝ์šฐ์—๋Š” ๊ฐ€๋ณ€ ๋น„ํŠธ๋ ˆ์ดํŠธ(VBR)๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

์ด ๊ทธ๋ž˜ํ”„๋Š” ํ”„๋ ˆ์ž„์ด ๊ฒ€์€์ƒ‰์ธ ๋™์•ˆ์—๋Š” ๊ทธ๋ฆฌ ๋งŽ์€ ๋น„ํŠธ๋ฅผ ์†Œ๋น„ํ•˜์ง€ ์•Š๋Š” ์ œํ•œ๋œ VBR์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

constrained vbr

์ดˆ๊ธฐ์—๋Š” ์—”์ง€๋‹ˆ์–ด๋“ค์ด ์—ฌ๋ถ„์˜ ๋Œ€์—ญํญ ์†Œ๋ชจ ์—†์ด ๋‘ ๋ฐฐ์˜ ์ธ์ง€ ๊ฐ€๋Šฅํ•œ ํ”„๋ ˆ์ž„ ๋ ˆ์ดํŠธ๋กœ ๋น„๋””์˜ค๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ธฐ์ˆ ์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์ˆ ์€ ์ธํ„ฐ๋ ˆ์ด์‹ฑ ๋น„๋””์˜ค๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ด๋Š” 1ํ”„๋ ˆ์ž„์—์„œ ํ™”๋ฉด์˜ ์ ˆ๋ฐ˜์„ ๋ณด๋‚ด๊ณ  ๋‚˜๋จธ์ง€ ์ ˆ๋ฐ˜์„ ๊ทธ ๋‹ค์Œ ํ”„๋ ˆ์ž„์— ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚ ์˜ ํ™”๋ฉด์€ ๋Œ€๋ถ€๋ถ„ ํ”„๋กœ๊ทธ๋ ˆ์‹œ๋ธŒ ์Šค์บ” ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ ˆ์‹œ๋ธŒ๋Š” ๊ฐ ํ”„๋ ˆ์ž„์˜ ๋ชจ๋“  ๋ผ์ธ์„ ์ˆœ์„œ๋Œ€๋กœ ๊ทธ๋ฆฌ๋Š” ์˜์ƒ์„ ์ถœ๋ ฅ, ์ €์žฅ, ์ „์†กํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

interlaced vs progressive

์ด์ œ ์–ด๋–ป๊ฒŒ ์ด๋ฏธ์ง€๊ฐ€ ๋””์ง€ํ„ธ๋กœ ํ‘œํ˜„๋˜๋Š”์ง€, ์ƒ‰์ƒ์ด ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜๋˜์–ด ์˜์ƒ ํ‘œํ˜„์— ์–ด๋Š ์ •๋„์˜ ์ดˆ๋‹น ๋น„ํŠธ ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ์ง€, ๊ทธ๊ฒŒ ๊ณ ์ •(CBR)์ธ์ง€ ๊ฐ€๋ณ€(VBR)์ธ์ง€์— ๋Œ€ํ•œ ๊ฒƒ๊ณผ ํ•ด์ƒ๋„์™€ ํ”„๋ ˆ์ž„ ๋ ˆ์ดํŠธ์™€ ์ธํ„ฐ๋ ˆ์ด์Šค๋“œ, PAR์™€ ๊ฐ™์€ ๋งŽ์€ ์šฉ์–ด๋“ค์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

์—ฐ์Šต: ๋น„๋””์˜ค ์†์„ฑ ํ™•์ธ

ffmpeg์ด๋‚˜ mediainfo๋กœ ์†์„ฑ ์‚ดํŽด๋ณด๊ธฐ

์ค‘๋ณต ์ œ๊ฑฐ

์••์ถ• ์—†์ด๋Š” ๋น„๋””์˜ค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. 30fps์ธ 720p ํ•ด์ƒ๋„์˜ ํ•œ ์‹œ๊ฐ„ ์งœ๋ฆฌ ์˜์ƒ์€ 278GB*๋ฅผ ํ•„์š”๋กœํ•ฉ๋‹ˆ๋‹ค. DEFLATE(PKZIP, Gzip, PNG์— ์‚ฌ์šฉ๋˜๋Š”)์™€ ๊ฐ™์€ ๋ฌด์†์‹ค ๋ฐ์ดํ„ฐ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋Œ€์—ญํญ์„ ์ถฉ๋ถ„ํžˆ ์ค„์ผ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋น„๋””์˜ค๋ฅผ ์••์ถ•ํ•  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

* 1280 x 720 x 24 x 30 x 3600 (ํญ, ๋†’์ด, ํ”ฝ์…€ ๋‹น ๋น„ํŠธ ์ˆ˜, fps, ์˜์ƒ ์‹œ๊ฐ„)

์ด๋ฅผ ์œ„ํ•ด์„œ๋Š”, ์šฐ๋ฆฌ์˜ ๋ˆˆ์„ ์†์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ˆˆ์€ ์ƒ‰์ƒ๋ณด๋‹ค ๋ช…์•” ๊ตฌ๋ถ„์„ ๋” ์ž˜ํ•ฉ๋‹ˆ๋‹ค. ์˜์ƒ์€ ๋ณ€ํ™”๊ฐ€ ๊ฑฐ์˜ ์—†๋Š” ๋งŽ์€ ์ด๋ฏธ์ง€๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์œผ๋ฉฐ, ๊ฐ ํ”„๋ ˆ์ž„๋“ค์€ ๊ฐ™๊ฑฐ๋‚˜ ์œ ์‚ฌํ•œ ์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋งŽ์€ ์˜์—ญ๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ‰์ƒ, ํœ˜๋„, ์‹œ๊ฐ

์‹œ๊ฐ์€ ์ƒ‰์ƒ๋ณด๋‹ค ๋ช…์•”์— ๋” ๋ฏผ๊ฐํ•˜๋ฉฐ, ์ด๋ฅผ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‚ฌ์ง„์„ ๋ณด์„ธ์š”.

luminance vs color

๋งŒ์ผ ์™ผ์ชฝ์˜ ์ด๋ฏธ์ง€์—์„œ ์‚ฌ๊ฐํ˜• A์™€ B๊ฐ€ ๋™์ผํ•œ ์ƒ‰์ƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ•˜์…จ๋‹ค๋ฉด ์ •์ƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋‡Œ๋Š” ์ƒ‰์ƒ๋ณด๋‹ค๋Š” ๋ช…์•”์— ๋” ์‹ ๊ฒฝ์“ฐ๋„๋ก ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์ด์ง€์š”. ์˜ค๋ฅธ์ชฝ์˜ ์‚ฌ์ง„์—์„œ๋Š” ๊ฐ™์€ ์ƒ‰์ƒ์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์ปค๋„ฅํ„ฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ์˜ ๋‡Œ๋Š” ๋‘ ์‚ฌ๊ฐํ˜•์ด ๋™์ผํ•œ ์ƒ‰์ƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ์€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…

๋ˆˆ์€ ๋ณต์žกํ•œ ์žฅ๊ธฐ์ด๋ฉฐ, ๋งŽ์€ ๊ฒƒ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋‚˜ ์—ฌ๊ธฐ์„œ๋Š” ๋Œ€๋ถ€๋ถ„์€ ์›์ถ”์„ธํฌ์™€ ๊ฐ„์ƒ์„ธํฌ์— ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค. ๋ˆˆ์€ ์•ฝ 1์–ต 2์ฒœ๊ฐœ์˜ ๊ฐ„์ƒ์„ธํฌ์™€ 6๋ฐฑ๋งŒ๊ฐœ์˜ ์›์ถ”์„ธํฌ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด, ์ƒ‰์ƒ๊ณผ ๋ช…์•”์„ ๋ˆˆ์˜ ๊ฐ ๊ธฐ๋Šฅ๋“ค์— ์ž…๋ ฅํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ๊ฐ„์ƒ์„ธํฌ ๋Š” ๋Œ€๋ถ€๋ถ„ ๋น›์— ๋ฐ˜์‘ํ•˜๋Š” ๋ฐ˜๋ฉด์—, ์›์ถ”์„ธํฌ๋Š” ์ƒ‰์ƒ์— ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์ƒ‰์†Œ๋ฅผ ์ง€๋‹Œ ์„ธ ๊ฐ€์ง€ ํƒ€์ž…์˜ ์›์ถ” ์„ธํฌ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค: S-cones (ํŒŒ๋ž€์ƒ‰), M-cones (์ดˆ๋ก์ƒ‰) and L-cones (๋นจ๊ฐ„์ƒ‰).

๊ฐ„์ƒ ์„ธํฌ(๋ช…์•”)๊ฐ€ ์›์ถ” ์„ธํฌ(์ƒ‰์ƒ)๋ณด๋‹ค ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, ์ƒ‰์ƒ๋ณด๋‹ค ๋ช…์•”์„ ๋” ์ž˜ ๊ตฌ๋ถ„ํ•  ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์ง์ž‘ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

eyes composition

๋Œ€๋น„ ์ธ์‹ ๋Šฅ๋ ฅ

์‹คํ—˜ ์‹ฌ๋ฆฌํ•™ ๋ฐ ๋‹ค๋ฅธ ๋ถ„์•ผ๋“ค์˜ ์—ฐ๊ตฌ์ž๋“ค์€ ์‚ฌ๋žŒ์˜ ์‹œ๊ฐ์— ๋Œ€ํ•œ ๋งŽ์€ ์ด๋ก ์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋Œ€๋น„ ์ธ์‹ ๋Šฅ๋ ฅ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์€ ๋น›์˜ ๊ณต๊ฐ„๊ณผ ์‹œ๊ฐ„๊ณผ ๊ด€๋ จ ์žˆ์œผ๋ฉฐ, ์ฃผ์–ด์ง„ ์ดˆ๊ธฐ์— ๊ด€์ธกํ•œ ๋น›์ด ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ด, ๊ด€์ธก์ž๊ฐ€ ๋ณ€ํ™”๊ฐ€ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋งํ•˜๊ธฐ๊นŒ์ง€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ณ€ํ™”๊ฐ€ ํ•„์š”ํ•œ์ง€์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. function์ด ๋ณต์ˆ˜ํ˜•์œผ๋กœ ๋˜์–ด ์žˆ๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ๋ฐ”๋กœ ๋Œ€๋น„ ์ธ์‹ ๋Šฅ๋ ฅ์€ ๋ช…์•” ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ƒ‰์ƒ๋„ ๊ด€๊ณ„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ์‹คํ—˜์˜ ๊ฒฐ๊ณผ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์— ์šฐ๋ฆฌ์˜ ๋ˆˆ์ด ์ƒ‰์ƒ๋ณด๋‹ค ๋ช…์•”์— ๋” ๋ฏผ๊ฐํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋งํ•ด์ค๋‹ˆ๋‹ค.

์ด์ œ ๋ฃจ๋งˆ(์ด๋ฏธ์ง€์˜ ๋ช…๋„)์— ๋” ๋ฏผ๊ฐํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด๋ฅผ ์ด์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ‰์ƒ ๋ชจ๋ธ

์ดˆ๋ฐ˜์— ๋ฐฐ์› ๋˜ RGB ๋ชจ๋ธ์„ ์ด์šฉํ•œ ์ด๋ฏธ์ง€์— ์ƒ‰์ƒ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์™ธ์—๋„ ๋‹ค๋ฅธ ๋ชจ๋ธ๋“ค๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๋ชจ๋ธ ์ค‘ ํฌ๋กœ๋ฏธ๋„Œ์Šค(์ƒ‰์ƒ)๋กœ๋ถ€ํ„ฐ ๋ฃจ๋งˆ(๋ช…๋„)๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๋ชจ๋ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” YCbCr*์ด๋ผ๊ณ ๋„ ์•Œ๋ ค์ ธ์žˆ์Šต๋‹ˆ๋‹ค.

* ์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋ธ๋“ค๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์ƒ‰์ƒ ๋ชจ๋ธ์€ ๋ช…๋„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” Y์™€ ๋‘ ๊ฐ€์ง€ ์ƒ‰์ƒ ์ฑ„๋„์ธ Cb(ํฌ๋กœ๋งˆ ๋ธ”๋ฃจ)์™€ Cr(ํฌ๋กœ๋งˆ ๋ ˆ๋“œ)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. YCbCr์€ RGB๋กœ๋ถ€ํ„ฐ ์œ ๋„ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋˜ํ•œ ๋ฐ˜๋Œ€๋กœ RGB๋กœ ์—ญ๋ณ€ํ™˜๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•„๋ž˜์— ๋ณด์ด๋Š” ์ด๋ฏธ์ง€์™€ ๊ฐ™์€ ์™„์ „ํ•œ ์ƒ‰์ƒ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ycbcr example

YCbCr <-> RGB ๋ณ€ํ™˜

๋…ผ์Ÿ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ์–ด๋–ป๊ฒŒ ์ดˆ๋ก์ƒ‰์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  ์ƒ‰์ƒ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

์ด ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•ด RGB๋ฅผ YCbCr๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ผ์„ ๊ฐ™์ด ํ•ด๋ด…์‹œ๋‹ค. ITU-R ๊ทธ๋ฃน* ์—์„œ ๊ถŒ์žฅํ•˜๋Š” ํ‘œ์ค€ BT.601 ๊ณ„์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ๋ฃจ๋งˆ ๊ณ„์‚ฐ์ž…๋‹ˆ๋‹ค. ITU์—์„œ ์ œ์•ˆํ•œ ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  RGB ๊ฐ’์„ ๋Œ€์ฒดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Y = 0.299R + 0.587G + 0.114B

๋ฃจ๋งˆ๋ฅผ ์–ป์—ˆ์œผ๋‹ˆ ์ด์ œ ์ƒ‰์ƒ ๋ถ„๋ฆฌ(ํฌ๋กœ๋งˆ ๋ธ”๋ฃจ, ํฌ๋กœ๋งˆ ๋ ˆ๋“œ)๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Cb = 0.564(B - Y)
Cr = 0.713(R - Y)

๋˜ํ•œ ์ด๋ฅผ ์—ญ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•˜๋ฉฐ YCbCr์„ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๋ก์ƒ‰์„ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

R = Y + 1.402Cr
B = Y + 1.772Cb
G = Y - 0.344Cb - 0.714Cr

* ๋ฌด์—‡์ด ํ‘œ์ค€์ธ์ง€ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ น 4K๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ์–ด๋–ค ํ”„๋ ˆ์ž„ ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ํ•ด์ƒ๋„๋Š”? ์ปฌ๋Ÿฌ ๋ชจ๋ธ์€?๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ž…๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ๋””์Šคํ”Œ๋ ˆ์ด(๋ชจ๋‹ˆํ„ฐ, TV, ์Šคํฌ๋ฆฐ ๋“ฑ)๋Š” ์˜ค์ง RGB ๋ชจ๋ธ๋งŒ ํ™œ์šฉํ•˜๋ฉฐ ์ด๋ฅผ ๊ฐ์ž ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ฐฐ์—ดํ•ฉ๋‹ˆ๋‹ค. ํ™•๋Œ€๋œ ๋ชจ์Šต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

pixel geometry

ํฌ๋กœ๋งˆ ์„œ๋ธŒ์ƒ˜ํ”Œ๋ง

๋ฃจ๋งˆ์™€ ํฌ๋กœ๋งˆ๋กœ ํ‘œํ˜„๋˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ธ๊ฐ„์˜ ์‹œ๊ฐ์ด ํฌ๋กœ๋งˆ๋ณด๋‹ค ๋ฃจ๋งˆ ํ•ด์ƒ๋„์— ๋ฏผ๊ฐํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ด์šฉํ•˜์—ฌ ์„ ํƒ์ ์œผ๋กœ ์ •๋ณด๋ฅผ ์ œ๊ฑฐํ•˜๋Š”๋ฐ์— ์žˆ์–ด ์ด์ ์„ ์ทจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋กœ๋งˆ ์„œ๋ธŒ์ƒ˜ํ”Œ๋ง์€ ๋ฃจ๋งˆ ๋Œ€๋น„ ํฌ๋กœ๋งˆ ์ •๋ณด๋ฅผ ์ค„์—ฌ ์ด๋ฏธ์ง€๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

ycbcr subsampling resolutions

์–ผ๋งˆ๋งŒํผ์˜ ํฌ๋กœ๋งˆ ํ•ด์ƒ๋„๋ฅผ ์ค„์—ฌ์•ผ ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ์š”?! ์ด๋ฏธ ๋‹ต์€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด์ƒ๋„์™€ ๋ณ‘ํ•ฉ(final color = Y + Cb + Cr)์„ ๋‹ค๋ฃจ๋Š” ์Šคํ‚ค๋งˆ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์Šคํ‚ค๋งˆ๋Š” ์„œ๋ธŒ ์ƒ˜ํ”Œ๋ง ์‹œ์Šคํ…œ์œผ๋กœ ์•Œ๋ ค์ ธ์žˆ์œผ๋ฉฐ ๋ฃจ๋งˆ ํ”ฝ์…€์˜ a x 2 ๋ธ”๋ก์— ๋Œ€ํ•œ ํฌ๋กœ๋งˆ ํ•ด์ƒ๋„๋ฅผ ์ •์˜ํ•˜๋Š” 3 ๋ถ€๋ถ„์˜ ๋น„์œจ a:x:y๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

  • a๋Š” ์ˆ˜ํ‰ ์ƒ˜ํ”Œ๋ง ๋ ˆํผ๋Ÿฐ์Šค์ž…๋‹ˆ๋‹ค. (์ผ๋ฐ˜์ ์œผ๋กœ 4)
  • x๋Š” a ํ”ฝ์…€์˜ ํ–‰(row)์˜ ํฌ๋กœ๋งˆ ์ƒ˜ํ”Œ ์ˆ˜์ž…๋‹ˆ๋‹ค. (a์— ๋Œ€ํ•œ ์ˆ˜ํ‰ํ•ด์ƒ๋„)
  • y๋Š” a ํ”ฝ์…€์˜ ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ํ–‰ ์‚ฌ์ด์˜ ํฌ๋กœ๋งˆ ์ƒ˜ํ”Œ์˜ ๋ณ€ํ™”์— ๋Œ€ํ•œ ๊ฐœ์ˆ˜์ž…๋‹ˆ๋‹ค.

์˜ˆ์™ธ์ ์œผ๋กœ 4:1:0์€ ๊ฐ๊ฐ์˜ ๋ฃจ๋งˆ ํ•ด์ƒ๋„์˜ 4 x 4๋ธ”๋ก ๋‚ด์˜ ๋‹จ์ผ ํฌ๋กœ๋งˆ ์ƒ˜ํ”Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ˜„๋Œ€ ์ฝ”๋ฑ์— ์‚ฌ์šฉ๋˜๋Š” ๋ณดํŽธ์ ์ธ ๊ธฐ๋ฒ•์€ 4:4:4(์„œ๋ธŒ ์ƒ˜ํ”Œ๋ง ์—†์Œ), 4:2:2, 4:1:1, 4:2:0, 4:1:0 and 3:1:1์ž…๋‹ˆ๋‹ค.

YCbCr 4:2:0 ๋ณ‘ํ•ฉ

์—ฌ๊ธฐ์— YCbCr 4:2:0์„ ์‚ฌ์šฉํ•œ ์ด๋ฏธ์ง€์˜ ๋ณ‘ํ•ฉ๋œ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค. ํ”ฝ์…€ ๋‹น 12 ๋น„ํŠธ๋งŒ ์†Œ๋ชจํ–ˆ์„ ๋ฟ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๊ธฐ์–ตํ•˜์„ธ์š”.

YCbCr 4:2:0 merge

๋™์ผํ•œ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ์ฃผ์š”ํ•œ ํฌ๋กœ๋งˆ ์„œ๋ธŒ์ƒ˜ํ”Œ๋ง ํƒ€์ž…๋“ค๋กœ ์ธ์ฝ”๋”ฉํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋ณด์‹ค ์ˆ˜ ์žˆ์„๊ฒ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ–‰์˜ ์ด๋ฏธ์ง€๋“ค์€ ์ตœ์ข… YCbCr ์ด๋ฏธ์ง€์ด๋ฉฐ ๋‘ ๋ฒˆ์งธ ์—ด์˜ ์ด๋ฏธ์ง€๋“ค์€ ํฌ๋กœ๋งˆ ํ•ด์ƒ๋„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ ์€ ์†์‹ค๋กœ ํ›Œ๋ฅญํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

chroma subsampling examples

์•ž์„œ ์šฐ๋ฆฌ๋Š” ํ•œ ์‹œ๊ฐ„ ๋ถ„๋Ÿ‰์˜ 720p ํ•ด์ƒ๋„์— 30fps์ธ ์˜์ƒ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด 278GB๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ณ„์‚ฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. YCbCr 4:2:0์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฅผ ์ ˆ๋ฐ˜(139GB)์˜ ํฌ๊ธฐ*๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง ๊ทธ๋ฆฌ ์ด์ƒ์ ์ด์ง„ ์•Š๋„ค์š”.

* ์ด ๊ฐ’์€ width, height, ํ”ฝ์…€ ๋‹น ๋น„ํŠธ ์ˆ˜ ๊ทธ๋ฆฌ๊ณ  fps๋ฅผ ๊ณฑํ•˜์—ฌ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” 24๋น„ํŠธ๊ฐ€ ํ•„์š”ํ–ˆ์ง€๋งŒ ์ด์   12๋น„ํŠธ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


์‹ค์Šต: YCbCr ํžˆ์Šคํ† ๊ทธ๋žจ ํ™•์ธํ•˜๊ธฐ

ffmpeg๋กœ YCbCr ํžˆ์Šคํ† ๊ทธ๋žจ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์žฅ๋ฉด์€ ํžˆ์Šคํ† ๊ทธ๋žจ์— ๋ณด์—ฌ์ง€๋Š” ๋ฐ”์™€ ๊ฐ™์ด ํŒŒ๋ž€์ƒ‰ ๋น„์œจ์ด ๋†’์Šต๋‹ˆ๋‹ค.

ycbcr color histogram

ํ”„๋ ˆ์ž„ ์œ ํ˜•

์ด์ œ ๊ณ„์†ํ•ด์„œ ์‹œ๊ฐ„ ์ƒ์—์„œ์˜ ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ทธ ์ „์— ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ์ ์ธ ์šฉ์–ด๋ฅผ ์ •๋ฆฝํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 30fps์˜ ์˜ํ™”๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ์—ฌ๊ธฐ์— ์ด ์˜ํ™”์˜ ์ฒซ ๋ฒˆ์งธ๋ถ€๋ถ„์˜ 4์žฅ์˜ ํ”„๋ ˆ์ž„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ball 1 ball 2 ball 3 ball 4

ํŒŒ๋ž€์ƒ‰ ๋ฐฐ๊ฒฝ๊ณผ ๊ฐ™์ด ํ”„๋ ˆ์ž„ ๋‚ด์— ๋งŽ์€ ์ค‘๋ณต์„ ๋ณผ ์ˆ˜ ์žˆ์„๊ฒ๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„ 0๋ถ€ํ„ฐ 3๊นŒ์ง€ ๋ณ€ํ•œ๊ฒŒ ์—†์ง€์š”. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋ ˆ์ž„์„ ์„ธ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ์ถ”์ƒ์ ์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

I Frame (์ธํŠธ๋ผ, ํ‚คํ”„๋ ˆ์ž„)

I-frame(๋ ˆํผ๋Ÿฐ์Šค, ํ‚คํ”„๋ ˆ์ž„, ์ธํŠธ๋ผ)์€ ๋…๋ฆฝ์ ์ธ ํ”„๋ ˆ์ž„์ž…๋‹ˆ๋‹ค. ๋ Œ๋”๋ง ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๊ฒƒ์—๋„ ์˜์กด์ ์ด์ง€ ์•Š์ง€์š”. I-frame์€ ๋งˆ์น˜ ์ •์ ์ธ ์‚ฌ์ง„๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„์€ ๋ณดํ†ต I-frame์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ I-frame์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ํ”„๋ ˆ์ž„์˜ ์‚ฌ์ด์‚ฌ์ด์— ์‚ฝ์ž…๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

ball 1

P Frame (predicted)

P-frame์€ ํ•ญ์ƒ ์ด์ „์˜ ํ”„๋ ˆ์ž„์„ ์ด์šฉํ•˜์—ฌ ๋ Œ๋”๋ง ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ด์ ์œผ๋กœ ์ทจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‘ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„์—์„œ ๋ณ€ํ™”๋ผ๊ณค ๊ณต์ด ์•ž์œผ๋กœ ์›€์ง์ธ ๊ฒƒ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•ด์„œ ์ด ์ „์˜ ํ”„๋ ˆ์ž„์„ ์ฐธ๊ณ ํ•˜์—ฌ ํ”„๋ ˆ์ž„ 1๋ฒˆ์„ ๋‹ค์‹œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€์š”.

ball 1 <- ball 2

์‹ค์Šต: I-frame์ด ํ•œ์žฅ ๋ฟ์ธ ๋™์˜์ƒ

P-frame์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์™œ ์ „์ฒด๋ฅผ I-frame ํ•œ์žฅ์— ๋‚˜๋จธ์ง€ ์ „๋ถ€๊ฐ€ p-frame์ธ ์˜์ƒ์œผ๋กœ ์ธ์ฝ”๋”ฉํ•˜์ง€ ์•Š์„๊นŒ์š”?

์ด ๋น„๋””์˜ค๋ฅผ ์ธ์ฝ”๋”ฉ ํ›„ ์˜์ƒ์„ ์žฌ์ƒํ•ด ๋น„๋””์˜ค์˜ ์•ž๋ถ€๋ถ„์œผ๋กœ ์ด๋™ํ•ด๋ณด๋ฉด, ์ด๋™ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆผ์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด P-frame์€ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด ๋ ˆํผ๋Ÿฐ์Šค ํ”„๋ ˆ์ž„(๊ฐ€๋ น I-frame)์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋นจ๋ฆฌ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ I-frame ํ•œ ์žฅ์œผ๋กœ ๋น„๋””์˜ค๋ฅผ ์ธ์ฝ”๋”ฉํ•œ ๋’ค, 2์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ I-frame์„ ์‚ฝ์ž…ํ•˜์—ฌ ์ธ์ฝ”๋”ฉํ•œ ๋’ค ๊ฐ ๋ Œ๋””์…˜์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ํ™•์ธํ•ด๋ณด์„ธ์š”.

B Frame (bi-predictive)

์ด์ „๊ณผ ์•ž์˜ ํ”„๋ ˆ์ž„์„ ์ฐธ์กฐํ•˜์—ฌ ๋” ๋‚˜์€ ์••์ถ•๋ฅ ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด?! ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ B-Frame์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ball 1 <- ball 2 -> ball 3

์‹ค์Šต: B-frame์œผ๋กœ ๋น„๋””์˜ค ๋น„๊ตํ•˜๊ธฐ

๋‘ ๊ฐœ์˜ ๋ Œ๋””์…˜์„ ์ƒ์„ฑํ•ด, ์ฒซ ๋ฒˆ์งธ์—๋Š” B-frame์„ ์ฃผ๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์—๋Š” B-frame์„ ์ฃผ์ง€ ์•Š๊ณ  ํ€„๋ฆฌํ‹ฐ๋ฅผ ๋น„๋กฏํ•˜์—ฌ ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๋„ ํ™•์ธ์„ ํ•ด๋ณด์„ธ์š”.

์š”์•ฝ

์ด๋Ÿฌํ•œ ํ”„๋ ˆ์ž„๋“ค์€ ๋” ๋‚˜์€ ์••์ถ• ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ ์ผ์ด ๊ฐ€๋Šฅํ•œ์ง€ ๋‹ค์Œ ์„น์…˜์—์„œ ์•Œ์•„๋ณผ ๊ฑฐ์—์š”. ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ๋ถ„์€ ์ด์ œ I-frame์€ ์ฝ”์ŠคํŠธ๊ฐ€ ๋†’๊ณ  P-frame์€ ์ข€ ๋” ๋‚ฎ๊ณ  B-frame์ด ์ œ์ผ ๋‚ฎ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

frame types example

์‹œ๊ฐ„์  ์ค‘๋ณต (์ธํ„ฐ ํ”„๋ฆฌ๋”•์…˜)

๋ฐ˜๋“œ์‹œ ์ค„์—ฌ์•ผ ํ•˜๋Š” ์‹œ๊ฐ„ ์ƒ์—์„œ์˜ ๋ฐ˜๋ณต์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. ์ด๋Ÿฌํ•œ ์ค‘๋ณต์˜ ์œ ํ˜•์€ ์ธํ„ฐ ํ”„๋ฆฌ๋”•์…˜์ด๋ผ๋Š” ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ ˆ์ž„ 0๊ณผ 1์˜ ์‹œํ€€์Šค๋ฅผ ๋” ์ ์€ ๋น„ํŠธ๋ฅผ ํ™œ์šฉํ•ด ์ธ์ฝ”๋”ฉ ํ•ด๋ณผ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

original frames

์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฐ€์ง€๋Š” ๋ฐ”๋กœ ์ œ๊ฑฐ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ํ”„๋ ˆ์ž„ 0์—์„œ ํ”„๋ ˆ์ž„ 1์„ ๋นผ๋ฉด ์˜ค๋กœ์ง€ ๋‚จ์€ ๋ถ€๋ถ„๋งŒ ์ธ์ฝ”๋”ฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

delta frames

ํ•˜์ง€๋งŒ ์ด๋ณด๋‹ค ๋” ์ ์€ ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ์–ด๋– ์‹œ๊ฒ ๋‚˜์š”? ์šฐ์„ , frame 0์„ ์ž˜ ์ •์˜๋œ ํŒŒํ‹ฐ์…˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ์—ฌ๊ธฐ๊ณ , frame 0์— frame 1์„ ๋งค์นญ์‹œ์ผœ๋ณด์„ธ์š”. ์ด๋ฅผ ๋ชจ์…˜ ์ถ”์ •์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€์š”.

์œ„ํ‚คํŽ˜๋””์•„ - ๋ธ”๋ก ๋ชจ์…˜ ๋ณด์ •

"๋ธ”๋ก ๋ชจ์…˜ ๋ณด์ •์€ ํ˜„์žฌ ํ”„๋ ˆ์ž„์„ ๊ฒน์น˜์ง€ ์•Š์€ ๋ธ”๋ก์œผ๋กœ ๋ถ„ํ• ํ•˜๊ณ , ๋ชจ์…˜ ๋ณด์ • ๋ฒกํ„ฐ๊ฐ€ ๋ธ”๋ก์ด ์–ด๋””์—์„œ ์™”๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. (์ผ๋ฐ˜์ ์ธ ์˜ค๊ฐœ๋…์œผ๋กœ ์ด์ „์˜ ํ”„๋ ˆ์ž„์ด ๊ฒน์น˜์ง€ ์•Š์€ ๋ธ”๋ก์œผ๋กœ ๋ถ„ํ• ๋˜์–ด ์žˆ๊ณ , ๋ชจ์…˜ ๋ณด์ • ๋ฒกํ„ฐ๊ฐ€ ์ด ๋ธ”๋ก๋“ค์ด ์–ด๋””๋กœ ์ด๋™ํ•  ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์ •๋ณด๋ผ๊ณ  ์—ฌ๊ธฐ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.) ์›๋ณธ ๋ธ”๋ก์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์›๋ณธ ํ”„๋ ˆ์ž„์— ๊ฒน์นฉ๋‹ˆ๋‹ค. ๋ช‡๋ช‡์˜ ๋น„๋””์˜ค ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ด์ „์— ์ „์†ก๋œ ํ”„๋ ˆ์ž„์˜ ์ผ๋ถ€ ์กฐ๊ฐ์„ ํ˜„์žฌ ํ”„๋ ˆ์ž„๊ณผ ํ•ฉ์นฉ๋‹ˆ๋‹ค."

delta frames

์—ฌ๊ธฐ์„œ x=0, y=25์—์„œ x=6, y=26์œผ๋กœ ๊ณต์ด ์›€์ง์˜€๋‹ค๊ณ  ์ถ”์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. x์™€ y์˜ ๊ฐ’๋“ค์ด ๋ชจ์…˜ ๋ฒกํ„ฐ์ž…๋‹ˆ๋‹ค. ๋น„ํŠธ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€์ ์ธ ๋‹จ๊ณ„๋กœ๋Š” ์ตœ์ข… ๋ธ”๋ก์˜ ์œ„์น˜์™€ ์˜ˆ์ธก๋˜๋Š” ๋ฒกํ„ฐ์˜ ๋ชจ์…˜ ๋ฒกํ„ฐ์˜ ์ฐจ์ด๋งŒ ์ธ์ฝ”๋”ฉ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์ข…์ ์ธ ๋ชจ์…˜ ๋ฒกํ„ฐ๋Š” x=6 (6-0), y=1 (26-25)๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„์‹ค ์„ธ๊ณ„์—์„œ๋Š” ์ด ๊ณต์ด n๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์œผ๋กœ ์กฐ๊ฐ๋‚˜์ง€๋งŒ ๊ณผ์ •์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ ˆ์ž„ ์ƒ์˜ ๊ฐ์ฒด๋Š” 3์ฐจ์› ์ƒ์œผ๋กœ ์›€์ง์ด๋ฉฐ, ์ด ๊ณต์ด ๋ฐฐ๊ฒฝ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋” ์ž‘์•„์งˆ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ์น˜์ ์„ ์ฐพ์œผ๋ ค ํ–ˆ๋˜ ๋ธ”๋ก๊ณผ ์™„์ „ํžˆ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ์ผ์€ ์ผ๋ฐ˜์ ์ด์ง€์š”.

motion estimation

๊ทธ๋Ÿผ์—๋„ ๋ชจ์…˜ ์ถ”์ •์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋‹จ์ˆœํžˆ ๋ธํƒ€ ํ”„๋ ˆ์ž„ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ์ธ์ฝ”๋”ฉ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋” ์ ๋‹ค๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค.

motion estimation vs delta

๋ชจ์…˜ ๋ณด์ •์€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”๊ฐ€

์ด ๊ธฐ๋ฒ•์€ ๋ชจ๋“  ๋ธ”๋ก์— ๋Œ€ํ•ด ์ ์šฉ๋˜๋ฉฐ, ๊ณต์ด ๋งค์šฐ ๋นˆ๋ฒˆํ•˜๊ฒŒ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ธ”๋ก์—์„œ ๋ถ„ํ• ๋ฉ๋‹ˆ๋‹ค. real world motion compensation Source: https://web.stanford.edu/class/ee398a/handouts/lectures/EE398a_MotionEstimation_2012.pdf

์ฃผํ”ผํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๊ธฐ๋ฒ•๋“ค์„ ์‹คํ—˜ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Hands-on: See the motion vectors

We can generate a video with the inter prediction (motion vectors) with ffmpeg.

inter prediction (motion vectors) with ffmpeg

Or we can use the Intel Video Pro Analyzer (which is paid but there is a free trial version which limits you to only the first 10 frames).

inter prediction intel video pro analyzer

๊ณต๊ฐ„์  ์ค‘๋ณต (์ธํŠธ๋ผ ํ”„๋ฆฌ๋”•์…˜)

์˜์ƒ์˜ ๊ฐ๊ฐ์˜ ํ”„๋ ˆ์ž„์„ ๋ถ„์„ํ•ด๋ณด๋ฉด ๋งŽ์€ ์˜์—ญ์ด ์—ฐ๊ด€๋˜์–ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์„๊ฒ๋‹ˆ๋‹ค.

์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด์ฃ . ์ด ์žฅ๋ฉด์€ ๋Œ€๋ถ€๋ถ„ ํŒŒ๋ž€์ƒ‰๊ณผ ํ•˜์–€์ƒ‰์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” I-frame์ด๋ฉฐ ์ด์ „์˜ ํ”„๋ ˆ์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ์ธกํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ, ์—ฌ์ „ํžˆ ์••์ถ•ํ•  ์—ฌ์ง€๋Š” ๋‚จ์•„ ์žˆ์ง€์š”. ๋นจ๊ฐ„ ๋ธ”๋ก ๋ถ€๋ถ„์„ ์ธ์ฝ”๋”ฉํ•ด๋ณผ๊ฑฐ์—์š”. ์ธ์ ‘ํ•œ ๋ถ€๋ถ„์„ ์‚ดํŽด๋ณด๋ฉด, ๋ธ”๋ก ์ฃผ๋ณ€์˜ ์ƒ‰์ƒ์˜ ๊ฒฝํ–ฅ์„ ์ถ”์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ ˆ์ž„์ด ๊ณ„์†ํ•˜์—ฌ ์ˆ˜์ง์œผ๋กœ ์ƒ‰์ƒ์ด ํ™•์‚ฐ๋  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ธกํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์˜๋ฏธ๋Š” ๋ธ”๋ก์˜ ์ธ์ ‘ํ•œ ๊ฐ’์„ ์•Œ ์ˆ˜ ์—†๋Š” ํ”ฝ์…€์˜ ์ƒ‰์ƒ์ด ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์ง€์š”.

์˜ˆ์ธก์ด ํ‹€๋ ธ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋ฐ”๋กœ ์ด ๊ธฐ๋ฒ•(์ธํŠธ๋ผ ํ”„๋ฆฌ๋”•์…˜)์„ ์ ์šฉํ•œ ๋’ค ์ž”์—ฌ ๋ธ”๋ก์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์‹ค์ œ ๊ฐ’์„ ๋นผ์•ผํ•  ํ•„์š”๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์›๋ณธ๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ ํ›จ์”ฌ ๋” ์••์ถ•๋ฅ ์ด ๋†’์€ ํ–‰๋ ฌ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์‹ค์Šต: ์ธํŠธ๋ผ ํ”„๋ฆฌ๋”•์…˜ ํ™•์ธํ•ด๋ณด๊ธฐ

๋งคํฌ๋กœ ๋ธ”๋ก๊ณผ ํ”„๋ฆฌ๋”•์…˜์„ ์‚ฌ์šฉํ•ด ffmpeg๋กœ ์˜์ƒ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ธ”๋ก์˜ ์ƒ‰์ƒ์˜ ์˜๋ฏธ๋ฅผ ffmpeg ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ด ์ดํ•ดํ•ด๋ณด์„ธ์š”.

intra prediction (macro blocks) with ffmpeg

ํ˜น์€ Intel Video Pro Analyzer(์œ ๋ฃŒ์ง€๋งŒ ์ฒ˜์Œ 10 ํ”„๋ ˆ์ž„ ์ œํ•œ์ด ๊ฑธ๋ ค ์žˆ๋Š” ๋ฌด๋ฃŒ ํŠธ๋ผ์ด์–ผ ๋ฒ„์ „๋„ ์žˆ์Šต๋‹ˆ๋‹ค)๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”.

intra prediction intel video pro analyzer

์ฝ”๋ฑ์€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ์š”?

๋ฌด์—‡์„? ์™œ? ์–ด๋–ป๊ฒŒ?

๋ฌด์—‡์„? ์ฝ”๋ฑ์€ ๋””์ง€ํ„ธ ๋น„๋””์˜ค๋ฅผ ์••์ถ• ํ˜น์€ ํ•ด์ œํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด/ํ•˜๋“œ์›จ์–ด ์ž…๋‹ˆ๋‹ค. ์™œ? ์‹œ์žฅ๊ณผ ์‚ฌํšŒ๋Š” ์ œํ•œ์ ์ธ ๋Œ€์—ญํญ๊ณผ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ™œ์šฉํ•œ ๋†’์€ ํ€„๋ฆฌํ‹ฐ์˜ ์˜์ƒ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. 30fps, ํ”ฝ์…€๋‹น 24๋น„ํŠธ, 480x240 ํ•ด์ƒ๋„์˜ ๋น„๋””์˜ค์— ํ•„์š”ํ•œ ๋Œ€์—ญํญ ๊ณ„์‚ฐ์„ ๋– ์˜ฌ๋ ค๋ณด์„ธ์š”. ์••์ถ•์„ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 82.944 Mbps์˜€์ง€์š”. TV์™€ ์ธํ„ฐ๋„ท์—์„œ HD/FullHD/4K๋ฅผ ์ „์†กํ•  ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ? ์—ฌ๊ธฐ์„œ๋Š” ์ฃผ์š” ๊ธฐ๋ฒ•๋“ค์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฝ”๋ฑ vs ์ปจํ…Œ์ด๋„ˆ

์ดˆ์‹ฌ์ž๋“ค์ด ํ”ํžˆ ๋ฒ”ํ•˜๋Š” ์‹ค์ˆ˜ ์ค‘ ํ•˜๋‚˜๋กœ ๋””์ง€ํ„ธ ๋™์˜์ƒ ์ฝ”๋ฑ๊ณผ ๋””์ง€ํ„ธ ๋น„๋””์˜ค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ˜ผ๋™ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋™์˜์ƒ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ(์˜ค๋””์˜ค ํฌํ•จ)๋ฅผ ํฌํ•จํ•˜๋Š” ๋ž˜ํผ ํฌ๋งท์œผ๋กœ ์—ฌ๊ธธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์••์ถ•๋œ ๋น„๋””์˜ค๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ ํŽ˜์ด๋กœ๋“œ๋กœ ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋™์˜์ƒ ํŒŒ์ผ์˜ ํ™•์žฅ์ž๋Š” ๋น„๋””์˜ค ํŒŒ์ผ์˜ ๋™์˜์ƒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด video.mp4 ํŒŒ์ผ์€ MPEG-4 Part 14 ์ปจํ…Œ์ด๋„ˆ์ผ ๊ฒƒ์ด๊ณ  ํŒŒ์ผ ์ด๋ฆ„์€ video.mkv๋กœ matroska ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ”๋ฑ๊ณผ ์ปจํ…Œ์ด๋„ˆ ํฌ๋ฉง์„ ์ •ํ™•ํžˆ ํ™•์ธํ•˜๋ ค๋ฉด ffmpeg๋‚˜ mediainfo๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์—ญ์‚ฌ

์ผ๋ฐ˜์ ์ธ ์ฝ”๋ฑ์˜ ๋‚ด๋ถ€ ๋™์ž‘์„ ํŒŒํ—ค์น˜๊ธฐ์— ์•ž์„œ, ๊ตฌ์„ธ๋Œ€ ๋™์˜์ƒ ์ฝ”๋ฑ์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.

๋น„๋””์˜ค ์ฝ”๋ฑ์ธ H.261๋Š” 1990๋…„(์ •ํ™•ํžˆ๋Š” 1988๋…„)์— ํƒ„์ƒํ•˜์˜€์œผ๋ฉฐ 64 kibt/s์˜ ๋ฐ์ดํ„ฐ ์ „์†ก๋น„๋กœ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋ฑ์—์„œ ์ด๋ฏธ ํฌ๋กœ๋งˆ ์„œ๋ธŒ์ƒ˜ํ”Œ๋ง, ๋งคํฌ๋กœ ๋ธ”๋ก ๋“ฑ์˜ ์•„์ด๋””์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. 1995๋…„, H.263 ๋น„๋””์˜ค ์ฝ”๋ฑ ํ‘œ์ค€์ด ํƒ„์ƒํ•˜์˜€์œผ๋ฉฐ 2001๋…„๊นŒ์ง€ ์ง€์†์ ์œผ๋กœ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

H.264/AVC์˜ ์ฒซ ๋ฒ„์ „์€ 2003๋…„์— ์™„์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ํ•ด์—, TrueMotion์ด๋ผ๋Š” ํšŒ์‚ฌ๊ฐ€ ๋กœ์–„ํ‹ฐ๊ฐ€ ์—†๋Š” VP3์ด๋ผ ๋ถ€๋ฅด๋Š” ์˜์ƒ ์••์ถ• ์ฝ”๋ฑ์„ ๊ณต๊ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค. 2008๋…„, ๊ตฌ๊ธ€์ด ์ด ํšŒ์‚ฌ๋ฅผ ์ธ์ˆ˜ํ•˜๊ณ  ๊ฐ™์€ ํ•ด์— VP8์„ ๊ณต๊ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค. 2012๋…„ 12์›”, ๊ตฌ๊ธ€์€ VP9์„ ์ถœ์‹œํ•˜์˜€์œผ๋ฉฐ VP9์€ ๋ธŒ๋ผ์šฐ์ € ์‹œ์žฅ์˜ ์•ฝ ยพ(๋ชจ๋ฐ”์ผ ํฌํ•จ)์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

AV1 ์€ ๊ตฌ๊ธ€, ๋ชจ์งˆ๋ผ, ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ, ์•„๋งˆ์กด, ๋„ทํ”Œ๋ฆญ์Šค, AMD, ARM, ์—”๋น„๋””์•„, ์ธํ…” ๊ทธ๋ฆฌ๊ณ  ์‹œ์Šค์ฝ”๋ฅผ ๋น„๋กฏํ•œ ์—ฌ๋Ÿฌ ํšŒ์‚ฌ๋กœ ๊ตฌ์„ฑ๋œ ์˜คํ”ˆ ๋ฏธ๋””์–ด ์—ฐํ•ฉ (AOMedia)์ด ์„ค๊ณ„๋ฅผ ์ฃผ๋„ํ•˜๋Š” ๋กœ์–„ํ‹ฐ ์—†๋Š” ์ƒˆ๋กœ์šด ์˜คํ”ˆ ์†Œ์Šค ๋™์˜์ƒ ์ฝ”๋ฑ์ž…๋‹ˆ๋‹ค.

codec history timeline

AV1์˜ ํƒ„์ƒ

2015๋…„ ์ดˆ, ๊ตฌ๊ธ€์€ VP10๋ฅผ, Xiph(๋ชจ์งˆ๋ผ)๋Š” Daala ๊ทธ๋ฆฌ๊ณ  ์‹œ์Šค์ฝ”๋Š” Thor๋ผ๋Š” ๋กœ์–„ํ‹ฐ ํ”„๋ฆฌ ๋น„๋””์˜ค ์ฝ”๋ฑ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

MPEG LA๋Š” HEVC(H.265)์— ๋Œ€ํ•œ ์• ๋‰ด์–ผ ์บก์„ ๋ฐœํ‘œํ•˜๊ณ , H.264๋ณด๋‹ค 8๋ฐฐ ๋†’์€ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ๋ฐœํ‘œํ–ˆ์œผ๋‚˜ ํƒœ์„ธ์ „ํ™˜์„ ํ•˜๊ณ  ๊ทœ์น™์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค:

  • ์• ๋‰ด์–ผ ์บก ์—†์Œ,
  • ์ปจํ…์ธ  ์ˆ˜์ˆ˜๋ฃŒ (์ˆ˜์ต์˜ 0.5%) ๊ทธ๋ฆฌ๊ณ 
  • ๋‹จ์œ„๋‹น ์ˆ˜์ˆ˜๋ฃŒ๋Š” H.264๋ณด๋‹ค ์•ฝ 10๋ฐฐ ๋†’์Œ.

์˜คํ”ˆ ๋ฏธ๋””์–ด ์—ฐํ•ฉ์€ ํ•˜๋“œ์›จ์–ด ์ œ์กฐ์‚ฌ(์ธํ…”, AMD, ARM, ์—”๋น„๋””์•„, ์‹œ์Šค์ฝ”), ์ปจํ…์ธ  ๋”œ๋ฆฌ๋ฒ„๋ฆฌ(๊ตฌ๊ธ€, ๋„ทํ”Œ๋ฆญ์Šค, ์•„๋งˆ์กด), ๋ธŒ๋ผ์šฐ์ € ๋ฉ”์ธํ…Œ์ด๋„ˆ(๊ตฌ๊ธ€, ๋ชจ์งˆ๋ผ)๋ฅผ ๋น„๋กฏํ•œ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ํšŒ์‚ฌ๋“ค์— ์˜ํ•ด ์„ค๋ฆฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํšŒ์‚ฌ๋“ค์€ ๋™์ผํ•œ ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์œผ๋ฉฐ, ๋กœ์–„ํ‹ฐ ํ”„๋ฆฌ์˜ ๋™์˜์ƒ ์ฝ”๋ฑ๊ณผ ํ›จ์”ฌ ๋‹จ์ˆœํ•œ ํŠนํ—ˆ ๋ผ์ด์„ผ์Šค๋กœ ๋ฌด์žฅํ•œ AV1์˜ ํƒ„์ƒ์ด์˜€์ฃ . ํ‹ฐ๋ชจ์‹œ B. ํ…Œ๋ฆฌ๋ฒ ๋ฆฌ๋Š” AV1 ์ปจ์…‰, ๋ผ์ด์„ผ์Šค ๋ชจ๋ธ, ํ˜„ํ™ฉ์— ๋Œ€ํ•œ ๋ฉ‹์ง„ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์„น์…˜์˜ ์ถœ์ฒ˜์ด๊ธฐ๋„ ํ•˜์ง€์š”.

๋ธŒ๋ผ์šฐ์ €๋กœ AV1 ์ฝ”๋ฑ์„ ๋ถ„์„ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ๋˜๋ฉด ์•„์ฃผ ๋†€๋ผ์‹ค๊ฑฐ์—์š”. http://aomanalyzer.org/ ์— ๋ฐฉ๋ฌธํ•ด๋ณด์„ธ์š”. av1 browser analyzer

์ถ”์‹ : ์ฝ”๋ฑ์˜ ์—ญ์‚ฌ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ์œผ๋ฉด ๋™์˜์ƒ ์••์ถ• ํŠนํ—ˆ์— ๋Œ€ํ•œ ๊ธฐ์ดˆ๋ฅผ ๊ณต๋ถ€ํ•˜์…”์•ผํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ์ฝ”๋ฑ

์ผ๋ฐ˜ ์ฝ”๋ฑ์˜ ๋ฐ”ํƒ•์ด ๋˜๋Š” ์ฃผ์š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์†Œ๊ฐœํ•  ๊ฒƒ์ด๋ฉฐ, ์ด๋Ÿฌํ•œ ์ปจ์…‰๋“ค์˜ ๋Œ€๋ถ€๋ถ„์€ ์œ ์šฉํ•˜๊ณ  VP9, AV1, HEVC์™€ ๊ฐ™์€ ํ˜„๋Œ€ ์ฝ”๋ฑ๋“ค์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์„ค๋ช…์„ ์•„์ฃผ ๊ต‰์žฅํžˆ ๋‹จ์ˆœํ™”ํ•œ๋‹ค๋Š” ์  ์–‘ํ•ด ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ธ€์˜ ๊ฐ„๊ฐ„ํžˆ ํ˜„์—… ์˜ˆ์ œ(๋Œ€๋ถ€๋ถ„ H.264)๋ฅผ ์‹œ์—ฐํ•ด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์Šคํ… - ์‚ฌ์ง„ ํŒŒํ‹ฐ์…”๋‹

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ํ”„๋ ˆ์ž„์„ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜, ์„œ๋ธŒ ํŒŒํ‹ฐ์…˜ ๊ทธ ์ด์ƒ์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

picture partitioning

๊ทธ๋Ÿฐ๋ฐ ์™œ? ๋งŽ์€ ์ด์œ ๊ฐ€ ์žˆ์–ด์š”. ์˜ˆ๋กœ, ์‚ฌ์ง„์„ ๋ถ„ํ• ํ•˜๊ฒŒ ๋˜๋ฉด ์ •์ ์ธ ๋ฐฐ๊ฒฝ์— ์ปค๋‹ค๋ž€ ํŒŒํ‹ฐ์…˜์„ ์‚ฌ์šฉํ•˜๊ณ , ์ ์€ ์›€์ง์ž„๋“ค์— ๋Œ€ํ•ด์„œ๋Š” ์ž‘์€ ํŒŒํ‹ฐ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋ฆฌ๋”•์…˜์„ ๋ณด๋‹ค ๋” ์ •ํ™•ํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”๋ฑ์€ ์ด๋Ÿฌํ•œ ํŒŒํ‹ฐ์…˜๋“ค์„ ์Šฌ๋ผ์ด์Šค(ํ˜น์€ ํƒ€์ผ), ๋งคํฌ๋กœ(ํ˜น์€ ์ฝ”๋”ฉ ํŠธ๋ฆฌ ์œ ๋‹›) ๊ทธ๋ฆฌ๊ณ  ์ˆ˜ ๋งŽ์€ ์„œ๋ธŒ ํŒŒํ‹ฐ์…˜์œผ๋กœ ์ •๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒŒํ‹ฐ์…˜์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” ๋‹ค์–‘ํ•œ๋ฐ, AVC๋Š” 16x16์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด HEVC๋Š” 64x64๋ฅผ ์„ค์ •ํ•˜์ง€๋งŒ ์„œ๋ธŒ ํŒŒํ‹ฐ์…˜๋“ค์€ 4x4์˜ ์‚ฌ์ด์ฆˆ๊นŒ์ง€๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์•ž์„œ ๊ณต๋ถ€ํ•œ ํ”„๋ ˆ์ž„ ์œ ํ˜•์„ ๋– ์˜ฌ๋ ค๋ด…์‹œ๋‹ค. ์ด๋Ÿฌํ•œ ์•„์ด๋””์–ด๋“ค์„ ๋ธ”๋ก๋“ค์—๋„ ์ ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ์ง€์š”. ๊ทธ๋Ÿฌ๋ฏ€๋กœ I-Slice, B-Slice, I-Macroblock๋“ฑ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์Šต: ํŒŒํ‹ฐ์…˜ ํ™•์ธํ•ด๋ณด๊ธฐ

์—ฌ๊ธฐ์„œ๋„ Intel Video Pro Analyzer(์œ ๋ฃŒ๋„ ์žˆ์ง€๋งŒ ์ฒซ 10ํ”„๋ ˆ์ž„ ์ œ์•ฝ์˜ ๋ฌด๋ฃŒ ํŠธ๋ผ์ด์–ผ ๋ฒ„์ „๋„ ์žˆ์Œ)๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. VP9 ํŒŒํ‹ฐ์…˜ ๋ถ„์„๋ณธ์ž…๋‹ˆ๋‹ค.

VP9 partitions view intel video pro analyzer

๋‘ ๋ฒˆ์งธ ์Šคํ… - ํ”„๋ฆฌ๋”•์…˜

ํŒŒํ‹ฐ์…˜์„ ํ™•๋ณดํ•˜๊ณ  ๋‚˜๋ฉด, ์ด์ œ ์ด์— ๋Œ€ํ•œ ํ”„๋ฆฌ๋”•์…˜์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐ ํ”„๋ฆฌ๋”•์…˜์— ๋Œ€ํ•ด์„œ๋Š” ๋ชจ์…˜ ๋ฒกํ„ฐ์™€ ๋‚˜๋จธ์ง€๋ฅผ ์ „์†กํ•ด์•ผํ•˜๊ณ , ์ธํŠธ๋ผ ํ”„๋ฆฌ๋”•์…˜์— ๋Œ€ํ•ด์„œ๋Š” ํ”„๋ฆฌ๋”•์…˜์˜ ๋ฐฉํ–ฅ๊ณผ ๋‚˜๋จธ์ง€๋ฅผ ์ „์†กํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„ธ ๋ฒˆ์งธ ์Šคํƒญ - ๋ณ€ํ™˜

์ž”์—ฌ ๋ธ”๋ก(์˜ˆ์ธก๋œ ํŒŒํ‹ฐ์…˜ - ์‹ค์ œ ํŒŒํ‹ฐ์…˜)์„ ํ™•๋ณดํ•˜๊ณ  ๋‚œ ํ›„์—๋Š” ๋ณ€ํ™˜์„ ํ†ตํ•˜์—ฌ ์ „๋ฐ˜์ ์ธ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฒ„๋ ค์•ผ ํ•  ํ”ฝ์…€์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ์ด ์ •ํ™•ํ•œ ๋™์ž‘์„ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ณ€ํ™˜๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋‹ค์–‘ํ•œ ๋ณ€ํ™˜๋“ค์ด ์กด์žฌํ•˜์ง€๋งŒ, ์—ฌ๊ธฐ์„œ๋Š” ์ด์‚ฐ ์ฝ”์‚ฌ์ธ ๋ณ€ํ™˜(DCT)์— ๋Œ€ํ•ด ์ฃผ๋„ ๋ฉด๋ฐ€ํžˆ ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. DCT์˜ ์ฃผ๋œ ์„ฑ์งˆ๋กœ๋Š”:

  • ํ”ฝ์…€๋“ค์˜ ๋ธ”๋ก์„ ๋™์ผํ•œ ์‚ฌ์ด์ฆˆ์˜ ์ฃผํŒŒ์ˆ˜ ๊ณ„์ˆ˜์˜ ๋ธ”๋ก์œผ๋กœ ๋ณ€ํ™˜ํ•จ
  • ์—๋„ˆ์ง€๋ฅผ ์••์ถ•ํ•˜์—ฌ ๊ณต๊ฐ„์  ์ค‘๋ณต์„ ์‰ฝ๊ฒŒ ์ œ๊ฑฐํ•จ
  • ๊ฐ€์—ญ์ ์ž„. ๋ฐ”๊ฟ”๋งํ•ด ํ”ฝ์…€๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป

2017๋…„ 2์›” 2์ผ, ์‹ ํŠธ๋ผ R.J. ์™€ ๋ฐ”์ด์—˜ F.M์€ 14๊ฐœ์˜ ๋ง์…ˆ๋งŒ ํ•„์š”๋กœํ•˜๋Š” ์ด๋ฏธ์ง€ ์••์ถ•์— ๋Œ€ํ•œ DCT ์œ ์‚ฌ ๋ณ€ํ™˜์„ ๋…ผ๋ฌธ์œผ๋กœ ๋ฐœํ‘œํ•˜์˜€์Šต๋‹ˆ๋‹ค. (์—ญ์ž: 8-ํฌ์ธํŠธ ์ง๊ต ๊ทผ์‚ฌ ์ด์‚ฐ ์ฝ”์‚ฌ์ธ ๋ณ€ํ™˜์œผ๋กœ, ๊ณฑ์…ˆ์ด๋‚˜ ๋น„ํŠธ ์‹œํ”„ํŠธ๊ฐ€ ํ•„์š”๊ฐ€ ์—†์Œ)

๋ชจ๋“  ๋ถˆ๋ ›์— ์†Œ๊ฐœ๋œ ์ด์ ๋“ค์— ๋Œ€ํ•ด ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๊ณ  ํ•ด์„œ ๊ฑฑ์ •ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๊ฐ’์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์‹คํ—˜์„ ํ•ด๋ณผ๊ฑฐ์—์š”.

๋‹ค์Œ ํ”ฝ์…€์˜ ๋ธ”๋ก (8x8)์„ ์‚ฌ์šฉํ•ด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค:

pixel values matrix

๋ Œ๋”๋ง๋œ ๋ธ”๋ก ์ด๋ฏธ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค(8x8):

pixel values matrix

ํ”ฝ์…€์˜ ๋ธ”๋ก์— ๋Œ€ํ•˜์—ฌ ์ด์‚ฐ ์ฝ”์‚ฌ์ธ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๊ณ„์ˆ˜์˜ ๋ธ”๋ก(8x8)์„ ์–ป๊ฒŒ๋ฉ๋‹ˆ๋‹ค:

coefficients values

๊ทธ๋ฆฌ๊ณ  ์ด ๊ณ„์ˆ˜์˜ ๋ธ”๋ก์„ ๋ Œ๋”๋งํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:

dct coefficients image

๋ณด์‹œ๋Š” ๋ฐ”์™€ ๊ฐ™์ด ์›๋ณธ ์ด๋ฏธ์ง€๊ฐ™์ด ์ƒ๊ธฐ์ง„ ์•Š์ฃ . ๋ˆˆ์น˜ ์ฑ„์…จ์„์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ ๊ณ„์ˆ˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ๋“ค๊ณผ ์•„์ฃผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ณ„์ˆ˜๋Š” DC ๊ณ„์ˆ˜๋กœ, ์ž…๋ ฅ ๋ฐฐ์—ด์—์„œ ์ƒ˜ํ”Œ์˜ ๋ชจ๋“  ๊ฒƒ์„ ํ‘œํ˜„ํ•˜๋ฉฐ ํ‰๊ท ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ณ„์ˆ˜ ๋ธ”๋ก์€ ํฅ๋ฏธ๋กœ์šด ์„ฑ์งˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ๋†’์€ ์ฃผํŒŒ์ˆ˜ ์„ฑ๋ถ„์„ ๋‚ฎ์€ ์ฃผํŒŒ์ˆ˜ ์„ฑ๋ถ„๊ณผ ๋ถ„๋ฆฌํ•œ๋‹ค๋Š” ์ ์ด์ง€์š”.

dct frequency coefficients property

์ด๋ฏธ์ง€ ์ƒ์—์„œ, ์—๋„ˆ์ง€์˜ ๋Œ€๋ถ€๋ถ„์€ ๋‚ฎ์€ ์ฃผํŒŒ์ˆ˜์— ์ง‘์ค‘๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฏธ์ง€๋ฅผ ์ฃผํŒŒ์ˆ˜ ์„ฑ๋ถ„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๋†’์€ ์ฃผํŒŒ์ˆ˜ ๊ณ„์ˆ˜๋ฅผ ๋‚ ๋ ค๋ฒ„๋ฆฌ๋ฉด, ์ด๋ฏธ์ง€ ํ’ˆ์งˆ์„ ๊ทธ๋ฆฌ ๋งŽ์ด ํฌ์ƒํ•˜์ง€ ์•Š๊ณ ๋„ ์ด๋ฏธ์ง€๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผํŒŒ์ˆ˜๋Š” ์‹ ํ˜ธ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š”๊ฐ€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ์—์„œ ์–ป์€ ์ง€์‹์„ ํ™œ์šฉํ•˜์—ฌ DCT๋ฅผ ์‚ฌ์šฉํ•ด ์›๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์ฃผํŒŒ์ˆ˜(๊ณ„์ˆ˜ ๋ธ”๋ก)๋ฅผ ๋ณ€ํ™˜ ํ›„ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ณ„์ˆ˜๋“ค์„ ๋‚ ๋ ค๋ด…์‹œ๋‹ค.

์šฐ์„ , ์ด๋ฅผ ์ฃผํŒŒ์ˆ˜ ์˜์—ญ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

coefficients values

๋‹ค์Œ์œผ๋กœ, ์˜ค๋ฅธ์ชฝ ํ•˜๋‹จ์˜ ๋Œ€๋ถ€๋ถ„์— ํ•ด๋‹น๋˜๋Š” ๊ณ„์ˆ˜์˜ ๋ถ€๋ถ„(67%)๋ฅผ ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

zeroed coefficients

๋งˆ์นจ๋‚ด, ํ๊ธฐํ•œ ๊ณ„์ˆ˜ ๋ธ”๋ก์œผ๋กœ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€๋ฅผ ์žฌ๊ตฌ์„ฑํ•ด๋ณด๊ณ  ์ด๋ฅผ ์›๋ณธ๊ณผ ๋น„๊ตํ•ด๋ด…์‹œ๋‹ค. (๋ช…์‹ฌํ•˜์„ธ์š”. ์ด๋Š” ๊ฐ€์—ญ์ ์ด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

original vs quantized

์—ฌ๋Ÿฌ๋ถ„์ด ๋ณด์‹œ๋Š” ๋ฐ”์™€ ๊ฐ™์ด ์›๋ณธ ์ด๋ฏธ์ง€์™€ ๋‹ฎ๊ธด ํ–ˆ์ง€๋งŒ ์›๋ณธ๊ณผ ๋น„๊ตํ•˜๋ฉด ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ๋งŽ์ด ๋ณด์ž…๋‹ˆ๋‹ค. 67.1875%๋ฅผ ๋‚ ๋ ค๋ฒ„๋ฆฌ๊ณ ๋„ ์›๋ณธ๊ณผ ์œ ์‚ฌํ•œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์ง€์š”. ๋” ๋†’์€ ์ด๋ฏธ์ง€ ํ’ˆ์งˆ์„ ์œ„ํ•ด ๋” ๋˜‘๋˜‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ณ„์ˆ˜๋ฅผ ํ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ ์ด๋Š” ๋‹ค์Œ์˜ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค.

๊ฐ ๊ณ„์ˆ˜๋Š” ๋ชจ๋“  ํ”ฝ์…€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ญ๋‹ˆ๋‹ค

์—ฌ๊ธฐ์„œ ๊ธฐ์–ตํ•˜์…”์•ผ ํ•  ์ค‘์š”ํ•œ ์ ์€ ๊ฐ ๊ณ„์ˆ˜๊ฐ€ ๊ฐ๊ฐ์˜ ํ”ฝ์…€๊ณผ ์ง์ ‘์ ์œผ๋กœ ๋งคํ•‘๋˜์ง€๋Š” ์•Š์œผ๋‚˜ ๊ณ„์ˆ˜๋Š” ๋ชจ๋“  ํ”ฝ์…€์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ์ด๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์ด ๋†€๋ผ์šด ๋„์‹์€ ์–ด๋–ป๊ฒŒ ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ๊ณ„์ˆ˜๊ฐ€ ๊ฐ ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ ๊ณ ์œ ํ•œ ๊ฐ€์ค‘์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ๋˜๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

dct calculation

์ถœ์ฒ˜: https://web.archive.org/web/20150129171151/https://www.iem.thm.de/telekom-labor/zinke/mk/mpeg2beg/whatisit.htm

๋˜ํ•œ DCT๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ„๋‹จํ•œ ์ด๋ฏธ์ง€ ํ˜•์„ฑ์„ ๋ณด๋ฉฐ DCT๋ฅผ ์‹œ๊ฐํ™”ํ•ด๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์˜ˆ๋กœ ๊ฐ ๊ณ„์ˆ˜ ๊ฐ€์ค‘์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ŒํŒŒ๋ฒณ A๊ฐ€ ํ˜•์„ฑ๋˜๋Š” ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.


์‹ค์Šต: ๋‹ค๋ฅธ ๊ณ„์ˆ˜ ๋‚ ๋ฆฌ๊ธฐ

DCT ๋ณ€ํ™˜

๋„ค ๋ฒˆ์งธ ๋‹จ๊ณ„ - ์–‘์žํ™”

๋ช‡๋ช‡ ๊ณ„์ˆ˜๋ฅผ ๋ฒ„๋ฆด ๋•Œ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„(๋ณ€ํ™˜)์—์„œ ์ผ์ข…์˜ ์–‘์žํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” ์žƒ์„ ์ •๋ณด(๊ฐ„๋‹จํ•œ ์šฉ์–ด๋กœ ์†์‹ค๋ถ€)๋ฅผ ์„ ํƒํ•˜๊ณ , ๊ณ„์ˆ˜๋ฅผ ์–‘์žํ™” ํ•˜์—ฌ ์••์ถ•์„ ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ๊ณ„์ˆ˜ ๋ธ”๋ก์„ ์–‘์žํ™” ์‹œํ‚ฌ๊นŒ์š”? ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๊ท ์ผ ์–‘์žํ™”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ท ์ผ ์–‘์žํ™”๋Š” ๋ธ”๋ก์„ ๊ฐ€์ง€๊ณ  ๋‹จ์ผ ๊ฐ’(10)์œผ๋กœ ์ด๋ฅผ ๋‚˜๋ˆ„์–ด๏ฟฝ ์ด ๊ฐ’์„ ๋‚ด๋ฆผํ•ฉ๋‹ˆ๋‹ค.

quantize

์ด ๊ณ„์ˆ˜ ๋ธ”๋ก์„ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™˜(์žฌ์–‘์žํ™”) ํ• ๊นŒ์š”? ์ฒ˜์Œ์— ๋‚˜๋ˆ„์—ˆ๋˜ ๊ฐ’๊ณผ ๋™์ผํ•œ ๊ฐ’์„ ๊ณฑํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

re-quantize

์ด ๋ฐฉ๋ฒ•์ด ์ตœ์„ ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฐ ๊ณ„์ˆ˜์˜ ์ค‘์š”์„ฑ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ ๊ฐ’ ๋Œ€์‹  ์–‘์žํ™” ํ–‰๋ ฌ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ–‰๋ ฌ์€ DCT์˜ ํŠน์„ฑ์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ๏ฟฝ์šฐ์ธก ํ•˜๋‹จ์˜ ๋Œ€๋ถ€๋ถ„์„ ์–‘์žํ™”ํ•˜๊ณ  ์ขŒ์ธก ์ƒ๋‹จ์€ ๋œํ•œ๋‹ค๋Š” ํŠน์„ฑ์œผ๋กœ, JPEG๊ฐ€ ์ด์™€ ์œ ์‚ฌํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํ–‰๋ ฌ์„ ์†Œ์Šค์ฝ”๋“œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์Šต: ์–‘์žํ™”

์–‘์žํ™”๋ฅผ ์‹ค์Šตํ•ด๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์„ฏ๋ฒˆ์งธ ๋‹จ๊ณ„ - ์—”ํŠธ๋กœํ”ผ ์ธ์ฝ”๋”ฉ

๋ฐ์ดํ„ฐ(์ด๋ฏธ์ง€ ๋ธ”๋ก/์Šฌ๋ผ์ด์Šค/ํ”„๋ ˆ์ž„)๋ฅผ ์–‘์žํ™” ํ•˜๊ณ  ๋‚˜๋ฉด ์†์‹ค ์—†์ด ์••์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—ฌ์ „ํžˆ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•ํ•˜๋Š” ๋งŽ์€ ๋ฐฉ๋ฒ•(์•Œ๊ณ ๋ฆฌ์ฆ˜)์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๊ทธ ์ค‘ ์ผ๋ถ€๋ฅผ ๊ฐ„๋žตํžˆ ์•Œ์•„๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋” ๊นŠ์€ ์ดํ•ด๋ฅผ ๋ฐ”๋ž€๋‹ค๋ฉด ์••์ถ•์— ๋Œ€ํ•œ ์ดํ•ด: ํ˜„๋Œ€ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์••์ถ•์ด๋ผ๋Š” ๋†€๋ผ์šด ์ฑ…์„ ์ฝ์–ด๋ณด์„ธ์š”.

VLC coding:

์‹ฌ๋ณผ ์ŠคํŠธ๋ฆผ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค: a, e, r, t์ด๋ฉฐ ์ด ์‹ฌ๋ณผ๋“ค์— ๋Œ€ํ•œ ํ™•๋ฅ (0๊ณผ 1์‚ฌ์ด)์€ ๋‹ค์Œ ํ…Œ์ด๋ธ”์— ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.

a e r t
ํ™•๋ฅ  0.3 0.3 0.2 0.2

๊ฐ€์žฅ ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๊ณ  ํฐ ์ฝ”๋“œ๋ถ€ํ„ฐ ๋‚ฎ์€ ๊ฒƒ๊นŒ์ง€ ๊ณ ์œ ํ•œ ์ด์ง„ ์ฝ”๋“œ(์ž‘์€ ๊ฐ’ ์ถ”์ฒœ)๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

a e r t
ํ™•๋ฅ  0.3 0.3 0.2 0.2
์ด์ง„ ์ฝ”๋“œ 0 10 110 1110

์ŠคํŠธ๋ฆผ eat๋ฅผ ์••์ถ•ํ•ด๋ด…์‹œ๋‹ค. ๊ฐ ์‹ฌ๋ณผ๋‹น 8๋น„ํŠธ๋ฅผ ์†Œ๋น„ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์••์ถ•ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— 24๋น„ํŠธ๋ฅผ ์†Œ๋น„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ๊ฐ์˜ ์‹ฌ๋ณผ์„ ์ฝ”๋“œ๋กœ ๋Œ€์ฒดํ•˜๋ฉด ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” 10์— ํ•ด๋‹นํ•˜๋Š” ์‹ฌ๋ณผ e๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ์‹ฌ๋ณผ a๋ฅผ ๋”ํ•˜๊ณ (์‚ฐ์ˆ  ์—ฐ์‚ฐ ์•„๋‹˜) [10][0] ๋งˆ์ง€๋ง‰์œผ๋กœ ์ตœ์ข… ์••์ถ•๋œ ๋น„ํŠธ์ŠคํŠธ๋ฆผ์„ [10][0][1110] ํ˜น์€ 1001110์œผ๋กœ ๋งŒ๋“œ๋Š” ์‹ฌ๋ณผ t๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ์˜ค์ง 7๋น„ํŠธ๋งŒ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. (์›๋ณธ๋ณด๋‹ค 3.4๋ฐฐ ์ ์€ ๊ณต๊ฐ„)

๊ฐ๊ฐ์˜ ์ฝ”๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ๊ณ ์œ ํ•œ ์ ‘๋‘์‚ฌ ์ฝ”๋“œ์—ฌ์•ผ ํ•˜๋ฉฐ ํ—ˆํ”„๋งŒ์ด ์ด๋Ÿฌํ•œ ์ˆซ์ž๋“ค์„ ์ฐพ๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์—๋„ ๋น„๋””์˜ค ์ฝ”๋ฑ๋“ค์€ ์—ฌ์ „ํžˆ ์ด ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋ฉฐ ์••์ถ•์„ ํ•„์š”๋กœํ•˜๋Š” ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์—”์ฝ”๋”์™€ ๋””์ฝ”๋” ๋ชจ๋‘ ๋ฐ˜๋“œ์‹œ ์ด ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ์‹ฌ๋ณผ ํ…Œ์ด๋ธ”์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ…Œ์ด๋ธ”๋„ ํ•จ๊ป˜ ๋ณด๋‚ด์•ผํ•˜์ฃ .

์‚ฐ์ˆ ์  ์ฝ”๋”ฉ:

์‹ฌ๋ณผ ์ŠคํŠธ๋ฆผ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค: a, e, r, s, t์ด๋ฉฐ ์ด ๋“ค์˜ ํ™•๋ฅ ์€ ๋‹ค์Œ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์ด ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.

a e r s t
ํ™•๋ฅ  0.3 0.3 0.15 0.05 0.2

์ด ํ…Œ์ด๋ธ”์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋นˆ๋„์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ชจ๋“  ์‹ฌ๋ณผ์„ ํฌํ•จํ•˜๋Š” ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

initial arithmetic range

์ด์ œ ์ŠคํŠธ๋ฆผ eat๋ฅผ ์ธ์ฝ”๋”ฉํ•ด๋ณด์ฃ . ํ•˜์œ„ ๋ฒ”์œ„ 0.3๋ถ€ํ„ฐ 0.6 ์•ˆ์— ์žˆ๋Š” (๊ทธ๋Ÿฌ๋‚˜ ํฌํ•จ๋˜์ง„ ์•Š์Œ) ์ฒซ ๋ฒˆ์งธ ์‹ฌ๋ณผ e๋ฅผ ์„ ํƒํ•˜๊ณ  ์ด ํ•˜์œ„ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์ด์ „์— ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋น„์œจ๋กœ ๋ถ„ํ• ํ•ด ๏ฟฝ์ƒˆ๋กœ์šด ๋ฒ”์œ„ ๋‚ด์—์„œ ๋‹ค์‹œ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค.

second sub range

์ŠคํŠธ๋ฆผ eat๋ฅผ ์ด์–ด์„œ ์ธ์ฝ”๋”ฉ ํ•ด๋ด…์‹œ๋‹ค. ์ƒˆ๋กœ์šด ํ•˜์œ„ ๋ฒ”์œ„ 0.3๋ถ€ํ„ฐ 0.39์— ํฌํ•จ๋œ ๋‘ ๋ฒˆ์งธ ์‹ฌ๋ณผ e๋ฅผ ์ทจํ•œ ๋’ค ๋งˆ์ง€๋ง‰ ์‹ฌ๋ณผ t๋กœ ๋™์ผํ•œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ๋งˆ์ง€๋ง‰ ํ•˜์œ„ ๋ฒ”์ฃผ์ธ 0.354๋ถ€ํ„ฐ 0.372๋ฅผ ์–ป๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

final arithmetic range

๋งˆ์ง€๋ง‰ ํ•˜์œ„ ๋ฒ”์œ„์ธ 0.354๋ถ€ํ„ฐ 0.372๋‚ด์— ์žˆ๋Š” ์ˆซ์ž๋ฅผ ์„ ํƒํ•ด๋ด…์‹œ๋‹ค. 0.36์„ ๊ณจ๋ผ๋ณด์ฃ . ์ด ํ•˜์œ„ ๋ฒ”์ฃผ์— ๋‚ด์— ์žˆ๋Š” ์ˆ˜๋ผ๋ฉด ์–ด๋–ค ๊ฒƒ์ด๋“  ์ƒ๊ด€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ˆซ์ž๋งŒ ์žˆ์œผ๋ฉด ์›๋ณธ ์ŠคํŠธ๋ฆผ์ธ eat๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ŠคํŠธ๋ฆผ์„ ์ธ์ฝ”๋”ฉํ•  ๋ฒ”์œ„์˜ ๋ฒ”์œ„ ์•ˆ์— ์„ ์„ ๊ธ‹๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

final range traverse

์—ญ๊ณผ์ • (์†Œ์œ„ ๋งํ•˜๋Š” ๋””์ฝ”๋”ฉ)์€ ์ธ์ฝ”๋”ฉ๊ณผ ๋™์ผํ•˜๊ฒŒ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ–ˆ๋˜ ์ˆซ์ž์ธ 0.36์œผ๋กœ ๋™์ผํ•œ ๊ณผ์ •์„ ํ†ตํ•˜์—ฌ ์›๋ž˜์˜ ๋ฒ”์œ„๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ, ์ด๋ฒˆ์—๋Š” ์ด ์ˆซ์ž๋ฅผ ์ธ์ฝ”๋”ฉ๋œ ์ŠคํŠธ๋ฆผ์„ ๋ฐํ˜€๋‚ด๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋ฒ”์œ„์—์„œ ์•ž์„œ ์„ ํƒํ•œ ์ˆซ์ž(0.36)๊ฐ€ ์Šฌ๋ผ์ด์Šค์™€ ์ผ์น˜ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด๊ฒŒ ์ฒซ ๋ฒˆ์งธ ์‹ฌ๋ณผ์ด๋ฉฐ ์ด์ œ ํ•˜์œ„ ๋ฒ”์œ„๋กœ ๋ถ„ํ• ํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. ์ด์ „๊ณผ ๋™์ผํ•œ ๊ณผ์ •์œผ๋กœ 0.36์ด ์‹ฌ๋ณผ a์™€ ์ผ์น˜ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ํŒŒ์•…ํ•  ์ˆ˜ ์ž‡์ฃ . ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๊ณ  ๋‚˜๋ฉด ๋งˆ์ง€๋ง‰ ์‹ฌ๋ณผ์ธ t์— ์ด๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (์›๋ณธ์˜ ์ธ์ฝ”๋”ฉ ๋œ ์ŠคํŠธ๋ฆผ eat๋ฅผ ๊ตฌ์„ฑํ•จ)

์—”์ฝ”๋”์™€ ๋””์ฝ”๋” ๋ชจ๋‘ ์‹ฌ๋ณผ ํ™•๋ฅ  ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ๋ฐ˜๋“œ์‹œ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด ํ…Œ์ด๋ธ”๋„ ๋ณด๋‚ด์•ผ๊ฒ ์ฃ .

๊น”๋”ํ•˜์ฅฌ? ๊ทธ์ฅฌ? ์ด ํ•ด๋ฒ•์„ ๋– ์˜ฌ๋ฆฐ ์‚ฌ๋žŒ๋“ค์€ ๊ฒ๋‚˜ ๋˜‘๋˜‘ํ•ฉ๋‹ˆ๋‹ค. ๋ช‡๋ช‡ ๋น„๋””์˜ค ์ฝ”๋ฑ์€ ์ด ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (์ ์–ด๋„ ์ด๋ฅผ ์˜ต์…˜์œผ๋กœ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ๋ง์ด์ฃ )

์ด ์•„์ด๋””์–ด๋Š” ๋ฌด์†์‹ค๋กœ ์–‘์žํ™”๋œ ๋น„ํŠธ์ŠคํŠธ๋ฆผ์„ ์••์ถ•ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ธ€์€ ์•„์ฃผ ๋งŽ์€ ์„ธ๋ถ€์‚ฌํ•ญ, ์ด์œ , ์ ˆ์ถฉ์•ˆ ๋“ฑ๋“ฑ์ด ์ƒ๋žต๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ๋ฐœ์ž๋กœ์„œ ๋” ๋ฐฐ์šฐ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ์ฝ”๋ฑ์€ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ANS์™€ ๊ฐ™์€ ์—”ํŠธ๋กœํ”ผ ์ฝ”๋”ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‹œ๋„๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ: CABAC vs CAVLC

CABAC์™€ CAVLC ์ด ๋‘ ๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ฐ๊ฐ์˜ ์ŠคํŠธ๋ฆผ์ด ์ƒ์„ฑํ•˜๋Š”๋ฐ ์†Œ๋ชจํ•˜๋Š” ์‹œ๊ฐ„์„ ๋น„๊ตํ•ด ๋ณด์„ธ์š”. ๋˜, ๊ฒฐ๊ณผ๋ฌผ์˜ ์‚ฌ์ด์ฆˆ๋„ ๋น„๊ตํ•ด๋ณด์„ธ์š”.

์—ฌ์„ฏ๋ฒˆ์งธ ๋‹จ๊ณ„ - ๋น„ํŠธ ์ŠคํŠธ๋ฆผ ํฌ๋งท

์ด ๋ชจ๋“  ๊ณผ์ •์„ ๋งˆ์นœ ํ›„์—๋Š” ์••์ถ•๋œ ํ”„๋ ˆ์ž„๊ณผ ์ด ๊ณผ์ •๋“ค์— ๋Œ€ํ•œ ์ปจํ…์ŠคํŠธ๋ฅผ ํŒจํ‚นํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์—”์ฝ”๋”๊ฐ€ ๊ฒฐ์ •ํ•œ ๋‚ด์šฉ๋“ค, ๊ฐ€๋ น ๋น„ํŠธ ๊นŠ์ด, ์ƒ‰๊ณต๊ฐ„, ํ•ด์ƒ๋„, ํ”„๋ฆฌ๋”•์…˜ ์ •๋ณด(๋ชจ์…˜ ๋ฒกํ„ฐ, ์ธํŠธ๋ผ ํ”„๋ฆฌ๋”•์…˜ ๋ฐฉํ–ฅ), ํ”„๋กœํŒŒ์ผ, ๋ ˆ๋ฒจ, ํ”„๋ ˆ์ž„๋ ˆ์ดํŠธ, ํ”„๋ ˆ์ž„ ํƒ€์ž…, ํ”„๋ ˆ์ž„ ๋„˜๋ฒ„ ๋“ฑ์˜ ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ์ •๋ณด๋“ค์— ๋Œ€ํ•˜์—ฌ ๋””์ฝ”๋”์—๊ฒŒ ์ด๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์•Œ๋ ค์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ๊ฒ‰ํ•ฅ๊ธฐ๋กœ H.264 ๋น„ํŠธ์ŠคํŠธ๋ฆผ์„ ๊ณต๋ถ€ํ•ด๋ณผ๊ฑฐ์—์š”. ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ๋ฏธ๋‹ˆ๋ฉ€ํ•œ H.264 * ๋น„ํŠธ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์ด ์ €์žฅ์†Œ์™€ ffmpeg๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜์ง€์š”.

./s/ffmpeg -i /files/i/minimal.png -pix_fmt yuv420p /files/v/minimal_yuv420.h264

* ffmpeg๋Š” ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ๋ชจ๋“  ์ธ์ฝ”๋”ฉ ํŒŒ๋ผ๋ฏธํ„ฐ์— SEI NAL์„ ๋ถ™์ด๋Š”๋ฐ NAL์ด ๋ฌด์—‡์ธ์ง€ ๊ณง ์ •์˜ ํ•ด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ช…๋ น์–ด๋Š” ๋‹จ์ผ ํ”„๋ ˆ์ž„, 64x64, ์ƒ‰๊ณต๊ฐ„ yuv420์˜ ๋กœ์šฐ h264 ๋น„ํŠธ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๋ฉฐ ํ”„๋ ˆ์ž„์œผ๋กœ๋Š” ๋‹ค์Œ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ• ๊ฑฐ์—์š”.

used frame to generate minimal h264 bitstream

H.264 ๋น„ํŠธ์ŠคํŠธ๋ฆผ

AVC(H.264) ํ‘œ์ค€์€ NAL (๋„คํŠธ์›Œํฌ ์ถ”์ƒ ๊ณ„์ธต)์ด๋ผ ๋ถ€๋ฅด๋Š” ๋งคํฌ๋กœ ํ”„๋ ˆ์ž„ (๋„คํŠธ์›Œํฌ ์šฉ์–ด)์— ์ „์†กํ•˜๋Š” ์ •๋ณด๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. NAL์˜ ์ฃผ๋œ ๋ชฉ์ ์€ "๋„คํŠธ์›Œํฌ ์นœํ™”์ "๏ฟฝ์ธ ๋น„๋””์˜ค ํ‘œํ˜„์˜ ํ”„๋กœ๋น„์ „์œผ๋กœ, ์ด ํ‘œ์ค€์€ ๋ฐ˜๋“œ์‹œ TV(์ŠคํŠธ๋ฆผ ๊ธฐ๋ฐ˜), ์ธํ„ฐ๋„ท(ํŒจํ‚ท ๊ธฐ๋ฐ˜) ๋“ฑ์„ ๋น„๋กฏํ•œ ๊ฒƒ๋“ค์—์„œ ๋ฐ˜๋“œ์‹œ ๋™์ž‘ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

NAL units H.264

NAL ์œ ๋‹›์˜ ๊ฒฝ๊ณ„๋ฅผ ์ •์˜ํ•˜๋Š” ๋™๊ธฐํ™” ๋งˆ์ปค๋ผ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋™๊ธฐํ™” ๋งˆ์ปค๋Š” ๋งจ ์ฒซ ๋ฒˆ์งธ์ธ 0x00 0x00 0x00 0x01๋ฅผ ์ œ์™ธํ•˜๊ณ  0x00 0x00 0x01์˜ ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์•ž์„œ ์ƒ์„ฑํ•œ h264 ๋น„ํŠธ์ŠคํŠธ๋ฆผ์— hexdump๋ฅผ ๋– ๋ณด๋ฉด, ํŒŒ์ผ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์„ธ๊ณ„์˜ NAL์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

synchronization marker on NAL units

์•ž์„œ ๋ง์”€๋“œ๋ฆฐ ๋ฐ”์™€ ๊ฐ™์ด, ๋””์ฝ”๋”๋Š” ์‚ฌ์ง„ ์ •๋ณด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋น„๋””์˜ค์˜ ์„ธ๋ถ€์‚ฌํ•ญ, ์ƒ‰, ์‚ฌ์šฉ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ ๋“ฑ์˜ ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ NAL์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋Š” ์ด์— ๋Œ€ํ•œ ์นดํ…Œ๊ณ ๋ฆฌ์™€ ํƒ€์ž…์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

NAL type id Description
0 ์ •์˜๋˜์ง€ ์•Š์Œ
1 ์ธ์ฝ”๋”ฉ๋œ non-IDR ์‚ฌ์ง„ ์Šฌ๋ผ์ด์Šค
2 ์ธ์ฝ”๋”ฉ๋œ ์Šฌ๋ผ์ด์Šค ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…˜ A
3 ์ธ์ฝ”๋”ฉ๋œ ์Šฌ๋ผ์ด์Šค ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…˜ B
4 ์ธ์ฝ”๋”ฉ๋œ ์Šฌ๋ผ์ด์Šค ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…˜ C
5 IDR ์ธ์ฝ”๋”ฉ์˜ IDR ์‚ฌ์ง„ ์Šฌ๋ผ์ด์Šค
6 SEI ์ถ”๊ฐ€ ๋ณด์™„ ์ •๋ณด
7 SPS ์‹œํ€€์Šค ํŒŒ๋ผ๋ฏธํ„ฐ ์…‹
8 PPS ์‚ฌ์ง„ ํŒŒ๋ผ๋ฏธํ„ฐ ์…‹
9 ์—‘์„ธ์Šค ๋‹จ์œ„ ๋ธ๋ฆฌ๋ฏธํ„ฐ
10 ์‹œํ€€์Šค์˜ ๋
11 ์ŠคํŠธ๋ฆผ์˜ ๋
... ...

๋ณดํŽธ์ ์œผ๋กœ ๋น„ํŠธ์ŠคํŠธ๋ฆผ์˜ ์ฒซ ๋ฒˆ์งธ NAL์€ SPS์ž…๋‹ˆ๋‹ค. ์ด ํƒ€์ž…์€ ํ”„๋กœํŒŒ์ผ, ๋ ˆ๋ฒจ, ํ•ด์ƒ๋„ ๋“ฑ๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ์ธ์ฝ”๋”ฉ ๋ณ€์ˆ˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

๋™๊ธฐํ™” ๋งˆ์ปค๋ฅผ ๊ฑด๋„ˆ ๋›ฐ๋Š” ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋ฅผ ๋””์ฝ”๋“œํ•˜์—ฌ ์–ด๋–ค ํƒ€์ž…์˜ NAL์ด ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ์ธ์ง€ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™๊ธฐํ™” ๋งˆ์ปค ๋‹ค์Œ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋Š” 01100111์ž…๋‹ˆ๋‹ค. ์ด ์ฒซ ๋ฒˆ์งธ ๋น„ํŠธ(0)๋Š” forbidden_zero_bit์— ํ•ด๋‹นํ•˜๋ฉฐ, ๋‹ค์Œ 2๋น„ํŠธ(11)๋Š” ํ•ด๋‹น ํ•„๋“œ๊ฐ€ ์ด NAL์ด ๋ ˆํผ๋Ÿฐ์Šค ํ•„๋“œ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” nal_ref_idc๋ฅผ ์•Œ๋ ค์ฃผ๋ฉฐ, ๋‚˜๋จธ์ง€ 5๋น„ํŠธ(00111)์€ nal_unit_type ํ•„๋“œ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” SPS (7) NAL ์œ ๋‹›์ž…๋‹ˆ๋‹ค.

SPS NAL์˜ ๋‘ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ(binary=01100100, hex=0x64, dec=100)๋Š” ์ธ์ฝ”๋”๊ฐ€ ์‚ฌ์šฉํ•œ ํ”„๋กœํŒŒ์ผ์„ ๋ณด์—ฌ์ฃผ๋Š” profile_idc ํ•„๋“œ๋กœ, ์ด ๊ฒฝ์šฐ์—๋Š” constrained high-profile ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” B(bi-predictive) ์Šฌ๋ผ์ด์Šค์˜ ์ง€์›์ด ์—†๋Š” ํ•˜์ดํ”„๋กœํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

SPS binary view

SPS NAL์— ๋Œ€ํ•œ H.264 ๋น„ํŠธ์ŠคํŠธ๋ฆผ ์ŠคํŽ™์„ ์ฝ๋Š” ๊ฒฝ์šฐ, ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„, ์นดํ…Œ๊ณ ๋ฆฌ ๊ทธ๋ฆฌ๊ณ  ๋””์Šคํฌ๋ฆฝ์…˜์— ๋Œ€ํ•œ ๋งŽ์€ ๊ฐ’์„ ์ฐธ๊ณ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด pic_width_in_mbs_minus_1์™€ pic_height_in_map_units_minus_1ํ•„๋“œ๋ฅผ ๋ด…์‹œ๋‹ค.

Parameter name Category Description
pic_width_in_mbs_minus_1 0 ue(v)
pic_height_in_map_units_minus_1 0 ue(v)

ue(v): unsigned integer Exp-Golomb-coded

์ด ํ•„๋“œ๋“ค์˜ ๊ฐ’์œผ๋กœ ๊ณ„์‚ฐ์„ ๋•Œ๋ ค๋ณด๋ฉด, ํ•ด์ƒ๋„์— ์ด๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 119 ( (119 + 1) * macroblock_size = 120 * 16 = 1920) ์˜ ๊ฐ’๊ณผ pic_width_in_mbs_minus_1๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 1920 x 1080๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1920์„ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋Œ€์‹  119๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋˜ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•œ๊ฒƒ์ด์ง€์š”.

๋ฐ”์ด๋„ˆ๋ฆฌ ๋ทฐ(ex: xxd -b -c 11 v/minimal_yuv420.h264)๋กœ ์•ž์„œ ์ƒ์„ฑํ•œ ๋น„๋””์˜ค๋ฅผ ๊ณ„์†ํ•˜์—ฌ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒฝ์šฐ, frame ์ž์ฒด๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋งˆ์ง€๋ง‰ NAL์€ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

h264 idr slice header

์•ž์„œ ์ƒ์„ฑํ•œ ๋น„๋””์˜ค์˜ ์ฒซ ๋ฒˆ์งธ 6๋ฐ”์ดํŠธ์˜ ๊ฐ’์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: 01100101 10001000 10000100 00000000 00100001 11111111. ์ด๋ฏธ ์•„๋Š” ๋ฐ”์™€ ๊ฐ™์ด ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋Š” NAL์˜ ํƒ€์ž…์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ด ๊ฒฝ์šฐ์—๋Š” (00101)์ด๋ฉฐ ์ด๋Š” IDR Slice (5) ์ด๊ณ  ๋” ์ž์„ธํžˆ ํ™•์ธํ•ด๋ณด๋ฉด:

h264 slice header spec

์ŠคํŽ™ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์Šฌ๋ผ์Šค์˜ ํƒ€์ž…(slice_type), ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ(frame_num)์„ ๋น„๋กฏํ•œ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ํ•„๋“œ๋“ค์„ ๋””์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช‡๋ช‡ ํ•„๋“œ(ue(v), me(v), se(v) ํ˜น์€ te(v))์˜ ๊ฐ’์„ ์–ป๊ธฐ ์œ„ํ•ด, Exponential-Golomb๋ผ ๋ถ€๋ฅด๋Š” ํŠน๋ณ„ํ•œ ๋””์ฝ”๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ๋””์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋Œ€๋ถ€๋ถ„ ์ˆ˜๋งŽ์€ ๊ธฐ๋ณธ ๊ฐ’๋“ค์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ณ€์ˆ˜ ๊ฐ’์„ ์ธ์ฝ”๋”ฉํ•˜๋Š”๋ฐ์— ์žˆ์–ด ๋งค์šฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

slice_type์˜ ๊ฐ’๊ณผ ์ด ๋น„๋””์˜ค์˜ frame_num๋Š” ๊ฐ๊ฐ 7(I slice)๊ณผ 0 (์ฒซ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„)์ž…๋‹ˆ๋‹ค.

๋น„ํŠธ์ŠคํŠธ๋ฆผ์„ ํ”„๋กœํ† ์ฝœ๋กœ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด ๋น„ํŠธ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•˜์—ฌ ๋” ๊ณต๋ถ€ํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ITU H.264 spec.๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”. ๋‹ค์Œ์€ ์‚ฌ์ง„ ๋ฐ์ดํ„ฐ(์••์ถ•๋œ YUV)๊ฐ€ ์–ด๋””์— ์œ„์น˜ํ•˜๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๋งคํฌ๋กœ ๋‹ค์ด์–ด๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

h264 bitstream macro diagram

VP9 bitstream, H.265 (HEVC)์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋น„ํŠธ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•ด์„œ๋„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜น์€ ์šฐ๋ฆฌ์˜ ์ƒˆ ๋ฒ ํ”„ AV1 bitstream๋„ ๋ง์ด์ฃ . ๋ชจ๋“  ๋น„ํŠธ์ŠคํŠธ๋ฆผ๋“ค์ด ๋น„์Šทํ• ๊นŒ์š”? ์‘ ์•„๋‹ˆ์•ผ, ํ•˜์ง€๋งŒ ํ•œ ๋ฒˆ ํ„ฐ๋“ํ•˜๊ณ  ๋‚˜๋ฉด ๋‹ค๋ฅธ ๊ฒƒ๋“ค๋„ ์‰ฝ๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์Šต: H.264 ๋น„ํŠธ์ŠคํŠธ๋ฆผ ์‚ดํŽด๋ณด๊ธฐ

๋‹จ์ผ ํ”„๋ ˆ์ž„์˜ ๋น„๋””์˜ค๋ฅผ ๋งŒ๋“ค๊ณ  mediainfo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•œ ๋น„๋””์˜ค์˜ H.264 ๋น„ํŠธ์ŠคํŠธ๋ฆผ์„ ์กฐ์‚ฌํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ h264(AVC)๋ฅผ ํŒŒ์‹ฑํ•˜๋Š” ์†Œ์Šค์ฝ”๋“œ๋„ ๋ณผ ์ˆ˜ ์žˆ์ง€์š”.

mediainfo details h264 bitstream

Intel Video Pro Analyzer๋Š” ์œ ๋ฃŒ์ด๊ธด ํ•˜์ง€๋งŒ ํŠธ๋ผ์ด์–ผ ๋ฒ„์ „์—์„œ๋Š” ์ดˆ๋ฐ˜์˜ 10ํ”„๋ ˆ์ž„ ์ œํ•œ์œผ๋กœ ์‚ฌ์šฉํ•ด๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•™์Šต ์šฉ๋„๋กœ๋Š” ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

intel video pro analyzer details h264 bitstream

๋ฆฌ๋ทฐ

ํ˜„๋Œ€ ์ฝ”๋ฑ์˜ ๋Œ€๋ถ€๋ถ„์€ ์ง€๊ธˆ๊นŒ์ง€ ํ•™์Šตํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ช…์‹ฌํ•ด์ฃผ์„ธ์š”. ์‹ค์ œ๋กœ Thor ๋น„๋””์˜ค ์ฝ”๋ฑ์˜ ๋ธ”๋ก ๋‹ค์ด์–ด ๊ทธ๋žจ์„ ์‚ดํŽด๋ด…์‹œ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์•ž์„œ ํ•™์Šตํ•œ ๋ชจ๋“  ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์•„์ด๋””์–ด๋Š” ์ด ๋ถ„์•ผ์— ๋Œ€ํ•œ ํ˜์‹ ๊ณผ ๋…ผ๋ฌธ๋“ค์— ๋Œ€ํ•ด ์ตœ์†Œํ•œ์˜ ์ดํ•ด๋ฅผ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

thor_codec_block_diagram

์ด์ „์— ๊ณ„์‚ฐํ–ˆ๋˜ ํ•œ ์‹œ๊ฐ„ ๋ถ„๋Ÿ‰์˜ 720p ํ•ด์ƒ๋„๋ฅผ ๊ฐ€์ง„ 30fps ๋น„๋””์˜ค๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด 139GB์˜ ์šฉ๋Ÿ‰์ด ํ•„์š”ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฐฐ์šด ์ธํ„ฐ ํ”„๋ฆฌ๋”•์…˜, ์ธํŠธ๋ผ ํ”„๋ฆฌ๋”•์…˜, ๋ณ€ํ™˜, ์–‘์žํ™”, ์—”ํŠธ๋กœํ”ผ ์ฝ”๋”ฉ ๋“ฑ์˜ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด, ๋Œ€๋žต ํ”ฝ์…€ ๋‹น 0.031๋น„ํŠธ๋ฅผ ์†Œ๋น„ํ•˜๋ฉฐ, ๋ณผ ์ˆ˜ ์žˆ์„๋งŒํ•œ ์ˆ˜์ค€์˜ ํ’ˆ์งˆ์˜ ๋น„๋””์˜ค์— 139GB์™€ ๋‹ฌ๋ฆฌ 367.82MB์˜ ์šฉ๋Ÿ‰๋งŒ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ œ๊ณต๋œ ์˜ˆ์ œ ๋น„๋””์˜ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”ฝ์…€ ๋‹น 0.031๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ H.265๋Š” H.264๋ณด๋‹ค ๋” ๋†’์€ ์••์ถ•๋ฅ ์„ ๋‹ฌ์„ฑํ–ˆ๋Š”๊ฐ€

์ด์ œ ์ฝ”๋ฑ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๋งŽ์ด ๋ฐฐ์› ์œผ๋‹ˆ, ์ƒˆ๋กœ์šด ์ฝ”๋ฑ๋“ค์ด ์ ์€ ๋น„ํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ๋” ๋†’์€ ํ•ด์ƒ๋„๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์— ๋Œ€ํ•ด ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜์‹ค ์ˆ˜ ์žˆ์„๊ฑฐ์—์š”.

AVC์™€ HEVC๋ฅผ ๋น„๊ตํ•ด๋ณผํ…๋ฐ์š”, CPU ์‹ธ์ดํด(๋ณต์žก๋„)์™€ ์••์ถ•๋ฅ  ๊ฐ„์—๋Š” ํ•ญ์ƒ ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ช…์‹ฌํ•˜์„ธ์š”.

HEVC๋Š” AVC์— ๋น„ํ•ด ๋” ํฌ๊ณ  ๋” ๋งŽ์€ ํŒŒํ‹ฐ์…˜(๊ทธ๋ฆฌ๊ณ  ์„œ๋ธŒ ํŒŒํ‹ฐ์…˜) ์˜ต์…˜, ์ธํŠธ๋ผ ํ”„๋ฆฌ๋”•์…˜ ๋ฐฉํ–ฅ, ํ–ฅ์ƒ๋œ ์—”ํŠธ๋กœํ”ผ ์ฝ”๋”ฉ ๋“ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ–ฅ์ƒ์€ H.265๊ฐ€ H.264๋ณด๋‹ค 50% ๋†’์€ ์••์ถ• ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์—ˆ์ฃ .

h264 vs h265

์˜จ๋ผ์ธ ์ŠคํŠธ๋ฆฌ๋ฐ

์ผ๋ฐ˜์ ์ธ ์•„ํ‚คํ…์ณ

general architecture

[TODO]

์ ์ง„์  ๋‹ค์šด๋กœ๋“œ์™€ ์ ์‘ํ˜• ์ŠคํŠธ๋ฆฌ๋ฐ

progressive download

adaptive streaming

[TODO]

์ปจํ…์ธ  ๋ณดํ˜ธ

๊ฐ„๋‹จํ•œ ํ† ํฐ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…์ธ ๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ† ํฐ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋น„๋””์˜ค๋ฅผ ์š”์ฒญํ•˜๋ฉด CDN์€ ์‚ฌ์šฉ์ž๋ฅผ ๋ง‰๊ณ , ์œ ํšจํ•œ ํ† ํฐ์„ ์ง€๋‹Œ ์‚ฌ์šฉ์ž๋ผ๋ฉด ์ปจํ…์ธ ๋ฅผ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ง์ด์ฃ . ์ด๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์›น ์ธ์ฆ ์‹œ์Šคํ…œ๊ณผ ๊ต‰์žฅํžˆ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

token protection

์ด ํ† ํฐ ์‹œ์Šคํ…œ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋น„๋””์˜ค๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ DRM(๋””์ง€ํ„ธ ์ €์ž‘๊ถŒ ๊ด€๋ฆฌ) ์‹œ์Šคํ…œ์€ ์ด๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

drm

์‹ค์ œ ํ˜„์—…์˜ ์‹œ์Šคํ…œ๊ณผ ์‹ค๋ฌด์ž๋“ค์€ ๋‘ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ๊ณผ ์ธ๊ฐ€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

DRM

Main systems

๋ฌด์—‡์ธ๊ฐ€?

DRM์€ ๋””์ง€ํ„ธ ์ €์ž‘๊ถŒ ๊ด€๋ฆฌ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ๋””์ง€ํ„ธ ๋ฏธ๋””์–ด์— ๋Œ€ํ•œ ๊ถŒ๋ฆฌ ๋ณดํ˜ธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๊ณณ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋‚˜ ๋ณดํŽธ์ ์œผ๋กœ๋Š” ์ˆ˜๊ธ๋ฐ›์ง€ ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ?

์ปจํ…์ธ  ์ œ์ž‘์ž(๋Œ€๋ถ€๋ถ„ ์ŠคํŠœ๋””์˜ค๋“ค)๋“ค์€ ์ €์ž‘๋ฌผ์˜ ๋ฌด๋‹จ ๋ฐฐํฌ๋ฅผ ๋ง‰์•„ ์ž์‹ ์˜ ์ง€์  ์žฌ์‚ฐ๊ถŒ์„ ๋ณดํ˜ธํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ?

๊ทน๋„๋กœ ๊ฐ„๋žตํ™”๋œ DRM์˜ ์ถ”์ƒ์ ์ด๊ณ  ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ๋งŒ ์†Œ๊ฐœํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ปจํ…์ธ  C1(์˜ˆ๋ฅผ๋“ค์–ด HLS๋‚˜ dash ๋น„๋””์˜ค ์ŠคํŠธ๋ฆฌ๋ฐ)์„ DRM ์‹œ์Šคํ…œ DRM1(์™€์ด๋“œ๋ฐ”์ธ, ํ”Œ๋ ˆ์ด๋ ˆ๋””, ํŽ˜์–ดํ”Œ๋ ˆ์ด)์„ ์‚ฌ์šฉํ•˜๋Š” ๋””๋ฐ”์ด์Šค D1(์˜ˆ๋ฅผ๋“ค์–ด ์Šค๋งˆํŠธํฐ, TV, ํƒœ๋ธ”๋ฆฟ, ๋ฐ์Šคํฌํƒ‘, ๋…ธํŠธ๋ถ)์—์„œ ํ”Œ๋ ˆ์ด์–ด P1(์˜ˆ๋ฅผ๋“ค์–ด ์ƒค์นด ํด๋ž˜ํผ, ์—‘์†Œ ํ”Œ๋ ˆ์ด์–ด, ios)๋กœ ๋ณธ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค.

์ปจํ…์ธ  C1์€ ์‹œ์Šคํ…œ DRM1์˜ ๋Œ€์นญํ‚ค K1์œผ๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์•”ํ˜ธํ™”๋œ ์ปจํ…์ธ  C'1์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

drm general flow

๋””๋ฐ”์ด์Šค D1์˜ ํ”Œ๋ ˆ์ด์–ด P1์€ ๊ฐœ์ธํ‚ค PRK1(์ด ํ‚ค๋Š” ๋ณดํ˜ธ๋˜์–ด ์žˆ์œผ๋ฉฐ1 D1๋งŒ ์•Œ๊ณ  ์žˆ์Œ)์™€ ๊ณต๊ฐœํ‚ค PUK1๋ผ๋Š” ๋‘ ๊ฐœ์˜ ํ‚ค(๋น„๋Œ€์นญ)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

1๋ณดํ˜ธ๋จ: ๋ธ”๋ž™๋ฐ•์Šค์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ๋‚ด๋ถ€์˜ ํŠน๋ณ„ํ•œ(์ฝ๊ธฐ ์ „์šฉ) ์นฉ์— ์ €์žฅ๋œ ํ‚ค๋กœ ํ•ด๋…์„ ์ œ๊ณตํ•˜๋Š” ํ•˜๋“œ์›จ์–ด๋ฅผ ํ†ตํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๊ณ , ํ˜น์€ DRM ์‹œ์Šคํ…œ์ด ์ œ๊ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ†ตํ•œ(๋œ ์•ˆ์ „ํ•จ) ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณดํ˜ธ๋Š” ํ•ด๋‹น ๋””๋ฐ”์ด์Šค๊ฐ€ ์–ด๋–ค ๋ฐฉ๋ฒ•(ํ•˜๋“œ์›จ์–ด์ , ์†Œํ”„ํŠธ์›จ์–ด์ )์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด P1์ด ์ปจํ…์ธ  C'1์„ ๋ณด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ, ๊ณต๊ฐœํ‚ค PUK1๋ฅผ ๋ถ€์—ฌํ•œ DRM ์‹œ์Šคํ…œ DRM1๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. DRM์‹œ์Šคํ…œ DRM1๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๊ณต๊ฐœํ‚ค PUK1๋ฅผ ๊ฐ€์ง€๊ณ  ์•”ํ˜ธํ™”๋œ ํ‚ค K1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ก ์ ์œผ๋กœ ์ด ์‘๋‹ต์€ D1๋งŒ์ด ํ•ด๋…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

K1P1D1 = enc(K1, PUK1)

P1์€ DRM ๋กœ์ปฌ ์‹œ์Šคํ…œ(SOC๊ฐ€ ํ•ด๋‹น๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠนํ™”๋œ ํ•˜๋“œ์›จ์–ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด)์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด ์‹œ์Šคํ…œ์€ ๊ฐœ์ธํ‚ค PRK1์„ ์‚ฌ์šฉํ•œ ์ปจํ…์ธ ๋ฅผ ํ•ด๋… ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. K1P1D1๋กœ๋ถ€ํ„ฐ ๋น„๋Œ€์นญ ํ‚ค K1๋ฅผ ํ•ด๋…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ C'1์„ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ข‹์€ ์ ์€ RAM์„ ํ†ตํ•ด ์ด ํ‚ค๋“ค์ด ๋…ธ์ถœ์ด ๋˜์ง€ ์•Š๋Š” ๋‹ค๋Š” ๊ฒƒ์ด์ง€์š”.

K1 = dec(K1P1D1, PRK1)

P1.play(dec(C'1, K1))

drm decoder flow

How to use jupyter

Make sure you have docker installed and just run ./s/start_jupyter.sh and follow the instructions on the terminal.

Conferences

References

https://github.com/leandromoreira/digital_video_introduction

About

Main libjpeg-turbo repository

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 53.5%
  • Assembly 30.0%
  • HTML 8.0%
  • Java 4.0%
  • CMake 2.2%
  • Shell 0.9%
  • Other 1.4%