mirror of https://github.com/mpv-player/mpv
168 lines
6.5 KiB
Plaintext
168 lines
6.5 KiB
Plaintext
|
|
Tartalom
|
|
~~~~~~~~
|
|
|
|
1. Előszó
|
|
2. Mi az a DGA
|
|
3. Felbontásváltás
|
|
4. DGA és MPlayer
|
|
5. A DGA driver képességei
|
|
6. Sebesség
|
|
7. Ismert hibák
|
|
8. Beepítendő dolgok
|
|
|
|
A. Néhány modeline
|
|
|
|
|
|
|
|
1. Előszó
|
|
~~~~~~~~~
|
|
Ez a dokumentum néhány szóban elmagyarázza, hogy általában véve mi is az a
|
|
DGA, és mit tud az MPlayerben (és mit nem).
|
|
|
|
2. Mi a DGA?
|
|
~~~~~~~~~~~~
|
|
|
|
A DGA szó a Direct Graphics Access rövidítése, és egy olyan módszert takar,
|
|
amivel a program az X szerver kikerülésével közvetlenül írhat a framebuffer
|
|
memóriába. Szaknyelven szólva ez a framebuffer memóriának a processz
|
|
területére történő lapozásával történik. Ezt a kernel csak root jogosultsággal
|
|
engedi. Ez történhet root-ként történő bejelentkezéssel, vagy a suid bit
|
|
beállításával az mplayer programon (NEM ajánlott!).
|
|
|
|
A DGA-nak két verziója van: a DGA1-et az XFree 3.X.X használja, a DGA2
|
|
pedig az XFree 4.0.1 óta létezik.
|
|
|
|
A DGA1 csak a fent leírt közvetlen hozzáférést nyújtja. A felbontásváltáshoz
|
|
itt szükség van az XVidMode kiterjesztésre.
|
|
|
|
A DGA2 tartalmazza az XVidMode tudását, továbbá engedélyezi a színmélység
|
|
megváltoztatását. Így lehetséges, hogy egy 32 bites mélységű X szervert
|
|
átváltsunk 15 bitesbe, vagy fordítva.
|
|
|
|
A DGA-nak van néhány hátránya. Valamelyest függ a grafikus chiptől és ennek
|
|
X-es driverétől, ezért nem minden rendszeren működik ...
|
|
|
|
|
|
3. Felbontásváltás
|
|
~~~~~~~~~~~~~~~~~~
|
|
A DGA driver képes felbontásváltásra. Ezzel kikerülhető a (lassú) szoftveres
|
|
scale, ugyanakkor teljesképernyős lesz a lejátszás. Ideális esetben pontosan
|
|
egyező felbontást választ, de csak azon videomódok közül tud választani,
|
|
ami az /etc/X11/XF86Config fileban szerepel. Ezeket úgynevezett modeline-okkal
|
|
definiáljuk, és a videokártya képességeitől függenek. Az X szerver ezt
|
|
a config file-t nézi át induláskor, és kikapcsolja mindazokat, amiket a
|
|
kártya nem tud. A fennmaradó módok az X11 log-jában találhatóak:
|
|
/var/log/XFree86.0.log
|
|
Az A függelékben néhány modeline példa található.
|
|
|
|
4. DGA és MPlayer
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
Az MPlayer-ben két helyen lehet DGA-t használni: az SDL driverben
|
|
(-vo sdl -sdl dga), valamint a DGA driverben (-vo dga). A fentiek mindkettőre
|
|
igazak; a következő néhány részben elmagyarazom, hogy is működik az MPlayer
|
|
DGA drivere.
|
|
|
|
|
|
5. A DGA driver képességei
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
A DGA driver meghívása a -vo dga parancssori opció megadásával történik.
|
|
Az alapértelmezett magatartás szerint a video méretéhez legközelebb eső
|
|
felbontásba vált. Figyelmen kívul hagyja a -vm es -fs kapcsolókat
|
|
(felbontásváltás és teljesképernyő) - mindig az adott felbontás lehető legjobb
|
|
kihasználására törekszik, így egy árva CPU ciklusnak sem kell fordítódnia a
|
|
kép nagyítására.
|
|
Ha nem tetszik a mód amit kiválasztott, megadhatod hogy az -x es -y által
|
|
kijelölt mérethez válasszon felbontást.
|
|
A -v opció megadásaval a DGA driver többek között kiírja az XF86Config
|
|
file-d által elérhető felbontásokat.
|
|
DGA2-vel megadhatod a használandó színmélységet is, a -bpp opcióval.
|
|
Használható: 15, 16, 24 es 32. A hardware-edtől függ, hogy ezek közül melyeket
|
|
használhatod, valamint hogy (lassú) konverzió lehetséges-e.
|
|
|
|
Ha szerencséd van és van még elég memóriád hogy a kép mégegyszer elférjen,
|
|
akkor a DGA driver doublebuffering-et fog alkalmazni, ami sokkal folyamatosabb
|
|
lejátszást eredményez.
|
|
|
|
A doublebuffering azt jelenti, hogy a video következő képkockájának kirajzolása
|
|
a videomemórián kívül történik, amíg az előző képkocka kirajzolódik. Amint elkészül,
|
|
a grafikus kártya megkapja ennek a memóriaterületnek a címét, és azt jeleníti meg ami
|
|
ott van. Mindeközben a másik memóriaterület újra feltöltődik.
|
|
|
|
A doublebuffering a -double opcióval kapcsolható be, és a -nodouble opcióval ki.
|
|
Jelenleg alapállapotban ki van kapcsolva. Ha a DGA drivert használod, csak
|
|
doublebuffering esetén lesz OSD-d. Viszont, ha bekapcsolod az nagy teljesítménycsökkenéssel
|
|
járhat (a K6-II+ 525 gépemen plusz 20% CPU idő!), függően a videokártyád DGA driverértől.
|
|
|
|
|
|
|
|
6. Sebesség
|
|
~~~~~~~~~~~
|
|
A DGA framebuffer használatával legalább olyan gyors képet kapunk mint X11-el,
|
|
plusz teljeskepérnyős mód. A százalékos CPU használati értekeket amiket
|
|
MPlayer kiír óvatosan kezeljuk, mert pl az X11 drivernél nem tartalmazzák
|
|
az X szerver által a megjelenítéshez használt időt. Kapcsolj egy terminalt
|
|
a soros portodra es indíts egy top-ot hogy lásd valójában mi történik.
|
|
|
|
Általánosan szólva a DGA sebességnövekedése az X11-hez képest erősen függ
|
|
a videokártyádtól, és annak driverétől.
|
|
|
|
Ha lassú a rendszered, jobb ha 15 vagy 16bpp-s színmélységet használsz,
|
|
mivel ezek a 32bites mód memóriaigényének csak a felét követelik.
|
|
|
|
A 24bites mélység használata akkor jó, ha a kártyád csak 32bites módot
|
|
támogat, mivel így 25%-al kevesebb adatnak kell átjutnia, a 32/32bites
|
|
módhoz képest.
|
|
|
|
Már láttam AVI fileokat lejátszódni Pentium MMX 266-on. AMD K6/2 CPU-k
|
|
400Mhz-en vagy afölött már jók.
|
|
|
|
7. Ismert hibák
|
|
~~~~~~~~~~~~~~~
|
|
|
|
Nos, néhány XFree fejlesztő szerint a DGA nagy szörnyűség. Szerintük nem
|
|
érdemes használni. Az implementációja nem minden driverben tökeletes.
|
|
|
|
o XFree 4.0.3-mal es nv.o driverrel van egy bug ami furcsa szineket eredményez
|
|
o az ATI driverrel egynél többször kell módot váltani miután a DGA használat
|
|
befejeződott
|
|
o némely driverek egyszerűen nem tudnak visszaváltani a normális felbontásba
|
|
(használd a Ctrl-Alt-Keypad +, - billentyűket)
|
|
o néhány driver furcsa szineket jelenít meg
|
|
o mások hazudnak arról hogy mennyi memoriát map-elnek be, így vo_dga
|
|
nem fog doublebuffering-et használni (SIS?)
|
|
o megint mások nem adnak vissza egyetlen videomódot se. Ebben az esetben
|
|
a DGA driver leáll, valami nonszensz üzenettel mint pl 100000x100000 vagy
|
|
ilyesmi ...
|
|
o az OSD csak doublebuffering-el működik
|
|
|
|
8. Beépítendő dolgok
|
|
~~~~~~~~~~~~~~~~~~~~
|
|
|
|
o az új X11 render interface használata OSD-hez
|
|
o hol van a TODO listám ???? :-((((
|
|
|
|
|
|
A. Néhány modeline
|
|
~~~~~~~~~~~~~~~~~~
|
|
Section "Modes"
|
|
Identifier "Modes[0]"
|
|
# 800x600 @ 60 Hz, 37.8 kHz hsync
|
|
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
|
|
|
|
|
|
Ezek a bejegyzések működnek az én Riva128-asomon, az nv.o driverrel.
|
|
|
|
Acki (acki@acki-netz.de, www.acki-netz.de) 17.5.2001
|
|
|
|
|