Dokumentácia
Stručný zoznam použitých kompresných techník
V evk je každý snímok videa uložený ako I-snímok alebo P-snímok. Oba využívajú mierne odlišné spôsoby kompresie.
I-snímky
I-snímky, nazývané aj kľúčové, nie sú závislé na predchádzajúcich snímkoch. Používajú podobnú kompresiu ako využíva štandard JPEG. To zahŕňa DCT transformáciu pre bloky o veľkosti 8x8 pixelov, kvantizáciu DCT koeficientov podľa kvantizačnej tabuľky a kvant. parametru, preusporiadanie koeficientov pre efektívnejšiu RLE kompresiu. JPEG následne pre tieto dáta definuje Huffmanovo kódovanie a tabuľky - evk využíva exponenciálne Golombovo enkódovanie. Pekný popis týchto metód je na Wikipédii: JPEG (po česky), exponenciálne Golombovo enkódovanie (po anglicky).
P-snímky
P-snímky, nazývané aj rozdielové, sú závislé na predchádzajúcich snímkoch. Popisujú pohyb objektov medzi dvoma snímkami a drobné odchýlky medzi nimi. Vďaka tomu zaberajú oveľa menej miesta ako I-snímky.
Hľadanie pohybu medzi snímkami prebieha týmto spôsobom: Snímok sa rozdelí na bloky o veľkosti 16x16 pixelov - makrobloky. Potom sa pixely makrobloku porovnávajú s pixelmi v predchádzajúcom snímku, kým sa na nejakej pozícii nenájde zhodný alebo veľmi podobný blok. Vzájomné posunutie - pohyb týchto blokov reprezentuje pohybový vektor. Prípadný rozdiel medzi blokmi je väčšinou veľmi malý, uloží sa podobným spôsobom ako keby to bol blok v I-snímku. Na porovnávanie sa využíva súčet absolútnych hodnôt rozdielov medzi pixelmi - SAD (sum of absolute differences). Dva bloky s nulovým SAD sa rovnajú. Čím je SAD väčšie, tým je rozdiel medzi pixelmi väčší.
Proces vyhľadávania pohybu je časovo aj výpočetne veľmi náročný. Existujú rôzne spôsoby ako ho zjednodušiť, ich hlavný cieľ je spoločný - nájsť dostatočne presný pohybový vektor s využitím čo najmenšieho počtu porovnaní. Evk umožňuje dva spôsoby zrýchlenia: obmedzenie veľkosti oblasti, v ktorej sa vyhľadáva a vyhľadávanie pomocou vzoriek.
Vyhľadávanie pomocou hexagonálnej vzorky
Vyberie sa počiatočný bod, ktorý bude tvoriť stred vzorky; zvyčajne ľavý horný roh makrobloku.
Vypočíta sa SAD v šiestich bodoch okolo stredu - ich pozície tvoria šesťuholník (hexagon). Bod s najnižším SAD bude stredom vzorky v ďalšom kroku.
Vypočíta sa SAD v šiestich bodoch okolo nového stredu a bod s najnižším SAD bude stredom vzorky v ďalšom kroku.
Proces sa opakuje, pokiaľ sa nenájde stred, ktorý má nižšie SAD ako okolité body.
Vypočíta sa SAD bodov, ktoré sú bezprostredne okolo stredového bodu.
Pohybový vektor siaha od bodu, kde sme našli najnižšie SAD, k počiatočnej pozícii.