Hirdetés

Az x264 és a DXVA - a gyakorlatban

Egy tesztsoron keresztül szemléltetem, miért érdemes a DXVA komatibilitást kihasználni kódolásnál, hogy a lejátszásnál se legyen semmi gond kisebb HTPC-ken, laptopon, asztali gépeken.

A num_ref_frames változásainak hatása a DXVA kompatibilitásra, a deblock negatív irányú eltolása nagy felbontású videók esetében

Korábban már esett szó a DXVA kompatibilitásról, annak megtörését eredményező beállításokról, valamint a deblock hatásáról az alap 0:0 beállítás és a -3:-3 beállítás mellett. Egyik írásomban utaltam is rá, hogy leteszteltem a -3:-3 deblock-ot, ám nem éreztem igazán körültekintőnek, mivel SD minőségről volt szó (már a forrás sem volt megfelelő) és sok homogén felületet tartalmazó anyagról. Most találtam egy másik, sokkal mozgalmasabb és részletesebb videót - amivel már jobb tesztelni - nagyobb felbontásban (720p). Időhiány miatt nem sok tesztbeállítással dolgoztam, de azért kiindulásként ennyi is megteszi.

Koncepció:

Asztali Blu-ray lejátszót, de milyet?

Ma már szinte minden film kijön Blu-ray lemezen is DVD mellett, előbb-utóbb elterjednek a háztartásokban is a lejátszók is pontosan úgy, mint annak idején a DVD esetében is, illetve még régebben a videó lejátszók korában. Na de milyet, melyik gyártótól, milyen paraméterekkel érdemes megvenni? Erre keressük a választ ebben az írásban.

Kötelező történelemóra

Amikor a CD-t váltotta a DVD, nem nagyon volt több alternatíva, amelyek közül választani kellett, viszont a DVD lecserélése nem ment ilyen egyszerűen. Nagy háború zárult le a HD DVD elsorvasztásával és a Blu-ray, mint szabvány véglegesítésével néhány éve.

Természetesen a technikai megfontolások mellett a nagy neveket és minél több pénzt kellett a megoldások mellett lobbizóknak maguk mellé állítani. Lényeges eltérések vannak a HD DVD és a BD (Blu-ray) között. Amíg az előbbi MPEG-2 program stream-et használ, addig a BD a DVB és ATSC DTV (Az Advanced Television Standard Committee Digital Television szabványa) által is alkalmazott transport stream-et.

Az x264 és a DXVA kompatibilitás

Egyre több HD tartalmú lemezről készülnek ripek, különböző felvett anyagokat kódolhatunk x264-gyel, de viszonylag kevés ezek közül olyan, amely eleget tenne a DXVA kompatibilitás követelményeinek. Nézzük meg, mit kell tenni, hogy kihasználhassuk videokártyánk áldásos segítségét a dekódolásban.

Bevezetés

Sajnos meglepődve tapasztalom, hogy sokan nem tudják rendesen használni az x264-et, illetve nem ismerik elég alaposan a H.264 szabványt sem. Nem ismerik, a használt level értékének hasznát, csupán annyit sok esetben, hogy x264-et használnak. Ez viszont nem mond túl sokat önmagában Sajnos elég sűrűn kiderül az is, Hogy L5.1-et használnak, ami mögött minden bizonnyal az a tévhit kering (többek között), hogy a legmagasabb level = legjobb minőség, pedig ha megnézzük, ez abszolút nem igaz.

Ennek okai valószínűleg a DivX, XviD és a dvdrip kódolásának más hozzáállásában keresendőek, illetve a nagyon hiányos scene szabályokban. Az XviD nem igényel hardveres segítséget és különösebben nem is terheli meg a processzort sem, így a beállításokat egy GUI-ban vagy bármely enkóder szoftverben kevés korlátozással szabadon változtatgathatjuk. Ha egy csapat meg akar felelni a scene szabályainak, akkor is csupán végig kell olvasnia a hosszú leírást és azt a kevés megkötést kell csupán beépítenie, amit annak idején a kitalálók állítottak fel.

Az x264 beállításai eltérő forrásokra

Az előző írásokban már megismerhettük a H.264 enkódolására használatos x264 főbb opcióinak jelentését, használatát, most pedig megpróbálom kicsit összefoglalni, milyen forrásanyaghoz milyen beállításokat érdemes használni. Sorra veszünk még néhány hasznos opciót az x264 CLI paraméterei közül a még optimálisabb végeredmény érdekében. Egy jó tanács a kódoláshoz és a cikkhez: Einstein óta tudjuk, hogy attól függ! :)

Az x264 beállításai különböző forrástípusokra

Forrástípusok

Nyilvánvaló, hogy nem ugyanaz vonatkozik egy akció dús, mozgásban gazdag filmre, egy animációra vagy egy kevésbé részlet gazdag videóra. Éles határt nagyon nehéz lenne meghúzni és kategorizálni a különböző forrásanyagokat, erre nem is teszek kísérletet, hanem inkább csak bizonyos könnyen megkülönböztethető jegyeik alapján megnézzük, mivel lehet optimalizálni a kódolást ezekre a típusokra.
Tehát akkor nézzük a típusokat:

A H.264/MPEG-4 AVC mítosz III. rész

Az elméleti rész befejezése után az eddigiek gyakorlati hasznával is foglalkozunk, hogy végre tiszta legyen a kép. Megpróbálok nem elveszni a matematikai és kódelméleti dolgokban… remélem, sikerül is.

A kép összeáll

Láthattuk az előző észben, hogy egy kereten belül és más keretek felhasználásával is kódolhatunk. Maradjunk még egy kicsit ennél a témánál.

Transzformálás, digitalizálás (transform, quantization)

Nem újdonság egyik lépés sem a kódolásban, de van néhány dolog, amiben a H.264 az első. Az transzformáció és az inverz transzformáció is integer (egész szám) alapú lett az eddigi idealizált trigonometrikus módszerek helyett. Ennek legnagyobb előnye, hogy így nem lesznek eltérések az enkódoló és a dekódoló között a kerekítések miatt. Támogatott lett a 4x4-es transzformációs méret a 8x8 mellett, ami a kisebb méretből adódóan kevesebb hibát eredményez a minőségben.

A macroblock mérete maradt 16x16, de ez felosztható4x4 vagy 8x8 blokkokra, amikhez T4x4 vagy T8x8 mátrixokat rendelhetünk. A 8x8 transzformáció csak a már amlített FRExt kiterjesztéssel jött, de komplexitása még így is kisebb, mint a hagyományos 8x8 IDCT esetén.

A H.264/MPEG-4 AVC mítosz II. rész

A második részben az enkódolás lépéseivel, a legfontosabb definíciókkal, azok használatával ismerkedünk meg. Ha valamely fogalom, kifejezés első használatakor nincs ott a definíciója, azt később fejtem ki bővebben. Az enkódolás is több részre oszlik, mert nem szeretném ömlengősre venni a dolgot.

Hogyan működik a H.264

Leegyszerűsítve a dolgot, a H.264 leír egy enkódolási és egy dekódolási folyamatot anélkül, hogy konkrét codec-et határozna meg a szabvány. Ez eléggé furcsának hangzik, hiszen így csak az enkódolt bitstream szintaxisa és a dekódolás metódusa van meghatározva, de az MPEG-1, MPEG-2 és MPEG-4 szabványok esetében is hasonlóan jártak el a tervezéskor. Gyakorlatilag azt határozták meg, hogy a használt enkóder és dekóder milyen funkcionális elemekből építkezhet. Az alapvető elemek (prediction, transform, quantization, entropy encoding) különböznek az előző szabványokban használtaktól (MPEG1, MPEG2, MPEG4, H.261, H.263), de az igazi eltérés a részletekben rejlik. Fogalmilag a VCL (Video Coding Layer) és a NAL (Network Abstraction Layer) közé helyezi magát a H.264. Ez utóbbiról később kicsit bővebben is esik majd szó. A VCL tartalmazza a jelfeldolgozás funkcióit, mint a mozgás kompenzált előrejelzést, a transzformációt, quantization-t, loop filtert, a modern codec-ek hagyományait követve ebben.

A H.264/MPEG-4 AVC mítosz

A H.264/AVC a HD térhódításával nagy népszerűségre tett szert. Kiváló minőség érhető el vele és nagyon rugalmas. Többnyire mkv konténerben találkozhatunk vele, a HD lemezek rippelt verzióit letöltve, de trailer-ek, demók, saját készítésű videók sokasága is használja már ezt a remek szabványt. Megpróbálom kicsit összefoglalni, bemutatni érdekességeit, hatékonyságának kulcselemeit és rávilágítok arra, hogyan lehet felhasználni saját videók készítéséhez. Több részre osztom a cikket, így egy-egy fontos részt bővebben taglalhatok és talán áttekinthetőbb is lesz a struktúra.

Történelem, tények és számok – általános bevezető

A H.264 az ITU-T (International Telecommunication Union) telekommunikációs szabályozási területe „ajánlása” (szabványa, csupán a megnevezés ajánlás). Az ITU rendszerében a H (Audiovisual and multimedia systems) Audiovizuális és multimédia rendszerek kategória 264-es számú ajánlása (Advanced video coding for generic audiovisual services). Innen ered az elnevezés is: H.264.