Co je CDDB
CDDB je zkratka pro CD DataBase (doufám, že nemusím rozepisovat, co znamená CD :). Ihned vyvstanou otázky typu: "Co je v té databázi?", "Jak ji využít?", "Kde je ta databáze?", či "Jak ta databáze funguje?", nebo dokonce "Jak napsat program, který ji bude využívat?". Na tyto a snad i další otázky se pokusí odpovědět tento článek. Nejprve se podíváme na CDDB z hlediska uživatelského, potom se podíváme více pod pokličku.
CDDB je databáze zvukových CDček, která ke každému zvukovému CD obsahuje identifikační číslo, název autora, název alba a názvy jednotlivých písniček. A funguje to velice prostě. Vy si vložíte nějaké to zvukové CD do CD-ROMky, přehrávací program vypočte identifikační číslo, pošle dotaz do CDDB serveru a získá názvy, které pak zobrazí. Vy tím pádem nemusíte nic datlovat do klávesnice a máte hezky pojmenovaná CDčka a skladby. Samozřejmě teď vyvstává otázka: "Kde se tam ty informace berou?" a "Co když v té databázi ještě moje CD není?". Pokud vložíte nějaké CD, ke kterému není zatím v CDDB příslušný záznam, tak by měl nabídnout možnost zadat informace o dotyčném albu a poslat je na server, čímž se stane přístupný popis tohoto alba všem.
Stejně jako většina systémů i CDDB má svá pro a proti. Mezi ty kladné vlastnosti patří jednotný standard, velké množství CD v databázi (prý přibývá cca 500 záznamů každý den), použití zadarmo, alespoň pro uživatele a programátory freeware a shareware programů. Dalším plusem je údajná kontrola dat, před vypuštěním naostro - když někdo pošle informace o novém CD do systému, tak prý to někdo zkontroluje, jestli to náhodou nejsou nesmysle. Nezanedbatelná je též možnost využívat CDDB i za proxy serverem. Jako proti lze jednoznačně hodnotit počítání identifikačního čísla ke každému CD - stává se, že dvě různá CD mají stejné číslo. Za nevýhodu se též dá považovat připojení na Internet, chcete-li totiž získat informace z CDDB, tak samozřejmě musíte být připojeni. V začátcích CDDB toto neplatilo, protože si mezi sebou uživatelé databázi vyměňovali. Dnes to pro její rozsáhlost není možné (v databázi je prý už přes 300 000 záznamů).
Nyní asi bude většinu lidí zajímat, kde vzít přehrávače, které CDDB podporují. Protože je pro programátory shareware a freeware kód programu pro přístup do databáze zdarma, tak většina rozumnějších CD přehrávačů CDDB podporuje. I jeden z nejrozšířenějších přehrávačů dneška WinAMP už CDDB podporuje. Velké množství přehrávačů najdete na oficiálních stránkách CDDB. Tyto stránky jsou poměrně dobře zpracovány a můžete použít vyhledávání či se podívat na nejpřehrávanější CD. Pro vývojáře je zde specielní část věnovaná pouze jim. Jsou v ní specifikace, FAQ, zdrojové kódy pro Delphi, C++ a Visual Basic atd.
Po přečtení předchozích odstavců by mělo být jasné, jak v principu funguje CDDB. Jediné co nevíme, je způsob počítání identifikačního čísla (ID) ke každému CD. Pro výpočet ID slouží tři čísla: N, T a P. "T" je délka celého CD v sekundách a počítá se LeadOut mínus začátek první stopy (vše v sekundách). "N" se vypočítá tak, že se vezmou začátky všech stop (v sekundách) a udělá se ke každému číslu ciferný součet. Ciferné součty se všechny sečtou a na toto číslo se použije funkce modulo 255 (modulo je zbytek po dělení - to, co vám zbyde, když celočíselně vydělíte dané číslo číslem 255) a výsledek pak je N. "P" je jednoduše počet stop. Nakonec se tyto tři čísla smíchají do jednoho 32-bitového čísla ID rovnicí: ID = (N shl 24) or (T shl 8) or P. Je mi jasné, že tato rovnice není pro většinu lidí příliš srozumitelná a tak se pokusím alespoň o trochu názornější představu ID. V šestnáctkové soustavě vypadá ID takto: NNTTTTPP. Jinak řečeno jeden bajt z tohoto čísla zabírá N, dva bajty T a jeden bajt číslo P.
Myslím, že lidem vzdělanějším více v programátorském řemesle, je na první pohled jasné, že ID nehospodaří s bity rovnoměrně. Například číslo P. Drtivá většina CD bude mít méně jak 32 skladeb a tudíž všechny tyto CD budou mít tři bity stále nulové. Stejně tak je tomu i u čísla T. Všechny CD se vejdou do 13 bitů a většina dokonce se vejde do 12. Už jen z toho je patrné, jak špatně je standard navržen. Přitom existují matematické metody, které minimalizují možnost, že by dvě různá CD měla stejné ID.
Autoři sami uvádějí, že už dnes existují různá CD, která mají stejná ID a pak tedy nelze poznat, které CD jste vlasně vložili (asi první takováto chyba se objevila, když si někdo chtěl poslechnout AC/DC a objevili se mu informace o CD od skupiny ABBA). Z dnešního hlediska je veliká škoda, že autoři nepočítali s kopírováním CD. Dalo by se totiž zapracovat ochrana proti tomu, že server nepozná kopii od originálu. Když se totiž kopírují zvuková CD metodou TAO, tak se každá stopa mimo první zvětší o dvě sekundy (a tudíž se "posunou" hodnoty TOC). Například autoři uvádějí, že existuje více jak 100 verzí alba "The Wall" od skupiny Pink Floyd. Troufám si tvrdit, že minimálně polovina je díky kopiím (uvědomte si, že navíc kopie z kopie může mít vůči originálu stopy zvětšené o čtyři sekundy). I přes tyto všechny nedostatky je CDDB zajímavým nápadem a stojí za pozornost všem lidem s připojením na Internet.