summaryrefslogtreecommitdiffstats
path: root/DOCS/Hungarian/DGA
blob: 8fa19ef8afeb832dac1acf214a4cc190f780d836 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180

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: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ívül hagyja a -vm és -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 és -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-od által elérhető felbontásokat.
 DGA2-vel megadhatod a használandó színmélységet is a -bpp opcióval.
 A megadott szám lehet: 15, 16, 24 és 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ódot. A százalékos CPU használati értekeket, amiket az
 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 terminált
 a soros portodra és 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óriasávszélességének csak a felét igénylik.

 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 (divx) AVI file-okat 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 és nv.o driverrel van egy bug, ami furcsa színeket 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 színeket jelenít meg
 o mások hazudnak arról, hogy mennyi memóriá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.

B. Bugreport
~~~~~~~~~~~~

 Ha bármi problémád van a DGA driverrel, bátran jelezd nekem (e-mail címem lásd
 alább). Ehhez  -v opcióval futtasd mplayert, és a vo_dga: kezdetű sorokat
 küldd el nekem.
 
 Kérlek mellékeld az általad használt grafikus kártya és processzor típusát,
 valamint az X11 verzióját. Az X11 driver module (XF86-Config file-ban) is
 segíthet. Köszönöm!


 Acki (acki@acki-netz.de, www.acki-netz.de)                  18.06.2001