Így működik a H.264 kódolás
Videók tömörítése
A fent leírt lépésekkel egy állókép akár 10:1-es, jobb kodekek esetében 20-30:1-es tömörítés után is szinte teljesen megkülönböztethetetlen az eredetitől. A videók tömörítésénél használt algoritmusok ugyanakkor ennél jóval hatékonyabbak, a H.264 akár 200:1-es aránynál is tud olyan jó minőséget adni, amit ránézésre nagyon nehéz megkülönböztetni az eredetitől. Habár a videók kódolása nagyon hasonlít az állóképek kódolásához, egy fontos különbség van; mivel állóképek sorozatáról beszélünk, felhasználható a képkockák egymáshoz viszonyított hasonlósága is.
A H.264, mint minden videokodek, a képkockákat csoportokra osztja, egy-egy ilyen csoport neve a GOP (Group of Pictures) A H.264 esetében egy GOP 12-15 képkockából áll, közülük az elsőt az enkóder éppen úgy tömöríti be, mintha állóképről lenne szó; ennek módját az előző oldalon részletesen bemutattuk. A GOP első képkockája az I képkocka (Inter), sajátossága, hogy ennek dekódolásához nincsen szükség egyetlen más képkocka adataira sem.
A további képkockák kiszámolásánál már egy sokkal hatékonyabb módszer szerint jár el a tömörítő, minden makroblokkhoz próbál találni egy hasonlót a (GOP-on belül) korábban tömörített képkockák makroblokkjai közül. A hasonlóságot az eltérések összegével (SAD) vagy négyzetösszegével (SSD) jellemzik a tömörítők. Ha van „találat”, akkor csak a mozgásvektort kell eltárolni (ami a két képkocka egymáshoz viszonyított térbeli helyzetét írja le) valamint természetesen a két képkocka közötti tényleges eltérést. Ez általában sokkal kevesebb adattal megoldható! Természetesen ami nem megy, azt nem kell erőltetni; ha nincs elég közeli találat, akkor a makroblokkot a tömörítő „normálisan” dolgozza fel. Azokat a képkockákat, amelyek kiszámolása mozgásvektorok felhasználásával történik, P (Predictive) vagy B (Bi-predictive) képkockának nevezzük, attól függően, hogy csak korábban megjelenő (P) vagy korábban és később megjelenő képkockákra is van-e az adott képkockában hivatkozás. P képkocka csak előző I és P képkockákra hivatkozhat, míg B képkocka esetében hivatkozási alap lehet az előző I és P vagy későbbi P képkocka – sőt, H.264 esetében, profiltól függően akár előző vagy későbbi B képkocka is (B-piramis).
Fontos, hogy a tömörítés során a képkockák feldolgozási sorrendje általában nem azonos a képkockák megjelenítési sorrendjével! H.264 kódolás esetén az első I képkocka után P következik, majd ezt követően néhány B kép készül el, amelyek az I és P között jelennek meg, aztán újabb P, B-k, P, stb. Az alábbi ábra jól szemlélteti mindezt. A képkockatípusok helyigénye csökkenő sorrendben a következő: I-P-B. Logikus módon, minél több B képkockát tud alkalmazni egy tömörítő, annál kisebb méretben tudja ugyanazt az információt eltárolni. A legfejlettebb kodekek B képkockák esetében akár három vagy négy képkockára is tudnak hivatkozni.
A pontos mozgásbecslés az egyik legfontosabb eszköze a hatékonyságnak, ugyanakkor hatalmas számítási kapacitást igényel. 1920×1080 pixeles képméret esetén százmilliós nagyságrendben kell(ene) a makroblokkokat összehasonlítani, ami iszonyatos számítási kapacitást igényel(ne). Ha nem lenne mindenféle módszer, amivel százas nagyságrendűre lehet csökkenteni az „ígéretes” makroblokkok számát. Többféle technika létezik, ezt azonban a fizetős kodekek fejlesztői ipari titokként tartják számon – nem véletlen, ugyanis egy jó mozgásbecsléssel kiváló minőséget lehet elérni gyors tömörítési sebesség mellett. (Végül is logikus: több mozgásvektor elemzésével jobb minőség érhető el ugyanakkora bitráta mellett, vagy ugyanaz a minőség érhető el kisebb bitrátával, de ez lassabb tömörítéssel is jár.)
A mozgásvektorok kiválasztásának egyik leggyakoribb metódusa annak elemzése, hogy az adott területhez a korábbi képkockákról milyen mozgásvektorok tartoznak. Egy másik, szintén gyakori alternatíva néhány véletlenszerűen kiválasztott (közeli) terület elemzése, az eredmények alapján a legjobb becslés közlében újabbaké, és így tovább – majd meghatározott lépcső után a tömörítő kiválasztja a legjobb eredményt. A H.264 esetében a mozgásbecslés pontosságát úgy is lehet növelni, hogy a 16×16-os területeket tovább bontjuk kisebb, 16×8-as, 8×8-as, 8×4-es 4×4-es stb. területekre, és ezekre külön mozgásbecslést készítünk. A pontosságra jellemző, hogy a H.264 a mozgásbecslésre akár negyed pixel pontossággal is képes.
Korábban már írtuk hogy a mozgásbecslés nagyon számításigényes művelet – oly annyira az, hogy a tömörítési idő 75-80%-ában mozgásvektorokat számol a processzor.
A mozgásbecslés szelídebb (gyorsabb, de azonos tárhelyen rosszabb minőséget adó) verziója a mozgáskompenzáció – ebben az esetben SAD és SSD számolás nélkül egyszerűen a makroblokkok átmásolásával kísérletezik a kodek. Speciális helyzetekben, például akkor, ha a tartalom nem, csak a fényerő változik, mozgásvektorok helyett súlyozott becsléssel lehet spórolni, ezzel le lehet írni egy makroblokk fényességének változását.
A legtöbb adatot persze akkor lehet spórolni, ha egy makroblokk tartalma nem változik; ebben az esetben sem mozgásvektorra sem változásinformációk tárolására nincs szükség.

