Skip to main content

Így működik a H.264 kódolás

FacebookFacebookFacebookFacebook
Megmutatjuk, hogyan működik a Blu-ray filmeknél vagy az MKV fájlok többségénél alkalmazott H.264 kódolás.

Hirdetés
Pages1/2/3

Dekódolás és további javítások

A dekódolás folyamata egyáltalán nem meglepő módon alapvetően az előbb leírt folyamatok fordítottja. Azaz a dekóder a tárolt, tömörített adatok alapján előállítja a kvantálási mátrixokat, amelyeket visszaszámolva (dekvantálva) megkapjuk a makroblokkok frekvenciasíkját. Ebből egy inverz transzformáció segítségével számolhatók vissza a pixelek. Az így kiszámolt és a mozgásvektorokkal leírt, korábbi vagy későbbi képkockákon lévő makroblokkok összességéből áll össze az eredeti(re nagyon hasonlító) kép.

A H.264 kodekkel optimális esetben olyan képet kapunk, ami az eredetivel szabad szemmel nézve egyezik, azonban több olyan eset is előfordulhat, ami zavart okozhat. Az egyik dolog egy gyengén megírt kodek implementáció, de természetesen a képanyag is lehet olyan, amit „nehéz” tömöríteni adott bitráta mellett. A gondot alapvetően a kvantálással kapott mátrixban keletkezett 0-k okozzák, az ezekhez az értékekhez tartozó pixelek ugyanis nem hordoznak információt, így a dekódolt kép ezeken a területeken homogén színű lesz. Ez önmagában még nem baj, azonban ha a szomszédos makroblokkban tömörítése is hasonló információvesztéssel jár, akkor a blokkok határán észrevehető kontrasztbeli különbség alakulhat ki. A blokkosodás tipikusan, de nem csak a finom átmeneteknél vehető észre. A jelenség elvileg könnyen kezelhető lejátszásnál, de a javítás meglehetősen számításigényes, adott esetben akár megduplázhatja a szükséges processzorkapacitást.

A felnagyított képen jól láthatók a 8×8-as blokkok (egyet bejelöltünk, hogy könnyebb legyen elindulni)

A H.264 viszont egy belső deblocking filtert is tartalmaz, aminek nagy előnye a „külső” megoldásokkal szemben, hogy erőssége változtatható. Hátránya ugyanakkor, hogy ez még tovább növeli a betömörítés idejét; ebben az esetben a referencia képkocka ugyanis nem az eredeti képből származtatott tömörített I képkocka, hanem annak deblocking szűrővel „kezelt”, javított változata lesz, így a megfelelő minőség eléréséhez ugyanezt a deblocking szűrést a származtatott képkockák esetében is alkalmazni kell kvantálás előtt.

H.264 profilok és szintek

A H.264 kifejlesztésekor az MPEG-LA figyelembe vette, hogy a hordozható eszközök számára kódolt videók, a netes videók vagy éppen a Blu-ray lemezek esetén más és más alapvető követelményeket kell a tömörítésnél előnyben részesíteni. A szabvány csak konfigurációs paramétereket határoz meg és többféle, összesen 17 profilt, amelyek azt írják le, hogy a fenti lehetőségekből mit lehet és mit nem lehet a tömörítés során használni. Mi most csak a legfontosabb hármat említjük meg, akit bővebben érdekel mind a 17 profil, az itt megtalálja a pontos leírásukat.

Baseline Profile

Ezt a profilt elsősorban a hordozható eszközök számára fejlesztették ki, kis felbontású anyagokhoz és gyenge teljesítményű processzorokhoz. A tömörítésnél csak I és P képkockák használata megengedett, az entrópikus tömörítésnél pedig csak a CAVLC eljárás használható. További megkötés, hogy a tömörítés csak progresszív lehet.

Main Profile

A normál felbontású digitális tévéadásoknál használják, támogatja a B képkockák használatát, a CABAC entrópikus kódolást ás a váltottsoros videókat is. A streaming videók kedvelt formátuma, de a letölthető MKV-k is lehetnek ilyenek.

High Profile

Eredetileg a Main Profile szolgált volna a HD minőségű tartalom tömörítésére is, ám a gyakorlatban végül erre nem került sor, helyette színre lépett az időközben kidolgozott High Profile, egyéni kvantálási mátrixok használatának a lehetőségével. A High Profile lett az alapja a Blu-ray lemezen található filmeknek és a broadcast rendszereknek is, valamint a netről letölthető MKV-k közül is sok van, amit High Profile alapján tömörítettek.

Szintek

A H.264 szabvány a profilok mellett különféle szinteket (Level) is meghatároz – ezekben rögzítve van az adott profil esetében maximálisan alkalmazható felbontás, bitráta, pufferméret valamint az egy másodpercre jutó makroblokkok maximális száma is. A dekóderek számára általában a pufferméret és/vagy az egy másodpercre jutó makroblokkok maximális száma bizonyul szűk keresztmetszetnek. A Blu-ray lemezeken a videósáv tömörítéséhez például 4.1-es szintet használnak és ez az a szint, amivel a tévék és médialejátszók is biztosan megbirkóznak. Az 5.0 és 5.1-es szint esetében az előbb említett két paraméter lehet a szűk keresztmetszet, főleg akkor, ha 1080 soros felbontás mellett adott filmben sok az egymásra épülő B képkocka. Azok a médialejátszók (tévék, Blu-ray lejátszók, stb), amelyek nem tudnak egyes MKV-kat lejátszani, vagy kevés memóriával rendelkeznek vagy nem tudnak a kitömörítéshez szükséges mennyiségű makroblokkot feldolgozni másodpercenként. Ahogyan sok korábbi tévétesztünkből kiderült, a lejátszók szoftverén múlik, hogy megpróbálkoznak-e a lejátszással ilyen esetben, vagy élből elutasítják az adott fájlt.

H.264 kodek implementációk

Ahogyan korábban már említettük, a H.264 kodeknek számos implementációja akad. Az érdekesség kedvéért – csak felsorolás szinten – összegyűjtöttünk belőlük néhányat:
• x264 (ingyenes)
• MainConcept H.264/AVC
• DivX 7
• Nero Digital
• QuickTime Pro

Use the pager below
//
Pages1/2/3