~ubuntu-branches/debian/squeeze/mplayer/squeeze

« back to all changes in this revision

Viewing changes to DOCS/HTML/de/dga.html

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2010-07-31 23:44:52 UTC
  • mfrom: (1.1.4 upstream) (8.1.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20100731234452-j7yyrgsh1wustazr
Tags: 2:1.0~rc3++final.dfsg1-1
* upload to unstable
* enable mencoder and mplayer-gui package
* build again against the system FFmpeg 0.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>7.3. DGA</title><link rel="stylesheet" href="default.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="MPlayer - Movie Player"><link rel="up" href="video.html" title="Kapitel 7. Videoausgabegeräte"><link rel="prev" href="xv.html" title="7.2. Xv"><link rel="next" href="sdl.html" title="7.4. SDL"><link rel="preface" href="howtoread.html" title="Wie diese Dokumentation gelesen werden soll"><link rel="chapter" href="intro.html" title="Kapitel 1. Einführung"><link rel="chapter" href="install.html" title="Kapitel 2. Installation"><link rel="chapter" href="usage.html" title="Kapitel 3. Gebrauch"><link rel="chapter" href="cd-dvd.html" title="Kapitel 4. CD/DVD Nutzung"><link rel="chapter" href="tv.html" title="Kapitel 5. TV"><link rel="chapter" href="radio.html" title="Kapitel 6. Radio"><link rel="chapter" href="video.html" title="Kapitel 7. Videoausgabegeräte"><link rel="chapter" href="ports.html" title="Kapitel 8. Portierungen"><link rel="chapter" href="mencoder.html" title="Kapitel 9. Allgemeiner Gebrauch von MEncoder"><link rel="chapter" href="encoding-guide.html" title="Kapitel 10. Encodieren mit MEncoder"><link rel="chapter" href="faq.html" title="Kapitel 11. Häufig gestellte Fragen"><link rel="appendix" href="bugreports.html" title="Anhang A. Wie Fehler (Bugs) berichtet werden"><link rel="appendix" href="skin.html" title="Anhang B. MPlayers Skinformat"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">7.3. DGA</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="xv.html">Zurück</a> </td><th width="60%" align="center">Kapitel 7. Videoausgabegeräte</th><td width="20%" align="right"> <a accesskey="n" href="sdl.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="7.3. DGA"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="dga"></a>7.3. DGA</h2></div></div></div><p title="PRÄAMBEL"><b>PRÄAMBEL. </b>
 
2
  Dieser Abschnitt versucht, in wenigen Worten zu beschreiben, was DGA
 
3
  generell ist und was der DGA-Videotreiber in <span class="application">MPlayer</span>
 
4
  erreichen kann, und was nicht.
 
5
</p><p title="WAS IST DGA?"><b>WAS IST DGA? </b>
 
6
  <acronym class="acronym">DGA</acronym> ist die Abkürzung für
 
7
  <span class="emphasis"><em>Direct Graphics Access</em></span> (direkter Zugriff auf die
 
8
  Grafikhardware) und gibt Programmen die Möglichkeit, unter Umgehung
 
9
  des X-Servers direkt den Framebuffer der Grafikkarte zu verändern.
 
10
  Technisch gesehen wird das dadurch realisiert, dass der
 
11
  Framebuffer-Speicher in den virtuellen Adressraum des jeweiligen Prozesses
 
12
  abgebildet wird. Das wird vom Kernel aber nur dann zugelassen, wenn der
 
13
  Prozess Superuserprivilegien besitzt. Dazu musst du dich entweder als
 
14
  <code class="systemitem">root</code> anmelden oder das SUID-bit
 
15
  des <span class="application">MPlayer</span>-Binaries setzen (was
 
16
  <span class="bold"><strong>nicht empfohlen wird</strong></span>).
 
17
</p><p>
 
18
  Von DGA gibt es zwei Versionen: DGA1 kommt mit XFree 3.x.x, und DGA2
 
19
  wurde mit XFree 4.0.1 eingeführt.
 
20
</p><p>
 
21
  DGA1 bietet nur den oben beschriebenen Zugriff auf den Framebuffer. Die
 
22
  Umschaltung des Videomodus klappt nur mit der XVidMode-Erweiterung.
 
23
</p><p>
 
24
  DGA2 beinhaltet die Features der XVidMode-Erweiterung und erlaubt
 
25
  außerdem, die Farbtiefe zu ändern. Damit kannst du also auf 32bit
 
26
  Farbtiefe umschalten, auch wenn der X-Server gerade mit 15bit Farbtiefe
 
27
  läuft und umgekehrt.
 
28
</p><p>
 
29
  DGA hat aber auch ein paar Nachteile. Die Funktionsweise scheint ein wenig
 
30
  von der Grafikkarte und der Implementierung des Grafikkartentreibers
 
31
  im X-Server abhängig zu sein, der diesen Chip kontrolliert.
 
32
  Es fuktioniert also nicht auf jedem System...
 
33
</p><p title="DGA-UNTERSTÜTZUNG FÜR MPLAYER INSTALLIEREN"><b>DGA-UNTERSTÜTZUNG FÜR MPLAYER INSTALLIEREN. </b>
 
34
  Stelle als erstes sicher, dass X die DGA-Erweiterung lädt. Schau
 
35
  in <tt class="filename">/var/log/XFree86.0.log</tt> nach:
 
36
 
 
37
</p><pre class="programlisting">(II) Loading extension XFree86-DGA</pre><p title="DGA-UNTERSTÜTZUNG FÜR MPLAYER INSTALLIEREN">
 
38
 
 
39
  Wie du siehst, ist XFree86 4.0.x oder neuer
 
40
  <span class="bold"><strong>sehr zu empfehlen</strong></span>!
 
41
  <span class="application">MPlayer</span>s DGA-Treiber wird von
 
42
  <tt class="filename">./configure</tt> automatisch erkannt. Alternativ
 
43
  kannst du seine Compilierung mit <tt class="option">--enable-dga</tt> erzwingen.
 
44
</p><p>
 
45
  Falls der Treiber nicht zu einer kleineren Auflösung wechseln
 
46
  konnte, dann experimentiere mit den Optionen <tt class="option">-vm</tt> (nur bei
 
47
  X 3.3.x), <tt class="option">-fs</tt>, <tt class="option">-bpp</tt>,
 
48
  <tt class="option">-zoom</tt> herum, um einen Videomodus zu finden,
 
49
  in den der Film reinpasst. Momentan gibt es keinen Konverter :(
 
50
</p><p>
 
51
  Werde <code class="systemitem">root</code>.
 
52
  DGA braucht <code class="systemitem">root</code>-Privilegien,
 
53
  um direkt in den Grafikspeicher zu schreiben. Wenn du MPlayer als
 
54
  normaler Nutzer starten möchtest, dann installiere
 
55
  <span class="application">MPlayer</span> mit dem SUID-Bit:
 
56
 
 
57
</p><pre class="screen">
 
58
chown root <em class="replaceable"><code>/usr/local/bin/mplayer</code></em>
 
59
chmod 750 <em class="replaceable"><code>/usr/local/bin/mplayer</code></em>
 
60
chmod +s <em class="replaceable"><code>/usr/local/bin/mplayer</code></em>
 
61
</pre><p>
 
62
 
 
63
  Jetzt funktioniert es auch als normaler Benutzer.
 
64
</p><div class="caution" title="Warnung: Sicherheitsrisiko!" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warnung: Sicherheitsrisiko!</h3><p>
 
65
  Dieses ist ein <span class="bold"><strong>großes</strong></span> Sicherheitsloch.
 
66
  Tu das <span class="bold"><strong>niemals</strong></span> auf einem Server oder
 
67
  auf einem Computer, auf den auch andere Leute Zugriff haben, da sie durch einen
 
68
  SUID-<code class="systemitem">root</code>-<span class="application">MPlayer</span>
 
69
  <code class="systemitem">root</code>-Privilegien erlangen können.
 
70
</p></div><p>
 
71
  Benutze jetzt die Option <tt class="option">-vo dga</tt>, und ab geht's (hoffe ich
 
72
  zumindest :))! Du solltest auch ausprobieren, ob bei dir die Option
 
73
  <tt class="option">-vo sdl:dga</tt> funktioniert. Sie ist viel schneller.
 
74
</p><p title="ÄNDERN DER AUFLÖSUNG"><a name="dga-modelines"></a><b>ÄNDERN DER AUFLÖSUNG. </b>
 
75
  Der DGA-Treiber ermöglicht es, die Auflösung des Output-Signals zu ändern.
 
76
  Damit entfällt die Notwendigkeit der (langsamen) Softwareskalierung und
 
77
  bietet gleichzeitig ein Vollbild. Idealerweise würde DGA in die gleiche
 
78
  Auflösung schalten, die das Video (natürlich unter Beachtung des
 
79
  Höhen-/Breitenverhältnisses) hat, aber der X-Server lässt nur
 
80
  Auflösungen zu, die vorher in der <tt class="filename">/etc/X11/XF86Config</tt> bzw.
 
81
  <tt class="filename">/etc/X11/XF86Config-4</tt> definiert wurden, bezüglich XFree 4.X.X.
 
82
  Diese werden durch sogenannte Modelines festgelegt und hängen von den Fähigkeiten
 
83
  deiner Grafikhardware ab. Der X-Server liest diese Konfigurationsdatei beim
 
84
  Start ein und deaktiviert alle Modelines, die sich nicht mit deiner Hardware
 
85
  vertragen. Du kannst die überlebenden Modelines anhand der X11-Logdatei
 
86
  herausfinden (normalerweise <tt class="filename">/var/log/XFree86.0.log</tt>).
 
87
</p><p>
 
88
  Diese Einträge funktionieren mit einem Riva128-Chip und dem
 
89
  nv.o-X-Server-Treibermodul.
 
90
</p><pre class="programlisting">
 
91
Section "Modes"
 
92
  Identifier "Modes[0]"
 
93
  Modeline "800x600"  40     800 840 968 1056  600 601 605 628
 
94
  Modeline "712x600"  35.0   712 740 850 900   400 410 412 425
 
95
  Modeline "640x480"  25.175 640 664 760 800   480 491 493 525
 
96
  Modeline "400x300"  20     400 416 480 528   300 301 303 314 Doublescan
 
97
  Modeline "352x288"  25.10  352 368 416 432   288 296 290 310
 
98
  Modeline "352x240"  15.750 352 368 416 432   240 244 246 262 Doublescan
 
99
  Modeline "320x240"  12.588 320 336 384 400   240 245 246 262 Doublescan
 
100
EndSection
 
101
</pre><p title="DGA &amp; MPLAYER"><b>DGA &amp; MPLAYER. </b>
 
102
  DGA wird bei <span class="application">MPlayer</span> an zwei Stellen benutzt:
 
103
  beim SDL-Treiber mit (<tt class="option">-vo sdl:driver=dga</tt>) oder beim
 
104
  DGA-Treiber selbst (<tt class="option">-vo dga</tt>).
 
105
  Das oben gesagte gilt für beide Treiber. In den folgenden Abschnitten
 
106
  erkläre ich, wie der DGA-Treiber von <span class="application">MPlayer</span>
 
107
  selber arbeitet.
 
108
</p><p title="FEATURES DES DGA-TREIBERS"><b>FEATURES DES DGA-TREIBERS. </b>
 
109
  Der DGA-Treiber wird durch die Option <tt class="option">-vo dga</tt> aktiviert.
 
110
  Sein Standardverhalten sieht vor, dass er in die Auflösung schaltet, die
 
111
  der Videoauflösung am nächsten kommt. Der Treiber ignoriert absichtlich
 
112
  die Optionen <tt class="option">-vm</tt> (Videomodusumschaltung aktivieren) und
 
113
  <tt class="option">-fs</tt> (Vollbildmodus erzwingen) - er versucht immer, so viel
 
114
  Bildfläche wie möglich durch eine Änderung der Auflösung zu bedecken.
 
115
  Dadurch wird nicht ein einziger weiterer CPU-Takt für die Skalierung des
 
116
  Bildes verwendet. Wenn du mit dem Modus nicht zufrieden bist, den der Treiber
 
117
  gewählt hat, dann kannst du ihn zwingen, denjenigen Modus zu
 
118
  wählen, der am besten zu dem mit den Optionen <tt class="option">-x</tt> und
 
119
  <tt class="option">-y</tt> angegebenen Werten passt. Die Option <tt class="option">-v</tt>
 
120
  veranlasst den DGA-Treiber, neben einigen anderen Dingen auch alle von deiner
 
121
  <tt class="filename">XF86Config</tt>-Datei unterstützen Videomodi aufzulisten.
 
122
  Wenn DGA2 verwendet wird, dann kannst du mit der Option <tt class="option">-bpp</tt> die
 
123
  Verwendung einer bestimmten Farbtiefe erzwingen. Gültige Werte sind 15,
 
124
  16, 24 und 32. Es hängt dann von deiner Hardware ab, ob der Modus nativ
 
125
  unterstützt wird oder ob eine (möglicherweise langsame)
 
126
  Konvertierung stattfindet.
 
127
</p><p>
 
128
  Wenn du Glück hast und dir genug unbenutzter Grafikspeicher zur
 
129
  Verfügung steht, um ein komplettes Bild aufzunehmen, dann wird der
 
130
  DGA-Treiber Doppelpufferung verwenden, was zu einer regelmäßigeren
 
131
  Wiedergabe führt. Der DGA-Treiber wird dir mitteilen, ob Doppelpufferung
 
132
  angeschaltet ist oder nicht.
 
133
</p><p>
 
134
  Doppelpufferung bedeutet, dass das nächste Bild deines Videos bereits
 
135
  an einer anderen Stelle im Grafikspeicher aufgebaut wird, während das
 
136
  aktuelle Bild angezeigt wird. Ist das nächste Bild fertig, so wird
 
137
  dem Grafikchip nur noch mitgeteilt, wo er das neue Bild im Speicher finden
 
138
  kann. Somit holt sich der Chip seine Daten einfach von dort. In der
 
139
  Zwischenzeit wird der andere, jetzt unbenutze Puffer wieder mit neuen
 
140
  Videodaten gefüllt.
 
141
</p><p>
 
142
  Doppelpufferung kann mit der Option <tt class="option">-double</tt> aktiviert und mit
 
143
  <tt class="option">-nodouble</tt> deaktiviert werden. Momentan ist die Doppelpufferung
 
144
  per Voreinstellung deaktiviert. Wird der DGA-Treiber verwendet,
 
145
  dann funktioniert das Onscreen-Display (ODS) nur dann, wenn auch die
 
146
  Doppelpufferung aktiviert ist. Andererseits kann die Doppelpufferung auch
 
147
  einen großen Geschwindigkeitseinbruch hervorrufen, was stark von
 
148
  der DGA-Implementierung der Treiber für deine Hardware abhängt (auf
 
149
  meinem K6-II+ 525 benötigt Doppelpufferung weitere 20% CPU-Zeit!).
 
150
</p><p title="PUNKTE BEZÜGLICH DER GESCHWINDIGKEIT"><b>PUNKTE BEZÜGLICH DER GESCHWINDIGKEIT. </b>
 
151
  Generell gesehen sollte der Zugriff auf den DGA-Framebuffer genauso
 
152
  schnell sein wie der X11-Treiber, wobei man zusätzlich noch ein Vollbild
 
153
  erhält. Die prozentualen Geschwindigkeitswerte, die <span class="application">MPlayer</span>
 
154
  ausgibt, müssen mit Vorsicht genossen werden, da sie z.B. beim X11-Treiber
 
155
  nicht die Zeit beinhalten, die der X-Server tatsächlich zum
 
156
  Anzeigen des Bildes benötigt. Klemm ein Terminal an deinen seriellen
 
157
  Port und starte <span class="command"><strong>top</strong></span>, wenn du wissen willst, wie's wirklich mit
 
158
  der Geschwindigkeit aussieht.
 
159
</p><p>
 
160
  Allgemein betrachtet hängt die Geschwindigkeitsverbesserung von DGA
 
161
  gegenüber dem 'normalen' X11-Treiber sehr von deiner Grafikkarte und
 
162
  davon ab, wie gut das X-Servermodul optimiert ist.
 
163
</p><p>
 
164
  Wenn du ein langsames System hast, dann benutz besser eine Farbtiefe von
 
165
  15 oder 16bit, da sie nur die halbe Bandbreite des 32bit-Farbmodus
 
166
  benötigen.
 
167
</p><p>
 
168
  Einge gute Idee ist auch die Verwendung von 24bit Farbtiefe, selbst dann,
 
169
  wenn deine Grafikkarte nativ nur 32bit unterstützt, da bei 24bit 25%
 
170
  weniger Daten im Vergleich zum 32/32-Modus über den Bus transferiert
 
171
  werden müssen.
 
172
</p><p>
 
173
  Ich habe schon gesehen, wie einige AVI-Dateien auf einem Pentium MMX 266
 
174
  wiedergegeben werden konnten. AMD K6-2-CPUs werden ab ca. 400 MHz oder
 
175
  höher funktionieren.
 
176
</p><p title="BEKANNTE FEHLER"><b>BEKANNTE FEHLER. </b>
 
177
  Die Entwickler von XFree sagen selbst, dass DGA ein ganz schönes
 
178
  Monstrum ist. Sie raten eher davon ab, es zu benutzen, da seine
 
179
  Implementierung in einige Chipset-Treiber für XFree nicht immer
 
180
  ganz fehlerfrei war.
 
181
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
 
182
  Bei der Kombination aus XFree 4.0.3 und dem
 
183
  <tt class="filename">nv.o</tt>-Treiber gibt es einen Fehler, der zu
 
184
  merkwürdigen Farben führt.
 
185
</p></li><li class="listitem"><p>
 
186
  Die ATI-Treiber müssen den Videomodus mehrmals zurückstellen,
 
187
  nachdem der DGA-Modus verlassen wurde.
 
188
  </p></li><li class="listitem"><p>
 
189
  Einige Treiber schaffen es manchmal einfach nicht, in die vorherige
 
190
  Auflösung zurückzuschalten. Benutze in solch einem Fall
 
191
  <span class="keycap"><b>Strg</b></span>+<span class="keycap"><b>Alt</b></span>+<span class="keycap"><b>Keypad +</b></span> und
 
192
  <span class="keycap"><b>Strg</b></span>+<span class="keycap"><b>Alt</b></span>+<span class="keycap"><b>Keypad -</b></span>,
 
193
  um manuell die Auflösung zu ändern.
 
194
</p></li><li class="listitem"><p>
 
195
  Einige Treiber zeigen einfach nur merkwürdige Farben an.
 
196
</p></li><li class="listitem"><p>
 
197
  Manche Treiber lügen, was die von ihnen in den Prozessorspeicher
 
198
  eingeblendete Menge Grafikspeicher anbelangt, weswegen vo_dga
 
199
  nicht die Doppelpufferung verwendet (SIS?).
 
200
</p></li><li class="listitem"><p>
 
201
  Einige Treiber schaffen es nicht einmal, auch nur einen einzigen
 
202
  gültigen Grafikmodus bereitzustellen. In solchen Fällen
 
203
  gibt der DGA-Treiber schwachsinnige Modi wie z.B. 100000x100000 oder
 
204
  so ähnlich aus.
 
205
</p></li><li class="listitem"><p>
 
206
  Das OSD funktioniert nur, wenn auch die Doppelpufferung aktiviert
 
207
  ist (sonst flimmert es).
 
208
</p></li></ul></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="xv.html">Zurück</a> </td><td width="20%" align="center"><a accesskey="u" href="video.html">Nach oben</a></td><td width="40%" align="right"> <a accesskey="n" href="sdl.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">7.2. Xv </td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top"> 7.4. SDL</td></tr></table></div></body></html>