Kodeky pro převod do formátu MPEG 1/2 mívají možnost různých nastavení. Abychom se v tom trochu zorientovali, podíváme se, jak v zásadě fungují.
Kodeky pro převod do formátu MPEG 1/2 mívají možnost různých nastavení. Abychom se v tom trochu zorientovali, podíváme se, jak v zásadě fungují.
U MPEGu jde v podstatě o jakousi lepší adaptaci principů používaných JPEGem, počítající s tím, že po sobě jdoucí snímky, nesou spoustu informací společných se svými předchůdci i následovníky.
Nekomprimuje se zde a neukládá tedy každý snímek zvlášť, ale pracuje se se skupinami snímků. Tyto skupiny jsou tvořeny třemi druhy snímků. Jde o snímky I
(intra)
a
PB
(non intra)
. Jimi tvořené skupiny nesou označení GOP
(group of pictures).
Strukturu takového GOPu si můžete prohlédnout na obrázku vlevo.
I
(intra pictures) jsou komprimovány podobně jako JPEG, s možností komprimovat různé části obrazu, různým stupněm komprese. Jsou to kompletní obrázky. Snímek se rozdělí do makrobloků o počtu 16x16 jasových bodů
(8x8 barvonosných bodů)
. Tyto makrobloky slouží k zachycení a kódování změn mezi snímky.
Makrobloky se dále dělí na čtyři bloky o počtu 8x8 jasových bodů. Ty se zpracovávají pomocí DCT
(diskrétní kosinovou transformací)
s využitím kvantizačních tabulek, které jsou zvlášť určené pro I snímky a zvlášť pro P a B snímky. Jak takové tabulky vypadají můžete vidět na obrázku
(tabulky bývají navrženy pro kvalitu cca 75% a přepočítávají se podle požadovaného stupně komprese)
.
P (predicted pictures)
jsou kódovány s ohledem na předcházející I nebo P snímek. Používají pohybovou kompenzaci
(motion compensation)
k odstranění časové redundance mezi snímky. Pracují na úrovni makrobloků.
B
(bidirectional pictures) se od P snímků liší tím, že jsou kódovány s ohledem na dva nejbližší I nebo P snímky. Abychom zrekonstruovali B snímek, musíme tedy nejdříve znát nejbližší předcházející a následující I nebo P snímky. Z tohoto důvodu se pořadí snímků v datovém toku liší od zobrazovaného pořadí. Z našeho příkladu na obrázku, tak z:
IBBPBBPBBPBBPBBPBBI dostaneme:
IPBBPBBPBBPBBPBBIBB posloupnost.
Z toho jsou patrné značné nároky na paměť, do níž v našem příkladu musíme umísti současně čtyři snímky (IBBP).
Poměr velikosti jednotlivých snímků je v pořadí IPB přibližně 15:5:2. Bezkonkurenčně nejmenší jsou B snímky. Střih je ovšem možný jen v místech I snímků
(pokud nechcete video přepočítávat)
.
GOP může být tvořen i jen samotnými I snímky
(to může být vhodné pro další zpracovávání)
, nebo kombinací I a P snímků.
Při kódování máte někdy možnost nastavit kromě pevného datového toku -CBR
(constant bitrate)
také VBR
(variable bit rate)
nebo CQ
(constant quality)
, které přizpůsobují velikost datového toku aktuálnímu dění na scéně videa.
Známými softwarovými kodeky MPEG videa jsou například LSX od Ligosu, XING, nebo velmi dobrý, volně šiřitelný
TMPGEnc(Tsunami MPEG Encoder)
. Z hardwarových kodeků můžeme zmínit například produkty společnosti
C-Cube(dvě z testovaných karet - Matrox RT2000 a Fast DVnowAV, obsahují dva jejich různé exempláře a budeme se jim u těchto karet věnovat)
.