Naposled aktualizováno 10. 01. 2011.

Kodeky

Co je a co není kodek

Jistou polemiku o tom, co jsou a nejsou kodeky jsem již načal v tomto článku. V poslední době se mi ale zdá, že míra nadužívání slova kodek přesáhla všechny únosné meze. Bohužel je těžké této vlně nepropadnout, protože se šíří světem jako mor a tento nemyslný trend podporují i výrobci přehrávačů, Wikipedie a internetové i papírové magazíny o IT. O co vlastně jde? V podstatě vše, co se týká videa nebo audia se dnes nazve kodekem. Formát je přejmenován na kodek. Dekodér je přejmenován na kodek. Kontejner je přejmenován na kodek. Z enkodéru se stává kodek. Všichni jsme KODEK.

Abysme zjistili, co vlastně je a není kodek, stačí zamyslet se nad tím, jak toto slovo vzniklo, kodek = kodér+dekodér (anglicky codec = coder+decoder). Můžeme pokračovat definicí z Wikipdie: Kodek je softwarová nebo hardwarová implementace nějaké transformace. Tato transformace bývá většinou komprese (ztrátová nebo bezztrátová). Kodek tedy může být nějaký chip v přístroji, který umí komprimovat i dekomprimovat. Nebo je to softwarová knihovna v počítači, která umí komprimovat a dekomprimovat. Aby něco mohlo být nazváno kodekem, musí splňovat dvě podmínky:
1) Kodek musí fungovat oběma směry - komprese i dekomprese.
2) Jedná se o konkétní implementaci nějakého formátu.

Z výše zmíněného je tedy zcela jasné, co všechno kodek není. Ale pro jistotu to zopakuji. Kodek není formát. MPEG-4 není kodek, MP3 není kodek, MPEG-2 není kodek. To jsou všechno formáty, kodek je npaříklad XviD, jelikož splňuje obě podmínky bytí kodekem. Je to konkrétní softwerová implementace formátu MPEG-4 ASP a funguje oběma směry - komprese i dekomprese. Za další kodek není dekodér. Přehrávače neobsahují integrované kodeky, do Windows neinstalujeme pro přehrávání videa kodeky (nenechte se splést názvem codecpack a hlavně se jim obloukem vyhněte). Při přehrávání videa jej pouze dekódujeme. Chybí zde ta komprese, dekodér videa není kodekem. A to samé platí také obráceně, enkodér není kodek. HCenc není kodek, x264 není kodek, Aften není kodek. Jsou to enkodéry (kompresory). Neumí dekódovat, nesplňují tedy jednu z podmínek aby se mohly nazývat kodekem.

Na to, co lze nazvat kodekem už toho moc nezbylo. V zásadě můžeme kodeky rozdělit na 3 kategorie. Systémové knihovny v podobě VfW (Video for Windows) obrazového kodeku. To jsou například DivX nebo XviD. Potom tu jsou zvukové kodeky, jako třeba lame ACM. Za třetí jsou tu kodeky jako samostatné knihovny nebo programy. Příkladem může být lame, libtheora nebo libavcodec (z projektu FFmpeg). Všimněme si, že každý kodek (de)komprimuje jeden nebo více formátů. DivX a XviD (de)komprimují z/do MPEG-4 ASP, lame pracuje s MP3, libavcodec zvládá MPEG-1/2/4 a plno dalších formátů. Doufám, že je již nyní jasný rozdíl mezi kodekem a formátem. Zmatek totiž vytváří obrovská spousta kodeků, které zvládají jediný vlastní formát, který se potom obvykle jmenuje stejně jako kodek samotný. Jako příklad uvedu obrazové VfW kodeky Lagarith nebo HuffYUV. V obou případech je název kodeku totožný s názvem formátu. Ale například HuffYUV formát umí kromě stejnojmenného kodeku (de)komprimovat i libavcodec. Mluvím li tedy o HuffYUV, měl bych dát nějak najevo, zda myslím formát nebo kodek.

Povšimněte si, kde všude najdete výraz kodek špatně použitý. Je to úplný mor. Ono by to tolik nevadilo, pokud by zmatení pojmů nevnášelo ještě větší zmatky do již tak komplikovaného oboru multimediálních fomátů a jejich implementací. Možná najdete i mě, jak slovo kodek někde použiji v nesprávném kontextu, je to taková epidemie, že se jí člověk těžko ubrání. Navíc tisíckrát opakovaná lež se stává pravdou. Pravda je ale taková, že běžný uživatel PC se s kodekem nikdy nesetká a nikdy ho k ničemu nebude potřebovat.

Jak to začalo

Pro pochopení souvislostí je potřeba vypravit se trochu do historie a osvěžit si, jak se to celé stalo. Na začátku byl někdy v polovině devadesátých let DIVX. Původně toto slovo znamenalo něco naprosto jiného, než známe dnes. Byl to systém pro půjčování filmů s DRM (tedy s omezením užití). V té době potřeboval Microsoft vytvořit nějaký kodek, který by použil pro přenos videa po internetu při video konferencích. Nemaje žádného vlastního formátu pro kompresi obrazu, začal vyrábět kodek podle standardu MPEG-4 SP. Moc se mu to nepovedlo, kodek danému standardu neodpovídal. Ale pár beta testerů zjistilo, že se tímto kodekem dá zkomprimovat celý film na velikost CD a kvalita zůstává (na tehdejší poměry) akceptovatelná. Pro souvislosti je třeba si vzpomenout, že vypalovačky CD tehdy stály přibližně stejně jako dnes celé PC, vypalovačky DVD neexistovaly a internet byl žalostně pomalý. Zkomprimovat tedy celý film z DVD na CD bylo fantastické. Zanedlouho Microsoft vydal finální verzi svého kodeku MS MPEG4v3 a vše by bylo ideální. Jenže ouha, Microsoft se najednou rozhodl svůj kodek povolit pouze v kombinaci se svým novým kontejnerem ASF (Advnaced Streaming Format). Použití v AVI bylo zakázané. Protože existovaly spousty programů podporujících AVI, ale podpora ASF byla (ostatně stejně jako dodnes) mizerná, bylo to výrazné omezení použitelnosti. A tak není divu, že se pár chytrých hlav dalo dohromady a MS MPEG4 hackli tak, aby šel použít i s AVI kontejnerem. Svůj "nový" kodek nazvali DivX 3 ;-) (ano i s tím smajlíkem, jako výsměch filmovým společnost a jejich DRM systému DIVX). Od té doby se datují počátky ripování DVD a jejich následná komprese pomocí DivX kodeku.

DivX kodek byl tedy z dílny Microsoftu, pro mnohé čtenáře to je asi celkem překvapující zjištění. Přicházely postupně další verze tohoto kodeku včetně legendární 3.11. Jenže nebylo možné provádět žádná zásadní vylepšení, protože hackeři stojící za DivX ;-) neměly samozřejmě zdrojové kódy ke kodeku, ty vlastnil Microsoft. Navíc šlo o zjevně ilegální software. Vývojáři se tedy dohodli, že vyrobí nový kodek. Tentokrát již opravdu kompatibilní s MPEG-4 SP standardem. Během vývoje se ale část vývojářů rozhodla, že zdrojový kód nového kodeku nechtějí zveřejňovat. Došlo k rozštěpení vývoje. Část pracovala na DivX 4, druhá půlka vývojářů vytvořila projekt Open DivX, později přejmenovaný na XviD. Jako první se objevil DivX 4, plně kompatibilní s MPEG-4 SP a s podporou dvouprůchodové komprese. V té době již byla popularita DivX 3 obrovská. Všude se mluvilo o famózním kodeku a o "filmech v DivXu".

Pro rozšíření DivX do světa bylo také nutné vytvořit nějaký BFU friendly instalátor kodeku. Tehdy došlo k dalšímu zmatení pojmů - kodek a dekodér. Instalátor kodeku totiž do systému spolu s VfW kodekem nahrál i DirectShow filtry pro přehrávání. BFU tedy instalovali kodek, aby si mohli přehrávat filmy v DivXu. Vůbec netušili (a 99% lidí dodnes netuší), že kodek leží na počítači ladem zcela nevyužitý. To co se na přehrávání používá je DirectShow filtr (dekodér), který je součástí instalátoru kodeku. Nekompatibilita první verze DivX s MPEG-4 standardem zapříčinila další obrovskou a dodnes rozšířenou fámu, že totiž DivX "je založený", "je podobný" nebo "vychází z" MPEG-4. To není pravda, od verze 4 již DivX splňuje ISO normu MPEG-4 ASP, stejně jako spousta dalších kodeků (XviD, libavcodec, 3ivX, …). Zmínil jsem tu dva standardy: MPEG-4 SP a MPEG-4 ASP. To si zaslouží vysvětlení. SP znamená Simple Profile, ASP znamená Advanced Simple Profile. ASP tedy nabízí nějaké nové kompresní algoritmy, které je možné v rámci standardu používat. Objevily se poprvé v DivX 5 PRO.

S příchodem kodeku DivX 5 začalo to pravé šílenství. Poprvé se ozvala skupina MPEG LA, vlastnící patenty na technologie používané v MPEG-4 a požadovala zaplatit. DivX přestal být zadarmo. Zdarma byla pouze ořezaná verze nabízející pouze SP. DivX PRO s podporou ASP je od té doby placený. Potenciál MPEG-4 pochopily i další firmy a skupiny. Kromě kodeku XviD vznikla další opensource implementace v rámci projektu FFmpeg. Další komerční kodek se jmenuje 3ivX. Šance se chytlo také plno příživníků, kteří vykrádali existující kodeky a prezentovali je jako vlastní dílo. Tato situace způsobila jeden obrovský problém, který je do značné míry také vinou formátu AVI a jeho tvůrce Microsoftu. V AVI se totiž identifikuje ne formát videa, ale kodek, který byl použitý pro kompresi videa. Tento identifikátor se jmenuje 4CC (Four Character Code). DivX si přivlastnil kódy DIV3, DIV4, DIVX a DX50. XviD logicky používá XVID, stejně jako u 3ivX najdeme 3IVX. Libavcodec zase používá obvykle FMP4. A potom je ještě spousta dalších alternativních kódů, které všechny značí jeden a ten samý formát. Představte si to asi tak, jako kdyby fotky ve formátu JPEG měly pokaždé jinou koncovku podle toho, jakým programem nebo foťákem byly vytvořené. Zdá se to jako nesmysl? U AVI s MPEG-4 kompresí to je fakt.

A jak je to dnes

Dnes je z DivX obrovský kšeft. Firma DivX Inc. vydělává peníze prodejem svého kodeku a hlavně udělováním certifikátů stolním přehrávačům. Další podvodná marketingová strategie. Zdá se Vám nesmyslné, aby třeba MP3 přehrávač měl certifikaci od lame, že přehraje MP3 vyrobené tímto kodekem? Zdá se to absurdní, MP3 přhrávač prostě umí MP3 a tím to končí. Oproti tomu stolní přehrávač umí MPEG-4, ale navíc ještě DivX 3, DivX 4, DivX 5, DivX 6, XviD, a Nero Digital (což znamená všechno jedno a to samé). Je pravda, že téměř žádný DVD přehrávač neumí MPEG-4 ASP kompletně, stejně tak je ale například plno MP3 přehrávačů, které nezvládají MP3 VBR nebo různé verze ID3 tagů. Celý tento zmatek slouží dvěma účelům - vytvořit certifikátem zdání kvalitního výrobku a k další propagaci značky DivX a celkovému zmatení uživatelů. Neinformovaný uživatel je totiž schopný koupit logami ověšený drahý šmejd. Informovaný uživatel požaduje kvalitu a to je pro výrobce samozřejmě složitější než si koupit logo.

Další porcí vzduchu k nafouknutí marketingové bubliny je "vynález" DivX formátu. Jak to tedy doopravdy je? Existuje DivX formát nebo ne? Odpověď je nejasná, ano i ne. Existuje, ale ne tak, jak to většina lidí chápe. Pojem mám video "ve formátu DivX" je v podstatě slangovým výrazem z oblasti multimédií. Je tím míněno video v kontejneru AVI s MPEG-4 kompresí obrazu a MP3 nebo AC3 kompresí zvuku. Lidé, kteří tento výraz používali, věděli, o čem mluví. Když ale tento výraz přejali magazíny pro lajky, ti nabyli dojmu, že se jendá o něco zvláštního. Že to je opravdu nějaký jiný speciální formát. Že to prostě není jenom "obyčejné" AVI. Je to asi jako kdyby motoristický magazín operoval s termíny jako "šíbr", "metla", "hlíny" nebo "stříkačka". A aby toho nebylo málo, přišla firma DivX s vlastním kontejnerem nazvaným DIVX Multimedia Format. Tento "nový" formát je staré dobré AVI s několika úpravami jako podpora menu, více audio stop a integrovanými titulky. V době existence formátů jako Matroška nebo MP4 je uvedení takovéhoto zpátečnického kontejneru více než podivný krok. Má to jediný význam. Od té doby již oficiálně existuje DivX formát. A společnost DivX také s tímto termínem všude vesele operuje.

Závěrem

Tento článek se snaží objasnit pojmy jako kodek, formát, kodér, dekodér a objasnit příčiny jejich vzájemného zmatení. Plno lidí se snaží vypadat chytře používáním slova "kodek". V 99% případů jej však použije špatně a je to jasným ukazatelem, že dotyčný nemá o tématu žádný přehled. Další lidé zase využívají termín "formát DivX" a vůbec neví, co tím je vlastně myšleno. Plno lidí namítne, že to je pouze slovíčkaření. Jenže nazývat věci pravými jmény je extrémně důležité. Jak se chcete s někým domluvit, pokud nevíte, co kterým slovem myslí? Používejte ta správná slova, ulehčí to komunikaci. Dokázat správně nazvat problém je polovinou úspěchu.




Pokud máte nějaký dotaz nebo přípomínku, neváhejte mě kontaktovat.