Jak na vertikální synchronizaci v MPlayeru

23. 1. 2013 19:06 (aktualizováno) Petr Krčmář

Nedávno si mi jeden kolega stěžoval, že má v Linuxu problémy s přehráváním videa. Nakonec zjistil, že je problém v nefunkční vertikální synchronizaci. Já mám jednoduché řešení, které problém opraví.

Problém se projevuje u grafických karet Intel, které nemají v ovladačích v X.org aktivovanou podporu vertikální synchronizace. Efekt se jmenuje tearing. Zjistil jsem, že mám v notebooku právě takovou kartu a problém se u mě projevuje také. Karta se podle lspci hlásí jako  Intel Corporation Mobile GM965/GL960.

Kolega nakonec zjistil, že je třeba opatchovat ovladač v X.org, což problém vyřeší. Mě se ale patchovat nechtělo a problém mi vadí jen při přehrávání filmů. Za normálních okolností ho vlastně ani nepostřehnete.

V podstatě nemám žádnou možnost, jak problém demonstrovat prakticky. Na screenshotech samozřejmě vidět nebude. Zjednodušeně se problém nejvíce projevuje, pokud se po obrazovce pohybuje vertikální čára v horizontálním směru. Například pokud kamera ve filmu jede zleva doprava a v pozadí jsou vertikální žaluzie u okna. Vypadá to pak tak, že se obraz jakoby rozpadá na několik horizontálních pruhů, které jsou o několik pixelů posunuté. Asi tak:

zaluzie.jpg

(Tohle jsem simuloval v Gimpu)

Znát je to jen při pohybu, čím rychlejší a ostřejší hrany, tím více. Oprava je pro MPlayer poměrně jednoduchá. Intel karty totiž mají dvě video rozhraní. Uvidíte je, pokud použijete příkaz

# xvinfo

Jsou označena jako Adaptor #0 a Adaptor #1. Standardně se používá nula, která nedisponuje vertikální synchronizací. Potřebujeme tedy přepnout na jedničku. V xvinfo  je spousta informací, včetně čísla portu, na který chceme přepnout.

# xvinfo|grep "port base" port base: 84 port base: 100

První port je pro adaptér nula, druhý nás zajímá. Teď stačí MPlayer spustit se správným parametrem:

# mplayer -vo xv:port=100 film.avi

Případně do ~/.mplayer/config přidat:

vo = "xv:port=100"

a bude vám to fungovat přímo bez parametrů.

Nevýhoda je v tom, že se tímto postupem vracíme ke klasickému modrému obdélníku, do kterého grafická karta kreslí video. Pokud máte zapnutý kompozitor s průhlednými okýnky, musíte mít okno s videem stále aktivní, jinak se modrá zprůhlední, už není správně modrá a klíčování přestane fungovat. Na fullscreen je to ale jedno a video se hýbe jak má.

Sdílet