29. srpna 2011 (09:00)
Vyšla dlouho očekávaná distribuce Mandriva Linux 2011. Nově se soustředí pouze na prostředí KDE a obsahuje vylepšení od ROSA labs.
[Představení hlavních novinek]
[Jak upgradovat z 2010]
[Poznámky k vydání]
[Download]
[CZ mirror]
[Errata]
Volný překlad části The Unofficial XviD FAQ.
Zkomprimovat dvouhodinový film v plné kvalitě do něčeho, co se vejde na jedno CDčko samozřejmě vyžaduje uplatnění nějaké seriózní kompresní taktiky. MPEG-4 na to jde částečně tak, že odstraní informace, které stejně nevnímáme a částečně používá transformaci skutečných surových obrazových dat na přibližné matematické hodnoty. Pro nás, obyčejné smrtelníky, je přibližná hodnota dostatečná a rozdílu mezi originálem a výsledkem komprese si ani nevšimneme (tedy alespoň teoreticky).
Nejprve je barevný rozsah (color space - způsob, kterým jsou obrazové body, jejich barva a jas uloženy v každém snímku) převeden ze své původní formy do barevného rozsahu zvaného YV12. Lidské oko je méně citlivé v barevné (taktéž zvané Chroma) oblasti a mnohem citlivější v jasové (nebo-li Luminance nebo Luma) oblasti, takže myslitelé z MPEGu si sedli kolem stolu a rozhodli, že barevná Chroma informace je méně důležitá než jasová Luma informace. Výsledkem je, že zatímco hodnota jasu se ukládá pro každý obrazový bod (pixel) zvlášť, barevná Chroma hodnota je ukládána pro 4 pixely společně. (Chroma hodnota sestává ze dvou oddělených jednobajtových hodnot).
Následující krok komprimačního procesu je pozoruhodně popsán v Compression FAQ @ www.faqs.org:
Základní princip spočívá v předvídání směru pohybu mezi snímky v čase a následném použití DCT (discrete cosine transforms = diskrétní cosinové transformace » popis) k organizaci přebytečných částí prostoru. DCT transformace se provádějí na blocích 8x8 a předvídání směru v jasovém luminance (Y) kanálu na blocích 16x16.Následující krok procesu je tedy odvozen z poznatku, že mnoho informací v obrazovém záznamu se dá považovat za "statické", pokud vezmete správným způsobem v úvahu pohyb těchto informací.
Pro ilustraci vezmeme televizní přenos ze závodů grand prix formule 1. Většina obrazu sestává z aut, které se ve výřezu televize mírně pohybují, jak se kameraman snaží udržet auto (auta) ve středu pohledu. Obrázek auta se v celém záběru téměř nemění (možná chvílemi ztrácí ostrost), ale jaksi "kmitá" kolem středu.
V praxi se ukazuje, že většina video záznamů ze skutečného života spadá do této kategorie. Pokud správně zachytíte pohyb, komprese obrazu může být velmi vysoká a stále přijatelně přesná.
Potom, co je určen směr pohybu, se ke kompresi texturové informace použije technika zvaná Discrete Cosine Transformation nebo-li DCT. (Při dekódování se tento proces obrátí a říká se mu Inverse Discrete Cosine Transformation nebo-li IDCT).
Kodek rozdělí obrázek na bloky velikosti 8x8 a na ně aplikuje DCT. Čtyři tyto 8x8 bloky jsou seskupeny dohromady a vytvoří jeden makroblok. Informace v těchto blocích rozhoduje o úrovni detailů, která může být vysoká nebo nízká. Dobrá analogie vysoké a nízké úrovně detailů ve filmu jsou dvě stránky knihy, kde jedna je zcela popsaná a druhá zcela prázdná čistá stránka. Samozřejmě, že popsaná stránka má mnohem více detailů než čistá.
DCT vezme detaily z těchto bloků a použije na ně techniku zvanou kvantovací (quantization) proces. Bloky o velikosti 8x8 potom už neobsahují pixely, ale frekvenční hodnoty. Vysoká frekvence představuje vysokou úroveň detailů, nízká frekvence nízkou. Tyto frekvence jsou následně přepočítány s použitím kvantovací matrice, která kodeku určuje, které frekvence se vypustí a kdy. To je dost složitý proces a vyžadoval by složité vysvětlení. Jedno pěkné najdete tady (forum na doom9 - anglicky).
Když je obraz pomocí DCT převeden do detailových signálů, jsou tyto signály ořezány (coefficient cutting), aby byly menší. Čím větší část signálu odříznete, tím více detailů ztratíte a více artefaktů (čtverečků, ringingu čili moskytového šumu) dostanete. Kvantizér (quantizer) je faktor odstraňování detailů (DivX3/Nandub říká kvantizéru DRF). Vyšší kvantizace znamená ořezání většího množství detailů a nižší kvalitu obrazu. Takže například, kvantizér kolem 2 znamená, že ponecháme skoro všechny detaily, zatímco kvantizer s hodnotou pohybující se na úrovni 31 vypustí skoro všechno.
Další důležitá věc, se kterou byste se měli seznámit je, že v MPEG-4 existují různé druhy snímků. Většinou se jim říká klíčové snímky (neboli keyframes, I-frames, IVOPs nebo INTRA-frames), předvídané P-snímky (P-frames, Predicted frames, PVOPs, také inter-frames) a obousměrné B-snímky (B-frames, BI-directional frames). Jsou i další druhy snímků, ale většinou se nepoužívají.
K nacpání dvouhodinového filmu na jedno CDčko je zapotřebí opravdu dobrého kompresního algoritmu. Ten musí zvládat kompresi, ale i dekompresi, tj. také v reálném čase načíst, co je sbaleno, a vyrobit z toho data pro zobrazení. Algoritmus je prováděn softwarem, který komprimuje a dekomprimuje, a proto se mu říká kodek (anglicky samozřejmě codec = compressor decompressor). Komprese může být ztrátová a bezztrátová. Bezztrátová umožňuje obraz obnovit v původní dokonalé podobě, ale má samozřejmě nízký poměr komprese. XviD je vyspělý ztrátový kompresní algoritmus založený na MPEG4.
V roce 1999 byli u Microsoftu názoru, že je třeba prorazit do slibných oblastí distribuce videa po síti a vypustili do světa tři kodeky založené na MPEG-4. Jak je u této firmy zvykem, použití těchto kodeků bylo možné jen v úplně novém a s ničím neslučitelném formátu ASF. To se pochopitelně nesetkalo s přílišným úspěchem, a tak se kodek V3 stal předmětem zájmu "zlých hackerů" a po násilném zásahu se dal, pod názvem DivX 3, použít v .AVI souborech. Nelegální DivX 3 se stal velmi populárním a dodnes má své příznivce. Microsoft pod tlakem okolností nakonec V3 uvolnil, ale už bylo pozdě.
V lednu 2001 odstartoval za účelem legalizace projekt OpenDivX, který si dal za cíl napsat zcela od začátku úplně nový, otevřený MPEG-4 kompatibilní kodek. Původci této snahy byli staří známí "zlí hackeři". S tou otevřeností to ale nebylo moc horké, protože nakládání se zdrojovými kódy bylo omezeno a zápis do CVS byl povolen jen vybraným lidem. Sparky, jeden z programátorů, do projektu přispěl novým enkódovacím jádrem encore2, které bylo o hodně lepší než původní a někteří usoudili, že by se na tom dalo vydělat. Zlanařili Sparkyho, kód byl uzavřen, Encore2 bylo z CVS bez varování odstraněno a stalo se základem komerčního DivX 4. Tento podraz rozezlil ostatní programátory, kteří byli názoru, že jejich práce byla zneužita. Použili všechny části kódu, které ještě měly vyhovující licenci a v projektu pokračovali. Následně byl všechen kód původního OpenDivX nahrazen a vznikl XviD, který je pod veřejnou licencí GPL.
Proč tedy používat XviD a ne DivX, nebo něco jiného? Zjednodušeně řečeno: protože XviD je stejně dobrý, nebo lepší než ostatní ztrátové kodeky, je zcela otevřený a zdarma.
Části tohoto článku se dostaly do encyklopedických hesel XviD a Kodek v české Wikipedii.
» [Celá sekce VIDEO]
Verze tohoto dokumentu: