8.2. Videó kimenet tradícionális videó kártyákhoz

8.2.1. Xv

XFree86 4.0.2 vagy újabb alatt használhatod a kártyád YUV rutinjait az XVideo kiterjesztés használatával. Ez az, amit a '-vo xv' kapcsoló használ. Ez a vezérlő támogatja a fényerősség/kontraszt/árnyalat/stb. állítását (hacsak nem a régi, lassú DirectShow DivX codec-et használod, ami mindenhol támogatja), lásd a man oldalt.

A beüzemeléséhez ellenőrizd a következőket:

  1. XFree86 4.0.2 vagy újabbat kell használnod (korábbi verziókban nincs XVideo)

  2. A kártyádnak támogatnia kell a hardveres gyorsítást (a modern kártyák tudják)

  3. Az X-nek írnia kell az XVideo kiegészítés betöltését valahogy így:

    (II) Loading extension XVideo

    a /var/log/XFree86.0.log fájlban.

    Megjegyzés

    Ez csak az XFree86 kiegészítését tölti be. Egy jó telepítésben ez mindig betöltődik, de ez nem jelenti azt, hogy a kártya XVideo támogatása is be van töltve!

  4. A kártyádnak van Xv támogatása Linux alatt. Ennek az ellenőrzéséhez add ki az xvinfo parancsot, ez része az XFree86 disztribúciónak. Egy hosszú szöveget kell kiírnia, valami ilyesmit:

    X-Video Extension version 2.2
    screen #0
      Adaptor #0: "Savage Streams Engine"
        number of ports: 1
        port base: 43
        operations supported: PutImage
        supported visuals:
          depth 16, visualID 0x22
          depth 16, visualID 0x23
        number of attributes: 5
    (...)
        Number of image formats: 7
          id: 0x32595559 (YUY2)
            guid: 59555932-0000-0010-8000-00aa00389b71
            bits per pixel: 16
            number of planes: 1
            type: YUV (packed)
          id: 0x32315659 (YV12)
            guid: 59563132-0000-0010-8000-00aa00389b71
            bits per pixel: 12
            number of planes: 3
            type: YUV (planar)
    (...stb...)

    Támogatnia kell a tömörített YUY2 és a YV12 planar pixel formátumokat, hogy az MPlayer használni tudja.

  5. És végül, nézd meg, hogy az MPlayer 'xv' támogatással lett-e fordítva. Írd be ezt: mplayer -vo help | grep xv . Ha az 'xv' támogatás be van építve, egy ehhez hasonló sornak szerepelnie kell:

      xv      X11/Xv

8.2.1.1. 3dfx kártyák

A régebbi 3dfx vezérlőknek tudvalevőleg problémáik vannak az XVideo gyorsítással, nem támogatják sem a YUY2-t sem a YV12-t, és így tovább. Nézd meg, hogy 4.2.0 vagy újabb XFree86-tal rendelkezel-e, ez rendben működik YV12-vel és YUY2-vel. A korábbi verziók, beleértve a 4.1.0-t, összeomlanak az YV12-vel. Ha különös effekteket tapasztalsz a -vo xv használatakor, próbáld ki az SDL-t (ebben is van XVideo) és nézd meg, hogy ez segít-e. Lásd az SDL fejezetet a részletekért.

VAGY, próbáld ki az ÚJ -vo tdfxfb vezérlőt! Lásd a tdfxfb részt.

8.2.1.2. S3 kártyák

Az S3 Savage3D nem működik megfelelően, de a Savage4 igen 4.0.3 vagy újabb XFree86 használata mellett (képhibák esetén próbáld 16bpp-vel). Ami az S3 Virge-eket illeti: van xv támogatás, de maga a kártya túl lassú, így jobb, ha eladod.

Már van natív framebuffer vezérlő az S3 Virge kártyákhoz, hasonlóan a tdfxfb-hez. Állítsd be a framebuffer-ed (pl. add hozzá a "vga=792 video=vesa:mtrr" opciót a kerneledhez) és használd a -vo s3fb opciót (-vf yuy2 és -dr szintén segíthet).

Megjegyzés

Jelenleg nem tisztázott, hogy mely Savage modellekből hiányzik a YV12 támogatás, és konvertál a vezérlő (lassú). Ha a kártyára gyanakodsz, szerezz be egy újabb vezérlőt, vagy udvariasan kérj az MPlayer-users levelezési listán egy MMX/3DNow! támogatású vezérlőt.

8.2.1.3. nVidia kártyák

Az nVidia nem mindig a legjobb választás Linux alatt... Az XFree86 nyílt forráskódú vezérlője támogatja a legtöbb kártyát, de a legtöbb esetben a bináris, zárt forrású nVidia vezérlőt kell használnod, ami elérhető az nVidia weboldalán. Erre a vezérlőre mindenképpen szükséged lesz, ha 3D gyorsítást akarsz.

A Riva128 kártyákkal nincs XVideo támogatás az XFree86 nVidia vezérlőjével :( Panaszkodj az nVidia-nak.

Habár az MPlayer a legtöbb nVidia kártyához rendelkezik VIDIX vezérlővel. Jelenleg még béta állapotú, és van pár bökkenője. További információkért lásd az nVidia VIDIX részt.

8.2.1.4. ATI kártyák

A GATOS vezérlő (amit használnod illene, hacsak nem Rage128 vagy Radeon kártyád van) alapértelmezésként engedélyezi a VSYNC-et. Ez azt jelenti, hogy a dekódolási sebesség (!) a monitor frissítési rátájához van szinkronizálva. Ha a lejátszás lassúnak tűnik, próbáld meg valahogy kikapcsolni a VSYNC-et vagy állítsd be a frissítést n*(film fps értéke) Hz-re.

A Radeon VE - ha X kell, használj XFree 4.2.0-t vagy újabbat ehhez a kártyához. Nincs TV kimenet támogatás. Természetesen az MPlayerrel simán is gyorsított megjelenítést kapsz, TV kimenettel vagy anélkül, és így sem függvénykönyvtárra sem X-re nincs szükség. Olvasd el a VIDIX részt.

8.2.1.5. NeoMagic kártyák

Ilyen kártyák általában laptopokban találhatóak. XFree86 4.3.0 vagy újabbat kell használnod, vagy Stefan Seyfried Xv-t támogató vezérlőjét. Csak válaszd ki az te XFree86-odhoz illő verziót.

Az XFree86 4.3.0-ban van Xv támogatás, Bohdan Horst pedig küldött egy kis javítást az XFree86 forrásához, ami a framebuffer műveleteket felgyorsítja (XVideo-t is) akár négyszeresére is. A javítás belekerült az XFree86 CVS-ébe és a 4.3.0 utáni következő kiadásban is benne lesz.

A DVD méretű tartalmak lejátszásához az XF86Config-odat módosítanod kell:

Section "Device"
    [...]
    Driver "neomagic"
    Option "OverlayMem" "829440"
    [...]
EndSection

8.2.1.6. Trident kártyák

Ha az Xv-t Trident kártyával akarod használni, feltéve hogy nem megy 4.1.0-val, telepítsd fel az XFree 4.2.0-t. A 4.2.0-ban teljes képernyős Xv támogatás van a Cyberblade XP kártyával.

Alternatívaként az MPlayer is tartalmaz egy VIDIX vezérlőt a Cyberblade/i1 kártyához.

8.2.1.7. Kyro/PowerVR kártyák

Ha az Xv-t Kyro alapú kártyával akarod használni (például Hercules Prophet 4000XT-vel), akkor le kell töltened a vezérlőt a PowerVR oldaláról

8.2.2. DGA

BEVEZETÉS.  Ez a dokumentum megpróbálja pár szóban elmagyarázni, hogy mi is az a DGA tulajdonképpen és mit tehet a DGA vezérlő az MPlayernek (és mit nem).

MI AZ A DGA.  A DGA a Direct Graphics Access rövidítése és azt jelenti, hogy egy program az X szerver megkerülésével direkt eléréssel módosíthatja a framebuffer memóriát. Gyakorlatilag ez úgy történik, hogy a framebuffer memória a processzed memória tartományába kerül leképezésre. Ezt a kernel csak superuser jogokkal engedélyezi. Vagy root néven történő bejelentkezéssel vagy az MPlayer futtatható állományának SUID bitjének beállításával juthatsz ilyen jogokhoz. (nem javasoljuk).

Két verziója van a DGA-nak: a DGA1 az XFree 3.x.x-ban volt használatos, a DGA2 az XFree 4.0.1-ben került bevezetésre.

A DGA1 csak direkt framebuffer elérést biztosít a fent leírt módszerrel. A videó jel felbontásának megváltoztatásához az XVidMode kiterjesztést kell használnod.

A DGA2 már tartalmazza az XVidMode kiterjesztés képességeit és a képernyő színmélységét is engedi változtatni. Így alaphelyzetben 32 bites színmélységben futtatott X szervert átállíthatsz 15 bites mélységre és vissza.

Ennek ellenére a DGA-nak van néhány hátránya. Úgy tűnik ez az általad használt grafikus chip-től függ és az ezen chip-et irányító vezérlő X szerverben való megvalósításától. Így nem minden rendszeren működik...

DGA TÁMOGATÁS TELEPÍTÉSE AZ MPLAYERHEZ.  Először győződj meg, hogy az X betölti a DGA kiterjesztést: lásd a /var/log/XFree86.0.log fájlt:

(II) Loading extension XFree86-DGA

XFree86 4.0.x vagy újabb nagyon javasolt! Az MPlayer DGA vezérlőjét a ./configure automatikusan megtalálja, de elő is írhatod a használatát a --enable-dga kapcsolóval.

Ha a vezérlő nem tud kisebb felbontásra váltani, kísérletezz a -vm (csak X 3.3.x esetén), -fs, -bpp, -zoom kapcsolókkal a filmnek legmegfelelőbb videó mód megtalálásához. Még nincs konverter :(

Lépj be rootként. A DGA-hoz root elérés kell, hogy közvetlenül tudjon írni a videó memóriába. Ha felhasználóként akarod futtatni, telepítsd az MPlayert SUID root-tal:

chown root /usr/local/bin/mplayer
chmod 750 /usr/local/bin/mplayer
chmod +s /usr/local/bin/mplayer

Így már egyszerű felhasználók esetében is működik.

Biztonsági kockázat

Ez nagy biztonsági kockázatot jelent! Soha ne csináld ezt meg egy szerveren vagy egy olyan számítógépen amihez mások is hozzáférnek, mert root jogokat szerezhetnek a SUID root-os MPlayerrel.

Használd a -vo dga kapcsolót, és már megy is! (reméljük:) Kipróbálhatod a -vo sdl:driver=dga kapcsolót is, hogy működik-e! Sokkal gyorsabb!

FELBONTÁS VÁLTÁS.  A DGA vezérlő lehetővé teszi a kimeneti jel felbontásának megváltoztatását. Ezzel elkerülhető a (lassú) szoftveres méretezés és ugyanakkor teljes képernyős képet biztosít. Ideális helyzetben pontosan a videó adat felbontására vált (kivéve az aspect arányt), de az X szerver csak a /etc/X11/XF86Config (/etc/X11/XF86Config-4 XFree 4.X.X esetén) fájlban előírt felbontásokra enged váltani. Ezeket modline-oknak nevezik és a videó hardvered tulajdonságain múlik. Az X szerver átnézi ezt a konfigurációs fájlt indításkor és letiltja a hardverednek nem megfelelőeket. Az X11 log fájlból kiderítheted, hogy mely módok engedélyezettek. Megtalálhatóak a /var/log/XFree86.0.log fájlban.

Ezek a bejegyzések tudvalevőleg működnek Riva128 chip-en, az nv.o X szerver vezérlő modul használatával.

Section "Modes"
  Identifier "Modes[0]"
  Modeline "800x600"  40     800 840 968 1056  600 601 605 628
  Modeline "712x600"  35.0   712 740 850 900   400 410 412 425
  Modeline "640x480"  25.175 640 664 760 800   480 491 493 525
  Modeline "400x300"  20     400 416 480 528   300 301 303 314 Doublescan
  Modeline "352x288"  25.10  352 368 416 432   288 296 290 310
  Modeline "352x240"  15.750 352 368 416 432   240 244 246 262 Doublescan
  Modeline "320x240"  12.588 320 336 384 400   240 245 246 262 Doublescan
EndSection

DGA & MPLAYER.  A DGA két helyen használható az MPlayerben: Az SDL vezérlőnek előírhatod a használatát (-vo sdl:driver=dga) és a DGA vezérlőben (-vo dga). A fent említettek vonatkoznak mind a kettőre; a következő részben leírom, hogyan működik az MPlayer DGA vezérlője.

TULAJDONSÁGOK.  A DGA vezérlő használatát a -vo dga kapcsoló parancssorban történő megadásával írhatod elő. Alapértelmezésként az videó eredeti felbontásához legközelebb álló felbontásra vált. Szándékosan figyelmen kívül hagyja a -vm és -fs kapcsolókat (videó mód váltás engedélyezése és teljes képernyő) - mindig a lehető legtöbbet megpróbálja elfedni a képernyődből a videó mód váltásával, így megspórolja a képméretezéshez szükséges plusz CPU ciklusokat. Ha nem tetszik az általa választott mód, kényszerítheted, hogy az általad megadott felbontáshoz legközelebbit keresse meg az -x és -y kapcsolókkal. A -v kapcsoló beírásának hatására a DGA vezérlő sok egyéb mellett kilistázza az aktuális XF86Config fájl által támogatott összes felbontást. DGA2 használata esetén előírhatod a színmélységet is a -bpp kapcsolóval. Az érvényes színmélységek 15, 16, 24 és 32. A hardvereden múlik, hogy ezek a színmélységek alapból támogatottak-e vagy (valószínűleg lassú) konverziót kell végezni.

Ha vagy olyan szerencsés, hogy elegendő memóriád van az egész, nem képernyőn lévő kép bemásolásához, a DGA vezérlő dupla bufferelést fog használni, ami egyenletesebb film lejátszást eredményez. Kiírja, hogy a dupla bufferelés engedélyezett-e vagy sem.

A dupla bufferelés azt jelenti,h ogy a videód következő képkockája a memória egy nem megjelenített részére másolódik, amíg az aktuális képkocka van a képernyőn. Ha kész a következő képkocka, a grafikus chip megkapja az új kép memóriabeli helyét, és egyszerűen onnan megjeleníti a képet. Eközben a másik buffer ismét feltöltődik új videó adattal.

A dupla bufferelés bekapcsolható a -double kapcsolóval, vagy letiltható a -nodouble-lal. A jelenlegi alapértelmezett beállítás szerint le van tiltva a dupla bufferelés. DGA vezérlő használata esetén az onscreen display (OSD) csak akkor működik, ha a dupla bufferelés engedélyezve van. Azonban a dupla bufferelés nagy sebességcsökkenéssel járhat (az én K6-II+ 525 gépemen további 20% CPU idő!) a hardvered DGA implementációjától függően.

SEBESSÉGI ADATOK.  Általánosságban a DGA framebuffer elérésének legalább olyan gyorsnak kell lennie, mint az X11-es vezérlőnek a teljes képernyős képhez szükséges kiegészítők használatával. Az MPlayer által kiírt százalékos sebesség értékeket azonban fenntartással kezeld, mert például az X11-es vezérlő esetén nem tartalmazzák azt az időt, ami az X szervernek kell a kirajzoláshoz. Hurkold rá a terminált egy soros vonalra és indítsd el a top programot, akkor megtudod mi is történik valójában a dobozodban.

Kijelenthetjük, hogy a DGA gyorsítása a 'normális' X11-es használathoz képest erőteljesen függ a grafikus kártyádtól és hogy a hozzá tartozó X szerver modul mennyire optimalizált.

Ha lassú rendszered van, jobb ha 15 vagy 16 bites színmélységet használsz, mivel ezek fele akkora memória sávszélességet igényelnek, mint a 32 bites megjelenítés.

A 24 bites színmélység használata is jó ötlet, ha a kártyád natívan támogatja a 32 bites mélységet, mivel ez is 25%-kal kevesebb adatátvitelt jelent a 32/32 módhoz képest.

Láttam pár AVI fájlt 266-os Pentium MMX-en lejátszva. Az AMD K6-2 CPU-k is működnek 400 MHZ vagy afölött.

ISMERT HIBÁK.  Nos, az XFree néhány fejlesztője szerint a DGA egy szörnyeteg. Ők azt mondják, jobb ha nem használod. Az implementációja nem mindig tökéletes az XFree-hez tartozó chipset vezérlőkkel.

  • Az XFree 4.0.3 és az nv.o esetén van egy hiba, ami érdekes színeket eredményez.
  • ATI vezérlő esetén egynél többször kell visszaváltani a módot a DGA-s lejátszás után.
  • Néhány vezérlő egyszerűen képtelen visszaváltani normál felbontásra (használd a Ctrl+Alt+Keypad + és Ctrl+Alt+Keypad - kombinációkat a kézi váltáshoz).
  • Néhány vezérlő egyszerűen rossz színeket jelenít meg.
  • Néhány vezérlő hamis adatot ad a processz címterébe bemappolt memória méretéről, így a vo_dga nem használ dupla bufferelést (SIS?).
  • Néhány vezérlő egy használható módot sem jelez. Ebben az esetben a DGA vezérlő összeomlik és azt írja, hogy 100000x100000-es értelmetlen mód vagy valami hasonló.
  • Az OSD csak engedélyezett dupla buffereléssel működik (különben villog).

8.2.3. SDL

Az SDL (Simple Directmedia Layer) tulajdonképpen egy egységesített videó/audió interfész. Az ezt használó programok csak az SDL-ről tudnak, arról nem, az hogy milyen videó és audió vezérlőt használ. Például egy SDL-t használó Doom port futhat svgalib, aalib, X, fbdev és még más vezérlők segítségével, de neked csak (például) a videó vezérlőt kell megadnod az SDL_VIDEODRIVER környezeti változóval. Legalábbis elméletben.

Az MPlayerrel mi az X11 vezérlő szoftveres képméretező képességét használtuk XVideo-t nem támogató kártyák/vezérlők esetén, amíg el nem készült a mi saját (gyorsabb, szebb) szoftveres méretezőnk. Használtuk az aalib kimeneti képességét is, de most már abból is van saját, ami sokkal komfortosabb. A DGA módja jobb volt a mienkénél, legalábbis a közelmúltig. Vágod? :)

Segít pár hibás vezérlő/kártya esetén is, ha a videó szaggatott (nem lassú rendszer miatt) vagy az audió késett.

Az SDL videó kimenet támogatja a feliratok megjelenítését a film alatt, a (ha van) fekete soron.

8.2.4. SVGAlib

TELEPÍTÉS.  Telepítened kell az svgalib-et és a fejlesztői csomagjait ahhoz, hogy az MPlayer elkészítse az SVGAlib vezérlőjét (automatikusan felismeri, de lehet kényszeríteni is rá) és ne felejtsd el átírni a /etc/vga/libvga.config fájlt, hogy megfeleljen a kártyádnak és a monitorodnak.

Megjegyzés

Ne használd a -fs kapcsolót, mert bekapcsolja a szoftveres méretezést és lassú. Ha tényleg szükség van rá, használd a -sws 4 kapcsolót, ami rossz minőséget ad, de valamivel gyorsabb.

EGA (4BPP) TÁMOGATÁS.  Az SVGAlib tartalmazza az EGAlib-et és az MPlayer így képes bármely film 16 színben történő megjelenítésére, lehetővé téve az alábbi beállítások használatát:

  • EGA kártya EGA monitorral: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp
  • EGA kártya CGA monitorral: 320x200x4bpp, 640x200x4bpp

A bpp (bit per pixel) értéket kézzel kell 4-re állítanod: -bpp 4

A filmet valószínűleg át kell méretezni, hogy megfeleljen az EGA módnak:

-vf scale=640:350

or

-vf scale=320:200

Ehhez gyors, de rossz minőséget produkáló méretező rutin kell:

-sws 4

Talán az automatikus arány-javítást kikapcsolhatod:

-noaspect

Megjegyzés

A kísérleteimből úgy tűnik, a legjobb képminőség EGA monitorokon a világosság enyhe csökkentésével állítható elő: -vf eq=-20:0. Nálam szükséges volt az audió mintavételi ráta csökkentése is, mert a hang szétesett 44kHz-en: -srate 22050.

Csak az expand szűrő segítségével tudod bekapcsolni a feliratokat és az OSD-t, lásd a man oldalt a megfelelő paraméterekért.

8.2.5. Framebuffer kimenet (FBdev)

Az FBdev elkészítése automatikusan kiválasztódik a ./configure során. Olvasd el a framebuffer dokumentációt a kernel forrásban (Documentation/fb/*) a bővebb információkért.

Ha a kártyád nem támogatja a VBE 2.0 szabványt (régebbi ISA/PCI kártyák, mint például az S3 Trio64), csak a VBE 1.2-t (vagy régebbit?): Nos, a VESAfb még elérhető, de be kell töltened a SciTech Display Doctor-t (egykori UniVBE), mielőtt betöltenéd a Linuxot. Használj DOS boot lemezt vagy valamit. És ne felejtsd el regisztrálni az UniVBE-det! ;))

Az FBdev kimenetnek a fentiek mellett van néhány paramétere is:

-fb
megadhatod a használni kívánt framebuffer eszközt (alapértelmezett: /dev/fb0)
-fbmode
használni kívánt mód neve (a /etc/fb.modes fájlnak megfelelően)
-fbmodeconfig
módokat tartalmazó konfigurációs fájl (alapértelmezett: /etc/fb.modes)
-monitor-hfreq, -monitor-vfreq, -monitor-dotclock,
fontos értékek, lásd example.conf

Ha egy különleges módra akarsz váltani, akkor így használd:

mplayer -vm -fbmode mod_neve fajlnev

  • Magában a -vm kiválasztja a legmegfelelőbb módot a /etc/fb.modes fájlból. Használható együtt a -x és -y kapcsolókkal is. A -flip kapcsoló csak akkor támogatott, ha a film pixel formátuma megfelel a videó mód pixel formátumának. Figyelj a bpp értékére, az fbdev vezérlő az aktuálisat próbálja meg használni, vagy ha megadsz valamit a -bpp kapcsolóval, akkor azt.

  • A -zoom kapcsoló nem támogatott (használd a -vf scale-t). Nem használhatsz 8bpp (vagy kevesebb) módokat.

  • Valószínűleg el szeretnéd tüntetni a kurzort:

    echo -e '\033[?25l'

    vagy

    setterm -cursor off

    és a képernyővédőt:

    setterm -blank 0

    Kurzor visszakapcsolása:

    echo -e '\033[?25h'

    vagy

    setterm -cursor on

Megjegyzés

Az FBdev videó mód váltása nem működik a VESA framebufferrel és ne is kérd, hogy működjön, mivel ez nem az MPlayer korlátja.

8.2.6. Matrox framebuffer (mga_vid)

Ez a rész a Matrox G200/G400/G450/G550 BES (Back-End Scaler) támogatásról szól, az mga_vid kernel vezérlőről. Van benne hardveres VSYNC támogatás tripla buffereléssel. Működik mind framebufferes konzolon, mind X alatt.

Figyelem

Mindez csak Linux alatt! Nem-Linux (FreeBSD-n tesztelve) rendszereken a VIDIX-et használhatod helyette!

Telepítés:

  1. A használatához először mga_vid.o-t kell forgatnod:

    cd drivers
    make

  2. Majd hozd létre a /dev/mga_vid eszközt:

    mknod /dev/mga_vid c 178 0

    és töltsd be a vezérlőt

    insmod mga_vid.o

  3. Ellenőrizd a memória méret detektálását a dmesg parancs segítségével. Ha hibásan írja, használd a mga_ram_size kapcsolót (előtte rmmod mga_vid), a kártya memóriájának MB-ban történő megadásához:

    insmod mga_vid.o mga_ram_size=16

  4. Az automatikus betöltéshez/törléshez először írd be ezt a sort a /etc/modules.conf fájlod végére:

    alias char-major-178 mga_vid

    Majd másold be a mga_vid.o modult a megfelelő helyre a /lib/modules/kernel verzió/valahol könyvtárba.

    Ezután futtasd le a

    depmod -a

    parancsot.

  5. Ezekután le kell fordítanod (újra) az MPlayert, a ./configure meg fogja találni a /dev/mga_vid-et és elkészíti az 'mga' vezérlőt. Az MPlayerben a -vo mga kapcsolóval használhatod, ha matroxfb konzolod van vagy a -vo xmga-val XFree86 3.x.x vagy 4.x.x alatt.

Az mga_vid vezérlő együttműködik az Xv-vel.

A /dev/mga_vid eszköz fájlt megnézheted némi infóért például a

cat /dev/mga_vid

segítségével és beállíthatod a fényerősséget:

echo "brightness=120" > /dev/mga_vid

8.2.7. 3Dfx YUV támogatás

Ez a vezérlő a kernel tdfx framebuffer vezérlőjét használja a filmek YUV gyorsításával történő lejátszásához. Kell hozzá egy kernel tdfxfb támogatással, és egy újrafordítás a

./configure --enable-tdfxfb

paranccsal.

8.2.8. OpenGL kimenet

Az MPlayer támogatja a filmek OpenGL-lel történő megjelenítését is, de ha a platformod/vezérlőd támogatja az Xv-t, inkább azt használd PC-n Linux-szal, az OpenGL teljesítménye észrevehetően gyengébb. Ha Xv támogatás nélküli X11-ed van, az OpenGL jó alternatíva lehet.

Sajnos nem minden vezérlő támogatja ezt a tulajdonságot. A Utah-GLX vezérlők (az XFree86 3.3.6-hoz) minden kártya esetén támogatják. Lásd a http://utah-glx.sf.net oldalt a részletes telepítési leíráshoz.

Az XFree86(DRI) 4.0.3 vagy későbbi támogatja az OpenGL-t Matrox és Radeon kártyákkal, a 4.2.0 vagy későbbi Rage128-cal. Lásd a http://dri.sf.net oldalt a letöltéshez és a telepítési utasításokért.

Egy felhasználónk tanácsa: a GL videó kimenetet függőlegesen szinkronizált TV kimenet előállításához is felhasználhatod. Csak be kell állítanod egy környezeti változót (legalábbis az nVidia-n):

export $__GL_SYNC_TO_VBLANK=1

8.2.9. AAlib - szöveges módú megjelenítés

Az AAlib egy függvény könyvtár grafika karakteres módban történő megjelenítéséhez, egy nagyszerű ASCII renderelő segítségével. Már jelenleg is rengeteg program támogatja, például a Doom, Quake, stb. Az MPlayerben is van egy roppant jól használható vezérlő hozzá. Ha a ./configure talál telepített aalib-et, az aalib libvo vezérlő alapértelmezett lesz.

Pár billentyű segítségével állíthatod a renderelési opciókat az AA Ablakban:

GombMűvelet
1 kontraszt csökkentése
2 kontraszt növelése
3 fényerő csökkentése
4 fényerő növelése
5 gyors renderelés be/kikapcsolása
6 dithering módjának beállítása (nincs, hiba eloszlás, Floyd Steinberg)
7 kép megfordítása
8 váltás az aa és az MPlayer vezérlése között

A következő parancssori kapcsolókat használhatod:

-aaosdcolor=V

OSD színének megváltoztatása

-aasubcolor=V

Felirat színének megváltoztatása

ahol a V lehet: 0 (normális), 1 (sötét), 2 (vastag), 3 (félkövér betű), 4 (ellentétes), 5 (speciális).

Maga az AAlib számtalan lehetőséget biztosít. Itt van pár fontosabb:

-aadriver
Beállítja a javasolt aa vezérlőt (X11, curses, Linux).
-aaextended
Mind a 256 karakter használata.
-aaeight
Nyolc bites ASCII.
-aahelp
Kiírja az összes aalib kapcsolót.

Megjegyzés

A renderelés nagyon CPU igényes, különösen ha AA-on-X-et (aalib használata X alatt) használsz, a legalacsonyabb a standard, nem framebuffer-es konzolon. Használd az SVGATextMode-ot a nagy felbontás beállításához, és élvezd! (másodlagos Hercules kártyák a sirályak :)) (de SZVSZ használhatod a -vf 1bpp kapcsolót is a hgafb-en megjelenő grafikához :)

A -framedrop kapcsoló használatát javasoljuk, ha nem elég gyors a géped az összes képkocka rendeléséhez!

Terminálon lejátszva jobb sebességet és minőséget kapsz a Linux vezérlővel, mint a curses-szal (-aadriver linux). De ehhez írási joggal kell rendelkezned a /dev/vcsa<terminal> fájlhoz! Ezt az aalib nem ismeri fel magától, de a vo_aa megpróbálja megtalálni a legjobb módot. Lásd a http://aa-project.sf.net/tune oldalt a további tuningolási dolgokhoz.

8.2.10. libcaca - Színes ASCII Art függvénykönyvtár

A libcaca függvénykönyvtár egy grafikus könyvtár, ami szöveget jelenít meg pixelek helyett, így működik régebbi videó kártyákkal vagy szöveges terminálokon is. Hasonló a népszerű AAlib könyvtárhoz. A libcaca-nak egy terminál kell a működéshez, így bármilyen Unix rendszeren (beleértve a Mac OS X-et) működik, vagy a slang vagy az ncurses vagy DOS alatt a conio.h illetve Windows rendszereken akár a slang vagy az ncurses (Cygwin emuláción keresztül) vagy a conio.h könyvtárak használatával. Ha a ./configure megtalálja a libcaca-t, a caca libvo vezérlő elkészül.

A különbség az AAlib-hez képest a következőek:

  • 16 elérhető szín a karakter kimenetre (256 színű párok)
  • színes kép dithering

De a libcaca-nak megvan az alábbi korlátja:

  • nincs fényerő, kontraszt és gamma támogatás

Pár billentyűvel szabályozhatod a caca ablakban a renderelés opcióit:

GombMűvelet
d Váltás a libcaca dithering metódusai között.
a A libcaca antialiasing ki-/bekapcsolása.
b A libcaca háttérbe küldése.

A libcaca figyel pár környezeti változót is:

CACA_DRIVER
Állítsd be a javasolt caca vezérlőt, pl. ncurses, slang, x11.
CACA_GEOMETRY (csak X11)
Megadja a sorok és oszlopok számát, pl. 128x50.
CACA_FONT (csak X11)
Megadja a használni kívánt betűtípust, pl. fixed, nexus.

Használd a -framedrop kapcsolót ha a számítógéped nem elég gyors az összes képkocka rendeléséhez.

8.2.11. VESA - kimenet a VESA BIOS-hoz

Ezt a vezérlőt egy általános vezérlőként terveztük meg és vezettük be bármilyen, VESA VBE 2.0 kompatibilis BIOS-szal rendelkező monitorkártya esetében. A másik előnye ennek a vezérlőnek, hogy megpróbálja használni a TV kimenetet. VESA BIOS EXTENSION (VBE) Version 3.0 Dátum: 1998. szeptember 16. (70. oldal) ezt írja:

Duál-Vezérlős Tervezés.  A VBE 3.0 támogatja a duál-vezérlős tervezést, feltételezve hogy általában mindkét vezérlőt ugyanaz az OEM biztosítja, egy BIOS ROM vezérlésével ugyan azon a grafikus kártyán, lehetséges az alkalmazás számára elrejteni azt a tényt, hogy valójában két vezérlő van jelen. Ez ugyan megakadályozza a vezérlők egyidejűleg történő egyedi használatát, azonban lehetővé teszi a VBE 3.0 előtt kiadott alkalmazások normális működését. A 00h VBE funció (Vezérlő információkkal tér vissza) a két vezérlő kombinált információit adja vissza, beleértve a használható módok kombinált listáját. Ha az alkalmazás kiválaszt egy módot, a megfelelő vezérlő aktiválódik. Az összes többi VBE funkció ezután az aktív vezérlővel dolgozik.

Így van esélyed a TV kimenet használatára ezzel a vezérlővel. (Gondolom a TV-out legtöbbször legalább egyedülálló fej vagy egyedüli kimenet.)

ELŐNYÖK

  • Van esélyed a film nézésre akkor is ha a Linux nem ismeri a videó hardveredet.
  • Nem kell telepítened semmiféle grafikus dolgot a Linuxodra (mint pl. X11 (AKA XFree86), fbdev és így tovább). Ez a vezérlő fut szöveges-módban.
  • Jó eséllyel működő TV-kimenetet kapsz. (Legalábbis az ATI kártyákon).
  • Ez a vezérlő meghívja az int 10h kezelőt így nem emulátor - igazi dolgokat hív az igazi BIOS-ban valós-módban (valójában vm86 módban).
  • Használhatod a VIDIX-et vele, így gyorsított videó megjelenítést kapsz és TV kimenetet egy időben! (Javasolt az ATI kártyákhoz.)
  • Ha VESA VBE 3.0+-od van, és megadtad a monitor-hfreq, monitor-vfreq, monitor-dotclock-ot valahol (konfigurációs fájlban vagy paranccsorban), a lehető legjobb frissítési rátát kapod. (Általános Időzítő Formulát használva). Ezen képesség engedélyezéséhez meg kell adnod a monitorod összes opcióját.

HÁTRÁNYOK

  • Csak x86 rendszereken működik.
  • Csak a root használhatja.
  • Jelenleg csak Linux alatt elérhető.

Fontos

Ne használd ezt a vezérlőt GCC 2.96-tal! Nem fog menni!

A VESA PARANCSSORI KAPCSOLÓI

-vo vesa:opts
jelenleg felismert: dga a dga mód használatához és nodga a dga mód letiltásához. A dga módban engedélyezheted a dupla bufferelést a -double kapcsolóval. Megjegyzés: ezen paraméterek elhagyásával engedélyezed a dga mód automatikus detektálását.

ISMERT PROBLÉMÁK ÉS MEGOLDÁSAIK

  • Ha telepítettél NLS betűtípust a Linux rendszeredre és VESA vezérlőt használsz szöveges-módban, akkor az MPlayerből való kilépés után a ROM betűtípusa lesz betöltve a nemzeti helyett. A nemzeti betűkészletet újra betöltheted pl. a Mandrake/Mandriva disztribúcióban található setsysfont nevű segédprogram használatával. (Tanács: Ugyan ez a segédprogram használható az fbdev honosítására is).
  • Some Linux graphics drivers don't update active BIOS mode in DOS memory. Tehát ha ilyen problémáid vannak - mindig csak szöveges módban használd a VESA vezérlőt. Különben a szöveges mód (#03) aktiválódik mindenképp és újra kell indítanod a számítógépedet.
  • Gyakran a VESA vezérlő bezárása után fekete képernyőt kapsz. Hogy visszaállítsd a képernyődet az eredeti állapotába - egyszerűen csak válts át másik konzolra (az Alt+F<x> gombok megnyomásával) majd válts vissza ugyanígy.
  • A működő TV kimenethez be kell dugnod a TV-csatlakozót mielőtt betöltene a PC-d, mivel a videó BIOS csak egyszer, a POST eljárás során inicializálja magát.

8.2.12. X11

Ha lehet, kerüld el! Az X11-es kimenetnek (megosztott memória kiterjesztést használnak), nincs semmilyen hardveres támogatásuk. Tudja ugyan (MMX/3DNow/SSE által gyorsítva, de így is lassan) a szoftveres méretezést, használhatod a -fs -zoom kapcsolókat. A legtöbb hardverben benne van a hardveres méretezés támogatása, használd a -vo xv kimenetet hozzá vagy a -vo xmga-t a Matrox kártyákhoz.

A probléma az, hogy a legtöbb kártya vezérlője nem támogatja a hardveres gyorsítást a második fejen/TV-n. Ezekben az esetekben zöld/kék színű ablakot látsz a film helyett. Az ilyen esetekben jön jól ez a vezérlő, de erős CPU-val kell rendelkezned a szoftveres méretezés használatához. Ne használd az SDL vezérlő szoftveres kimenetét+méretezőjét, annak még rosszabb a képminősége!

A szoftveres méretezés nagyon lassú, jobb, ha megpróbálsz videó módot váltani inkább. Az egyszerűbb. Lásd a DGA rész modeline-jait, és írd be őket az XF86Config fájlba.

  • Ha XFree86 4.x.x-ed van: használd a -vm kapcsolót. Ez átvált egy olyan felbontásra, amin elfér a film. Ha mégsem:
  • XFree86 3.x.x-szel: körkörösen végigmehetsz az elérhető felbontásokon a Ctrl+Alt+plusz és Ctrl+Alt+minusz gombokkal.

Ha nem találod a beszúrt módokat, nézd át az XFree86 kimenetét. Néhány vezérlő nem tud alacsony pixelclock-ot használni, ami szükséges az alacsony felbontású videó módokhoz.

8.2.13. VIDIX

BEVEZETÉS.  A VIDIX a VIDeo Interface for *niX rövidítése. A VIDIX-et egy felhasználói térben használható vezérlőként tervezték és mutatták be, mely olyan videó teljesítményt nyújt, mint az mga_vid a Matrox kártyákon. Ráadásul könnyen portolható.

Ezt az interfészt úgy tervezték meg, hogy illeszkedjen a már létező videó gyorsító interfészekhez (mga_vid, rage128_vid, radeon_vid, pm3_vid) egy állandó sémával. Magas szintű interfészt biztosít a BES (BackEnd Scalers) néven ismert chip-ekhez vagy az OV-hoz (Video Overlays). Nem nyújt a grafikus szerverekhez hasonló alacsony szintű interfészt. (Nem akarok versenyezni a z X11 csapattal a grafikus mód váltásban). Pl. ezen interfész fő célja a videó lejátszás sebességének maximalizálása.

HASZNÁLAT

  • Használhatsz egyedülálló videó kimeneti vezérlőt: -vo xvidix. Ez a vezérlő a VIDIX-es technológia X11-es front end-je. X szerver kell hozzá és csak X szerverrel működik. Jegyezd meg, hogy mivel közvetlenül éri el a hardvert az X vezérlő megkerülésével, a grafikus kártya memóriájában lévő pixmap-ok sérülhetnek. Ezt elkerülheted az X által használt videó memória korlátozásával, amit az XF86Config "VideoRam" opciójával adhatsz meg az eszköz részben. Ajánlott ezt a kártyádon lévő memória mínusz 4 MB-ra állítani. Ha kevesebb, mint 8 MB videó ram-od van, akkor ehelyett használhatod az "XaaNoPixmapCache" opciót a képernyő részben.
  • Van egy konzolos VIDIX vezérlő: -vo cvidix. Ehhez egy működő és inicializált frambuffer kell a legtöbb kártyánál (vagy különben csak összeszemeteled a képernyőd), és hasonló eredményt kapsz, mint a -vo mga vagy -vo fbdev kapcsolókkal. Az nVidia kártyák azonban képesek tényleges grafikus kimenetre igazi szöveges konzolon. Lásd az nvidia_vid részt a további információkért.
  • Használhatod a VIDIX aleszközt, ami számos videó kimeneti vezérlővel együtt használható, például: -vo vesa:vidix (csak Linux) és -vo fbdev:vidix.

Igazából nem számít, hogy melyik videó kimeneti vezérlőt használod együtt a VIDIX-szel.

KÖVETELMÉNYEK

  • A videó kártyának grafikus módban kell lennie (kivéve az nVidia kártyákat a -vo cvidix kimeneti vezérlővel).
  • Az MPlayer videó kimeneti vezérlőnek tudnia kell aktiválni a videó módot és információkat kell tudnia átadni a VIDIX aleszköznek a szerver videó karakterisztikájáról.

HASZNÁLATI MÓDOK.  Ha a VIDIX-et aleszközként használod (-vo vesa:vidix), akkor a videó mód konfigurációt a videó kimeneti vezérlő (röviden vo_server) végzi. Ezért az MPlayer parancssorában ugyan azokat a kulcsokat használhatod, mint a vo_server-rel. Ráadásul ismeri a -double kulcsot mint globálisan látható paramétert. (Javaslom ezen kulcs VIDIX-szel történő használatát legalább az ATI kártyával). Ami a -vo xvidix-et illeti, most csak a következő kapcsolókat ismeri: -fs -zoom -x -y -double.

A parancssorban harmadik alkapcsolóként megadhatod közvetlenül a VIDIX vezérlőjét:

mplayer -vo xvidix:mga_vid.so -fs -zoom -double file.avi

or

mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 file.avi

De ez veszélyes, inkább ne használd. Ebben az esetben a megadott vezérlő lesz kényszerítve, így az eredmény megjósolhatatlan (lefagyaszthatja a számítógéped). CSAK akkor csinálj ilyet, ha teljesen biztos vagy benne, hogy működik és az MPlayer nem teszi meg automatikusan. Ez esetben kérjük jelezd ezt a fejlesztőknek is. A helyes módszer a VIDIX argumentumok nélküli használata, és így az automatikus detektálás engedélyezése.

Mivel a VIDIX-nek direkt hardver elérés kell, futtathatod root-ként vagy beállíthatod a SUID bit-et az MPlayer binárisán (Figyelem: Ez biztonsági kockázatot jelent!). Alternatívaként használhatsz egy speciális kernel modult, így:

  1. Töltsd le az svgalib (pl. 1.9.17-es) fejlesztői verzióját, VAGY az Alex által speciálisan az MPlayerrel történő használatra készítettet (a lefordításához nem kell az svgalib forrás) innen.

  2. Fordítsd le a modult az svgalib_helper könyvtárban (az svgalib-1.9.17/kernel/ könyvtáron belül található, ha az svgalib oldaláról töltötted le a forrást) és insmod-old.

  3. A /dev könyvtárban a megfelelő eszközök létrehozásához add ki a

    make device

    parancsot az svgalib_helper könyvtárban rootként.

  4. Mozgasd át az svgalib_helper könyvtárat az mplayer/main/libdha/svgalib_helper-be.

  5. Szükséges, ha a forrást az svgalib oldaláról szerezted be: töröld a megjegyzést az "svgalib_helper"-t tartalmazó CFLAGS sor elől a libdha/Makefile-ban.

  6. Fordítsd újra és telepítsd a libdha-t.

8.2.13.1. ATI kártyák

Jelenleg a legtöbb ATI kártya natívan támogatott, a Mach64-től a legújabb Radeonokig.

Két lefordított bináris van: radeon_vid a Radeonhoz és rage128_vid a Rage 128 kártyákhoz. Előírhatsz egyet vagy hagyhatod a VIDIX rendszernek automatikusan kipróbálni az összes elérhető vezérlőt.

8.2.13.2. Matrox kártyák

A Matrox G200, G400, G450 és G550 működik a jelentések szerint.

A vezérlő támogatja a videó equalizereket és majdnem olyan gyors, mint a Matrox framebuffer.

8.2.13.3. Trident kártyák

Van egy vezérlő a Trident Cyberblade/i1 chipset-hez, ami a VIA Epia alaplapokon található.

A vezérlőt Alastair M. Robinson írta és tartja karban.

8.2.13.4. 3DLabs kártyák

Habár van vezérlő a 3DLabs GLINT R3 és Permedia3 chip-ekhez, senki sem tesztelte le, így örömmel fogadjuk a jelentéseket.

8.2.13.5. nVidia kártya

Egy egyedülálló tulajdonsága az nvidia_vid vezérlőnek a sima, egyszerű, csak szöveges konzolon történő videó megjelenítés - framebuffer vagy X varázslag és egyebek nélkül. Ehhez a cvidix videó kimenetet kell használni, amint az itt látható:

mplayer -vo cvidix pelda.avi

8.2.13.6. SiS kártyák

Ez nagyon kísérleti kód, csakúgy mint az nvidia_vid.

Tesztelték SiS 650/651/740-en (a leggyakrabban használt SiS chipset verziók a "Shuttle XPC" dobozokban).

Várjuk a visszajelzéseket!

8.2.14. DirectFB

"A DirectFB egy grafikus függvénykönyvtár, amit a beágyazott rendszereket szem előtt tartva terveztek meg. Maximális hardver gyorsítási teljesítményt ad minimális erőforrás felhasználással és terheléssel." - idézet a http://www.directfb.org oldalról

Ki fogom hagyni a DirectFB tulajdonságokat ebből a fejezetből.

Mivel az MPlayer nem támogatott, mint "video provider" a DirectFB-ben, ez a kimeneti vezérlő engedélyezi a videó lejátszást DirectFB-n keresztül. Természetesen gyorsított lesz, az én Matrox G400-amon a DirectFB sebessége majdnem megegyezik az XVideo-éval.

Mindig próbáld meg a DirectFB legújabb verzióját használni. Megadhatsz DirectFB opciókat a parancssorban a -dfbopts kapcsoló használatával. A réteg választás egy aleszköz módszerével történhet, pl.: -vo directfb:2 (-1-es réteg az alapértelmezett: automatikus keresés)

8.2.15. DirectFB/Matrox (dfbmga)

Kérjük olvasd el a fő DirectFB részt az általános információkért.

Ez a videó kimeneti vezérlő engedélyezi a CRTC2-t (a második fejen) a Matrox G400/G450/G550 kártyákon, a videót az első fejtől függetlenül jelenítve meg.

Ville Syrjala-nak van egy README-je és egy HOWTO-ja a weboldalán, ami leírja, hogy hogyan hozhatod működésbe a DirectFB TV kimenetet a Matrox kártyákon.

Megjegyzés

Az első DirectFB verzió, amit működésre tudtunk bírni a 0.9.17 volt (hibás, kell hozzá az a surfacemanager javítás a fenti URL-ről). A CRTC2 kód portolását az mga_vid-be évekig terveztük, a javításokat szívesen fogadjuk.