sobota 16. listopadu 2013

MythTV, VDPAU, Pařízek a kostičky v TV

Nejdřív rozkóduji nadpis: MythTV je skvělý digitální videorekordér, nebo dnes už spíš multimediální centrum, o kterém jsem psal například na Root.cz, české stránky o něm pak provozuji na TVPC.cz.


VDPAU je název pro programové rozhraní, které umožní těžkou a špinavou práci s dekódováním a zobrazováním videa přenechat grafické kartě od firmy NVIDIA (dnes už prý i AMD), která se s tím vůbec nezapotí, na rozdíl od slabého hlavního procesoru, který na opravdu hustá videa (s vysokým bitrate) obvykle nemívá dost sil.

Radim Pařízek je bubeník kapely Citron, který rozjel několik vlastních TV stanic a pro ně navíc i dva pozemní digitální multiplexy, Multiplex 4 a Regionální síť 7.

Kostičky jsou pak jeden z lidových výrazů pro viditelné poruchy v digitálním obraze, kdy se původně celistvý obraz rozpadne do jednotlivých "kostiček" (čtverečků) a různě dlouho různě hrozně zlobí.

No a zajímavé je, že prakticky všechny pořady televizí vysílaných v Pařízkových výše zmíněných multiplexech trpí hrozným kostičkováním v momentech velkých změn obrazu. A že to není silou či kvalitou signálu je možné se přesvědčit například v této velmi dlouhé diskusi. Nečetl jsem ji celou, ale myslím, že správný závěr z ní je, že kostičkování se týká mnoha desítek různých TV a set-top boxů různých výrobců, přičemž Radim sám je určitým způsobem z obliga, protože vysílaný stream je dle MPEG normy - bohužel používá nějaké nastavení kódování prokládaných půlsnímků, které téměř nikdo jiný na světě nepoužívá, takže na něj mnoho různých výrobců digitálních televizí jaksi není připraveno.

MythTV u nás doma nahrává všechny naše oblíbené pořady, hlavně jednotlivé díly televizních seriálů, například SpongeBoba v kalhotách. Ten zrovna běží na TV stanici, která se jmenuje tuším Smíchov a ta je součástí DVB-T multiplexu 4. No a tím pádem bohužel taky kostičkuje. Proto jsem to začal řešit, a jako první jsem se odhodlal k upgrade MythTV z verze 0.26 na aktuální verzi 0.27 doufaje, že to pomůže. Nepomohlo.

Jak jsem výše naznačil, dekódování MPEG proudu zajišťuje grafická karta přes rozhraní VDPAU. Napadlo mě, že třeba pomůže novější NVIDIA ovladač a tak jsem se pustil do upgrade jeho. To bylo poněkud zajímavější, ale aspoň jsem se naučil, že v (X)Ubuntu se na změnu proprietárních ovladačů používá program s názvem "jockey", přičemž kromě obvyklé grafické podoby "jockey-gtk" má také verzi pro příkazovou řádku "jockey-text", která umí vypsat všechny dostupné verze ovladačů ("jockey-text -l"), a také některou z nich vybrat a použít ("jockey-text -e xorg:nvidia_319_updates"). Dále jsem se po několika hodinách bojů naučil, že přestože jockey ukazuje, že je zvolená verze 319, tak pokud je v systému z dřívějška nainstalovaná i jiná verze (např. výchozí 304 v Ubuntu 12.04), tak to pořád nějak zlobí. Řešením je odinstalovat všechny ostatní nepoužívané NVIDIA ovladače. Kupodivu ani nakonec úspěšný upgrade ovladače graf. karty také nepomohl a pořady kostičkovaly dál.

Poslední možnost byla vypnout VDPAU úplně a nechat MPEG video dekódovat jen slabý Atomový procesor. Naštěstí má MythTV možnost volby, pro jaké rozlišení použít jaký dekodér, takže jsem mohl stanice vysílající ve vysokém rozlišení nechat dál grafické kartě, a pouze stanice se standardním rozlišením (PAL 720x756) poslat k dekódování hlavnímu procesoru. No a toto nastavení zázračně vše vyřešilo a kostičky snad definitivně zmizely. Dal jsem si  tu práci a natočil to všechno na videokameru (přepněte si video na celou obrazovku, jinak jsou mé překryvné komentáře bůhví/Googlevíproč nekompletní):


Můj závěr z toho je, že svobodný software (knihovna FFMPEG) zas jednou zvítězil nad dedikovaným hardware v pružnosti, obecnosti a bezchybnosti. Dlouhodobě totiž razím tezi, že nejlepší je mít na všechno počítač s vhodným softwarem namísto různých jednoúčelových krabiček (set-top boxů, DVD přehrávačů atd.), protože svobodný software se zdrojovým kódem se vždy opravuje jednodušeji než proprietární hardware. Samozřejmě v tomto případě je to trošku "přitažené za vlasy", protože i ta grafická karta dekóduje MPEG pomocí software, ale tento je dostupný pouze v binární formě a záleží jen na firmě NVIDIA, jestli si někdy všimne, že Radim Pařízek někde v Evropě nastavil svůj MPEG enkodér poněkud netradičně...

EDIT: 17.11. jsem to nahlásil i v NVIDIA.

4 komentáře:

  1. lední brtník:
    a nešlo by tomu pařízkovi prostě napsat, že je ..kot?

    OdpovědětVymazat
  2. Jestli někomu napsat, tak Nvidii. Když tvrdí, že jejich produkt plně podporuje MPEG 2 normu, pak je to jen její chyba, když si se zcela standardním bitstreamem neporadí. Právě od toho máme normy, aby se v případě problémů s interoperabilitou vědělo, kdo to má špatně a kdo by to měl opravit. Pařízek to není.

    OdpovědětVymazat
  3. Tak v podstatě když to opraví NVIDIA , pomůže to asi tak 50 lidem, kteří to navíc můžou obejít dle mého návodu. Zatímco když nastavení kodéru změní Pařízek, pomůže to tisícům majitelů STB a TV. Nicméně já napíšu do NVIDIA, protože Pařízkovi psalo už spousta lidí a zatím bezvýsledně.

    OdpovědětVymazat
  4. Přizpůsobování se zmetkům, které dobře neimplementují standardy, které mají implementovat, je cesta do pekel. To bychom také mohli skončit s tím, že se bude vysílat 4:3, protože některé přijímače nedokáží správně přepínat na 16:9.

    Já jsem třeba posílal patch do demuxeru Project X, kde taky programátor předpokládal, ale špatně. Jsem zvědav, co na to Nvidia. Ale myslím si, že dekódování SD videa v MPEG2 opravdu není hlavní devizou VDPAU a že softwarové přehrávání tomu nijak výrazně neuškodí.

    OdpovědětVymazat