Linux a multimédia Televize pod Linuxem Ačkoliv je Linux už dlouho uznáván jako životaschopný systém, většinou se prosazoval hlavně na serverech. Tomu odpovídalo i zaměření kvalitních aplikací. Ještě před několika lety byl pro kancelářskou práci nebo domácí zábavu "téměř" nepoužitelný. S příchodem nových verzí jádra a hlavně nových programů se však situace začala měnit. Nás bude v této chvíli zajímat hlavně podpora technologie video4linux, která poskytuje standardní rozhraní pro komunikaci programů se vstupními audio(např. FM rádia) a videozařízeními (např. DV, FireWire, TV karty). Velkou zásluhu na tomto počinu má Alan Cox, jeden z vývojářů jádra, který systém navrhl, pojmenoval a začal vytvářet. Pro fungování multimediálních karet tedy musíme mít v jádře zakompilovanou podporu video4linux. Dále je nutný ovladač zařízení, který je s ohledem na stabilitu systému doporučováno kompilovat jako modul, a ne jako součást jádra. V mém případě šlo o TV tuner 3Daemon PV951TF s čipem BT878, výsledný modul se jmenuje bttv.o. Většina u nás prodávaných TV karet je vybavena buď právě tímto čipem, nebo jeho "příbuznými" čipy BT879 a BT848, které tento modul podporuje, proto by se jejich instalace měla lišit jen v maličkostech. Pozor však na typ BT828, který se používal v některých starších kartách firmy ATI, protože pro něj je nutné zvolit jiný ovladač. Pro TV karty je také důležitá sběrnice a přiřazení IRQ. Téměř hodinu jsem zkoumal, proč mi karta nekomunikuje, než mne napadlo přesunout ji do jiného PCI slotu. Potom vše okamžitě začalo fungovat. Jestliže tedy máme odpovídající ovladače, musíme jádru sdělit, aby je načetlo s námi požadovanými parametry. Ještě před prvním pokusem o zavedení ovladačů je však třeba inicializovat modul i2c-core.o. To provedeme následujícím příkazem: $ modprobe i2c-core Protože jsem si nebyl všemi parametry modulu bttv zcela jistý, napsal jsem si dva jednoduché scripty: script 1 (tv_start) - načtení ovladačů tuner, bttv a tvaudio s parametry do paměti a script 2 (tv_stop) - odstranění ovladačů tuner, bttv a tvaudio z paměti. #script 1: tv_start #nacteni ovladacu do pameti modprobe tuner type=5 modprobe bttv card=42 tuner=8 radio=1 pll=1 modprobe tvaudio #script 2: tv_stop #odstraneni ovladacu z pameti rmmod bttv rmmod tuner rmmod tvaudio Dál jsem postupoval následovně: 1. Zavedl jsem modul i2c-core příkazem modprobe i2c-core. 2. Nastavil jsem pokusné parametry do scriptu 1 (tv_start). 3. Spustil jsem script 1 (tv_start). 4. Spustil jsem program xawtv. 5. Pokud se neobjevil žádný obraz, spustil jsem script 2 (tv_stop) a opakoval postup od bodu 2. 6. Pokud se obraz objevil (i zrnitý), zapsal jsem si správnou konfiguraci a mohl jsem začít s laděním TV stanic. Do souboru /etc/modules.autoload jsem přidal správné parametry, jak ukazuje následující výpis. # soubor /etc/modules.autoload modprobe i2c modprobe bttv card=42 tuner=8 radio=1 pll=1 modprobe tuner type=5 modprobe tvaudio Ještě upozorním, že mnou testovaná TV karta má zvukový čip, který umožňuje zvuk pouze zapnout nebo vypnout, nikoli nastavovat hlasitost. Proto je nutné ve zvukovém mixéru vaší zvukové karty nastavit hlasitost pro Line in. Po správném nastavení si již můžeme vychutnávat plody naší investice. Ke sledování televize mi nejvíce vyhovovaly dva programy, xawtv a ktv. Možnosti obou jsou téměř totožné a ovládání velice jednoduché. Další možností, která se nabízí, je ukládání vstupního signálu do videosouborů. Tu nám umožní hned několik programů, mezi nimi i xawtv, ale jeho výstup se mi nepodařilo žádným způsobem přehrát. Další možností je program avicap. Ten je dostupný jako součást balíku avifile spolu s programem aviplay. Jak již název napovídá, aviplay je určen pro přehrávání videosouborů ve formátu AVI a avicap je určen pro grabování videa do AVI souborů. Provedl jsem malý test, abych zjistil možnosti karty a také možnosti svého počítače. Ten již nepatří k nejrychlejším, má procesor Pentium III 700 MHz, 30GB disk Western Digital se 7200 ot./min. a 384 MB paměti. V tabulce jsou výsledky testů provedených programem avicap pro klipy o délce 30 sekund. Ve sloupci Výsledek je u nedostatečných výsledků uvedena přibližná hodnota počtu vynechaných snímků v procentech. Jak je z tabulky patrné, nejlépe dopadlo stahování v kodeku DivX 4 low motion, který jako jediný dokázal komprimovat v reálném čase i při 1/2 rozlišení PAL. Dokonce zde zůstala i minimální rezerva využití procesoru. DivX 5 dopadl jen o něco hůř, zřejmě kvůli optimalizaci kvality komprese lehce stoupla její náročnost na procesor. Ukládání bez komprese dopadlo nejhůř, nebylo to však způsobeno nedostatečným výkonem procesoru jako v předchozích případech, ale nedostatečnou rychlostí disku. Datový objem je už příliš veliký - při rozlišení 384 x 288, frekvenci 25 snímků za sekundu a 24bitové barevné hloubce získáme nekomprimovaný tok 7,9 MB/s a při plném rozlišení je to již čtyřnásobek, tedy 31,6 MB/s. Pro srovnání můžeme použít komprimované formáty, kde se datový tok pohybuje od několika kilobajtů (například Real video) do řádu megabajtů za sekundu (např. DVD). Většinou se však dá rozumné kvality v rozlišení přibližujícím se normě PAL dosáhnout datovými toky mezi 600 kB/s a 1,2 MB/s. Zvláště oblíbené jsou pro relativně nízké datové toky a zároveň relativně vysokou kvalitu obrazu kompresní formáty MPEG-4 a DivX. Jelikož karta obsahuje i FM rádiový tuner, snažil jsem se zprovoznit i ten. Nejdříve jsem přidal k příkazu modprobe bttv další volbu radio=1 (tak je příkaz uveden i ve vzorovém výpisu výše). Poté jsem se poohlédl po aplikacích - první mi padl do oka program Gnomeradio. Instalace ze zdrojových kódů proběhla bez sebemenších problémů, a tak zbývalo rádio jen vyzkoušet. Jelikož jde o velice jednoduchou aplikaci (co by také šlo na rádiu udělat složitého :), vše je velice jednoduše rozloženo a na první pohled jasné. Rádio začalo fungovat okamžitě a naladěné stanice měly čistý zvuk. Zvláštní je, že bez antény karta nechytla ani náznak signálu a zvuk jen šuměl, zato s "kusem kabelu" dodávaným jako anténa byl příjem výborný. Pavel Beníšek