comparison DOCS/video.html @ 1682:dba45a1aafad

*** empty log message ***
author gabucino
date Fri, 24 Aug 2001 18:48:13 +0000
parents a5cb1b1d47a8
children f314e83b78e6
comparison
equal deleted inserted replaced
1681:445ea1ce4180 1682:dba45a1aafad
1 <HTML> 1 <HTML>
2
3 <BODY> 2 <BODY>
4 3
4 <P><B><A NAME=2.2.1>2.2.1. Video output devices</A></B></P>
5
6 <TABLE BORDER=0>
7
8 <TD COLSPAN=4><P><B>General:</B></P></TD><TR>
9
10 <TD>&nbsp;&nbsp;</TD><TD VALIGN=top>x11</TD><TD>&nbsp;&nbsp;</TD><TD>X11 with optional SHM extension</TD><TR>
11 <TD></TD><TD VALIGN=top>xv</TD><TD></TD><TD>X11 using overlays with the Xvideo extension (hardware YUV & scaling)</TD><TR>
12 <TD></TD><TD VALIGN=top>gl</TD><TD></TD><TD>OpenGL renderer, so far works only with:
13 <UL><LI>all cards with Utah-GLX
14 <LI>Matrox cards with X/DRI >=4.0.3
15 <LI>Radeon with X/DRI CVS</UL></TD><TR>
16 <TD></TD><TD VALIGN=top>dga</TD><TD></TD><TD>X11 DGA extension</TD><TR>
17 <TD></TD><TD VALIGN=top>fbdev</TD><TD></TD><TD>Output to general framebuffers</TD><TR>
18 <TD></TD><TD VALIGN=top>svga</TD><TD></TD><TD>Output to SVGAlib</TD><TR>
19 <TD></TD><TD VALIGN=top>sdl</TD><TD></TD><TD>
20 &nbsp;&nbsp;<CODE>1.1.7:</CODE> supports software scaling<BR>
21 &nbsp;&nbsp;<CODE>1.1.8:</CODE> supports Xvideo (hardware scaling/fullscreen)<BR>
22 &nbsp;&nbsp;<CODE>1.2.0:</CODE> supports AAlib (-vo aa is very recommended, see below!)</TD><TR>
23 <TD></TD><TD VALIGN=top>ggi</TD><TD></TD><TD>similar to SDL</TD><TR>
24 <TD></TD><TD VALIGN=top>aa</TD><TD></TD><TD>textmode rendering with AAlib</TD><TR>
25
26 <TD COLSPAN=4><P><B>Card specific:</B></P></TD><TR>
27
28 <TD>&nbsp;&nbsp;</TD><TD VALIGN=top>mga</TD><TD>&nbsp;&nbsp;</TD><TD>Matrox G200/G400 hardware YUV overlay via the mga_vid device</TD><TR>
29 <TD></TD><TD VALIGN=top>xmga</TD><TD></TD><TD>Matrox G200/G400 overlay (mga_vid) in X11 window<BR>
30 (<I>Xv emulation on X 3.3.x!</I>)</TD><TR>
31 <TD></TD><TD VALIGN=top>syncfb</TD><TD></TD><TD>Matrox G400 YUV support on framebuffer (obsoleted, use mga/xmga)</TD><TR>
32 <TD></TD><TD VALIGN=top>3dfx</TD><TD></TD><TD>Voodoo2/3 hardware YUV (/dev/3dfx) support (not yet tested, maybe
33 broken)</TD><TR>
34
35 <TD COLSPAN=4><P><B>Special:</B></P></TD><TR>
36
37 <TD>&nbsp;&nbsp;</TD><TD VALIGN=top>png</TD><TD>&nbsp;&nbsp;</TD><TD>PNG files output (use -z switch to set compression)</TD><TR>
38 <TD></TD><TD VALIGN=top>pgm</TD><TD></TD><TD>PGM files output (for testing purposes or ffmpeg encoding)</TD><TR>
39 <TD></TD><TD VALIGN=top>md5</TD><TD></TD><TD>MD5sum output (for MPEG conformance tests)</TD><TR>
40 <TD></TD><TD VALIGN=top>odivx</TD><TD></TD><TD>OpenDivX AVI File writer (use -br to set encoding bitrate)</TD><TR>
41 <TD></TD><TD VALIGN=top>null</TD><TD></TD><TD>Null output (for speed tests/benchmarking)</TD><TR>
42 </TABLE>
43
44 <P>NOTE: <I>check the following subsections for details and requirements!</I></P>
45
46
47 <P><B><A NAME=2.2.1.1>2.2.1.1. MTRR</A></B></P>
48
49 <P>It is VERY recommended to set MTRR registers up properly, because they can
50 give a big performance boost. First you have to find the base address.
51 You have 3 ways to find it:</P>
52
53 <P><UL>
54 <LI>from X11 startup messages, for example:
55 <P><CODE>(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000<BR>
56 (--) SVGA: Linear framebuffer at 0xD8000000</CODE></P>
57 <LI>from /proc/pci (use lspci -v command):
58 <P><TABLE>
59 <TD VALIGN=top><CODE>01:00.0</CODE></TD><TD><CODE>VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525</CODE></TD><TR>
60 <TD></TD><TD><CODE>Memory at d8000000 (32-bit, prefetchable)</CODE></TD><TR>
61 </TABLE></P></CODE>
62 <LI>from mga_vid kernel driver messages (use dmesg):
63 <P><CODE>mga_mem_base = d8000000</CODE></P>
64 </UL></P>
65
66 <P>Then let's find the memory size. This is very easy, just convert video ram
67 size to hexadecimal, or use this table:</P>
68
69 <TABLE BORDER=0>
70 <TD>&nbsp;&nbsp;</TD><TD>1 MB</TD><TD WIDTH=10%></TD><TD>0x100000</TD><TR>
71 <TD></TD><TD>2 MB</TD><TD></TD><TD>0x200000</TD><TR>
72 <TD></TD><TD>4 MB</TD><TD></TD><TD>0x400000</TD><TR>
73 <TD></TD><TD>8 MB</TD><TD></TD><TD>0x800000</TD><TR>
74 <TD></TD><TD>16 MB</TD><TD></TD><TD>0x1000000</TD><TR>
75 <TD></TD><TD>32 MB</TD><TD></TD><TD>0x2000000</TD><TR>
76 </TABLE>
77
78
79 <P>You know base address and memory size, let's setup mtrr registers!
80 For example, for the Matrox card above (base=0xd8000000) with 32MB
81 ram (size=0x2000000) just execute:</P>
82
83
84 <P><CODE>&nbsp;&nbsp;echo "base=0xd8000000 size=0x2000000 type=write-combining" &gt;| /proc/mtrr</CODE></P>
85
86
87 <P>Not all CPUs support MTRRs. For example older K6-2's [around 266Mhz,
88 stepping 0] doesn't support MTRR, but stepping 12's do ('<CODE>cat /proc/cpuinfo</CODE>'
89 to check it).</P>
90
91 <P><B><A NAME=2.2.1.2>2.2.1.2. Xv</A></B></P>
92
93 <P>Under XFree86 4.0.2 or newer, you can use your card's hardware YUV routines
94 using the XVideo extension. This is what the option '-vo xv' uses.
95 In order to make this work, be sure to check the following:</P>
96 <P><UL>
97 <LI>You have to use XFree86 4.0.2 or newer (former versions don't have XVideo)
98 <LI>Your card actually supports harware acceleration (modern cards do)
99 <LI>X loads the XVideo extension, it's something like this:
100
101 <P><CODE>&nbsp;&nbsp;(II) Loading extension XVideo</CODE></P>
102 <P>in /var/log/XFree86.0.log</P>
103
104 <P>NOTE: this loads only the XFree86's extension. In a good install, this is
105 always loaded, and doesn't mean that the _card's_ XVideo support is loaded!</P>
106
107 <LI>Your card has Xv support under Linux. To check, try 'xvinfo', it is the
108 part of the XFree86 distribution. It should display a long text, similar
109 to this:
5 <PRE> 110 <PRE>
6
7 <A NAME=2.2.1>2.2.1. Video output devices</A>
8
9 General:
10 - x11: X11 with optional SHM extension
11 - xv: X11 using overlays with the Xvideo extension (hardware YUV &amp; scaling)
12 - gl: OpenGL renderer, so far works only with :
13 - all cards with Utah-GLX
14 - Matrox cards with X/DRI >=4.0.3
15 - Radeon with X/DRI CVS
16 - dga: X11 DGA extension
17 - fbdev:Output to general framebuffers
18 - svga: Output to SVGAlib
19 - sdl: 1.1.7 : supports software scaling
20 1.1.8 : supports Xvideo (hardware scaling/fullscreen)
21 1.2.0 : supports AAlib (-vo aa is very recommended, see below!)
22 - ggi: similar to SDL
23 - aa: textmode rendering with AAlib
24
25 Card specific:
26 - mga: Matrox G200/G400 hardware YUV overlay via the mga_vid device
27 - xmga: Matrox G200/G400 overlay (mga_vid) in X11 window
28 (Xv emulation on X 3.3.x !)
29 - syncfb: Matrox G400 YUV support on framebuffer (obsoleted, use mga/xmga)
30 - 3dfx: Voodoo2/3 hardware YUV (/dev/3dfx) support (not yet tested, maybe
31 broken)
32
33 Special:
34 - png: PNG files output (use -z switch to set compression)
35 - pgm: PGM files output (for testing purposes or ffmpeg encoding)
36 - md5: MD5sum output (for MPEG conformance tests)
37 - odivx:OpenDivX AVI File writer (use -br to set encoding bitrate)
38 - null: Null output (for speed tests/benchmarking)
39
40 NOTE: check the following subsections for details and requirements!
41
42
43 <A NAME=2.2.1.1>2.2.1.1. MTRR</A>
44
45 It is VERY recommended to set MTRR registers up properly, because they can
46 give a big performance boost. First you have to find the base address.
47 You have 3 ways to find it:
48
49 - from X11 startup messages, for example:
50
51 (--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
52 (--) SVGA: Linear framebuffer at 0xD8000000
53
54 - from /proc/pci (use lspci -v command):
55
56 01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
57 Memory at d8000000 (32-bit, prefetchable)
58
59 - from mga_vid kernel driver messages (use dmesg):
60
61 mga_mem_base = d8000000
62
63 Then let's find the memory size. This is very easy, just convert video ram
64 size to hexadecimal, or use this table:
65
66
67 1 MB 0x100000
68 2 MB 0x200000
69 4 MB 0x400000
70 8 MB 0x800000
71 16 MB 0x1000000
72 32 MB 0x2000000
73
74
75 You know base address and memory size, let's setup mtrr registers!
76 For example, for the Matrox card above (base=0xd8000000) with 32MB
77 ram (size=0x2000000) just execute:
78
79
80 echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr
81
82
83 Not all CPUs support MTRRs. For example older K6-2's [around 266Mhz,
84 stepping 0] doesn't support MTRR, but stepping 12's do ('cat /proc/cpuinfo'
85 to check it).
86
87
88 <A NAME=2.2.1.2>2.2.1.2. Xv</A>
89
90 Under XFree86 4.0.2 or newer, you can use your card's hardware YUV routines
91 using the XVideo extension. This is what the option '-vo xv' uses.
92 In order to make this work, be sure to check the following:
93 - You have to use XFree86 4.0.2 or newer (former versions don't have XVideo)
94 - Your card actually supports harware acceleration (modern cards do)
95 - X loads the XVideo extension, it's something like this:
96
97
98 (II) Loading extension XVideo
99
100
101 in /var/log/XFree86.0.log
102
103
104 NOTE : this loads only the XFree86's extension. In a good install, this is
105 always loaded, and doesn't mean that the _card's_ XVideo support is
106 loaded!
107
108 - Your card has Xv support under Linux. To check, try 'xvinfo', it is the
109 part of the XFree86 distribution. It should display a long text, similar
110 to this:
111
112
113 X-Video Extension version 2.2 111 X-Video Extension version 2.2
114 screen #0 112 screen #0
115 Adaptor #0: "Savage Streams Engine" 113 Adaptor #0: "Savage Streams Engine"
116 number of ports: 1 114 number of ports: 1
117 port base: 43 115 port base: 43
131 guid: 59563132-0000-0010-8000-00aa00389b71 129 guid: 59563132-0000-0010-8000-00aa00389b71
132 bits per pixel: 12 130 bits per pixel: 12
133 number of planes: 3 131 number of planes: 3
134 type: YUV (planar) 132 type: YUV (planar)
135 (...etc...) 133 (...etc...)
136 134 </PRE>
137 135
138 It must support YUY2 packed, and YV12 planar pixel formats to be 136 <P>It must support YUY2 packed, and YV12 planar pixel formats to be
139 usable with <B>MPlayer</B>. 137 usable with <B>MPlayer</B>.</P>
140 138
141 - And finally, check if <B>MPlayer</B> was compiled with 'xv' support. 139 <LI>And finally, check if <B>MPlayer</B> was compiled with 'xv' support.
142 ./configure prints this. 140 ./configure prints this.
143 141
144 142 </UL></P>
145 <A NAME=2.2.1.2.1>2.2.1.2.1. 3dfx cards</A> 143
146 144 <P><B><A NAME=2.2.1.2.1>2.2.1.2.1. 3dfx cards</A></B></P>
147 Older 3dfx drivers were known to have problems with XVideo acceleration, 145
148 it didn't support either YUY2 or YV12, and so. Verify that you have 146 <P>Older 3dfx drivers were known to have problems with XVideo acceleration,
149 XFree86 version 4.1.0 or greater, it works ok. Alternatively, you can use 147 it didn't support either YUY2 or YV12, and so. Verify that you have
150 <A HREF="http://dri.sourceforge.net">DRI</A> cvs. 148 XFree86 version 4.1.0 or greater, it works ok. Alternatively, you can use
151 If you experience strange effects using -vo xv, try SDL (it has XVideo too) 149 <A HREF="http://dri.sourceforge.net">DRI</A> cvs.
152 and see if it helps. Check the <A HREF="#2.2.1.4">SDL section</A> for details. 150 If you experience strange effects using -vo xv, try SDL (it has XVideo too)
153 151 and see if it helps. Check the <A HREF="#2.2.1.4">SDL section</A> for details.</P>
154 152
155 <A NAME=2.2.1.2.2>2.2.1.2.2. S3 cards</A> 153
156 154 <P><B><A NAME=2.2.1.2.2>2.2.1.2.2. S3 cards</A></B></P>
157 S3 Savage3D's should work fine, but for Savage4, use XFree86 version 4.0.3 155
158 or greater. As for S3 Virge.. sell it. 156 <P>S3 Savage3D's should work fine, but for Savage4, use XFree86 version 4.0.3
159 157 or greater. As for S3 Virge.. sell it.</P>
160 158
161 <A NAME=2.2.1.2.3>2.2.1.2.3. nVidia cards</A> 159 <P><B><A NAME=2.2.1.2.3>2.2.1.2.3. nVidia cards</A></B></P>
162 160
163 nVidia isn't a very good choice under Linux.. You'll have to use the 161 <P>nVidia isn't a very good choice under Linux.. You'll have to use the
164 binary nVidia driver, available at nVidia's website. The standard X 162 binary nVidia driver, available at nVidia's website. The standard X
165 driver doesn't support XVideo for these cards, due to nVidia's closed 163 driver doesn't support XVideo for these cards, due to nVidia's closed
166 sources/specifications. 164 sources/specifications.</P>
167 165
168 - Riva128 cards don't have XVideo support even with the nvidia driver :( 166 <P><UL><LI>Riva128 cards don't have XVideo support even with the nvidia driver :(
169 Complain to NVidia. 167 Complain to NVidia.</UL></P>
170 168
171 169
172 <A NAME=2.2.1.2.4>2.2.1.2.4. ATI cards</A> 170 <P><B><A NAME=2.2.1.2.4>2.2.1.2.4. ATI cards</A></B></P>
173 171
174 The GATOS driver has VSYNC enabled by default. It means that decoding speed 172 <P>The GATOS driver has VSYNC enabled by default. It means that decoding speed
175 (!) is synced to the monitor's refresh rate. If playing seems to be slow, try 173 (!) is synced to the monitor's refresh rate. If playing seems to be slow, try
176 disabling VSYNC somehow, or set refresh rate to n*(fps of the movie) Hz. 174 disabling VSYNC somehow, or set refresh rate to n*(fps of the movie) Hz.</P>
177 175
178 176
179 <A NAME=2.2.1.3>2.2.1.3. DGA</A> 177 <P><B><A NAME=2.2.1.3>2.2.1.3. DGA</A></B></P>
180 178
181 <A NAME=2.2.1.3.1>2.2.1.3.1. Summary</A> 179 <P><B><A NAME=2.2.1.3.1>2.2.1.3.1. Summary</A></B></P>
182 180
183 This document tries to explain in some words what DGA is in general and 181 <P>This document tries to explain in some words what DGA is in general and
184 what the DGA video output driver for mplayer can do (and what it can't). 182 what the DGA video output driver for mplayer can do (and what it can't).</P>
185 183
186 184
187 <A NAME=2.2.1.3.2>2.2.1.3.2. What is DGA</A> 185 <P><B><A NAME=2.2.1.3.2>2.2.1.3.2. What is DGA</A></B></P>
188 186
189 DGA is short for Direct Graphics Access and is a means for a program to 187 <P>DGA is short for Direct Graphics Access and is a means for a program to
190 bypass the X-Server and directly modifying the framebuffer memory. 188 bypass the X-Server and directly modifying the framebuffer memory.
191 Technically spoken this happens by mapping the framebuffer memory into 189 Technically spoken this happens by mapping the framebuffer memory into
192 the memory range of your process. This is allowed by the kernel only 190 the memory range of your process. This is allowed by the kernel only
193 if you have superuser privileges. You can get these either by logging in 191 if you have superuser privileges. You can get these either by logging in
194 as root or by setting the suid bit on the mplayer excecutable (NOT 192 as root or by setting the suid bit on the mplayer excecutable (NOT
195 recommended!). 193 recommended!).</P>
196 194
197 There are two versions of DGA: DGA1 is used by XFree 3.x.x and DGA2 was 195 <P>There are two versions of DGA: DGA1 is used by XFree 3.x.x and DGA2 was
198 introduced with XFree 4.0.1. 196 introduced with XFree 4.0.1.</P>
199 197
200 DGA1 provides only direct framebuffer access as described above. For 198 <P>DGA1 provides only direct framebuffer access as described above. For
201 switching the resolution of the video signal you have to rely on the 199 switching the resolution of the video signal you have to rely on the
202 XVidMode extension. 200 XVidMode extension.</P>
203 201
204 DGA2 incorporates the features of XVidMode extension and also allows 202 <P>DGA2 incorporates the features of XVidMode extension and also allows
205 switching the depth of the display. So you may, although basically 203 switching the depth of the display. So you may, although basically
206 running a 32 bit depth XServer, switch to a depth of 15 bits and vice 204 running a 32 bit depth XServer, switch to a depth of 15 bits and vice
207 versa. 205 versa. </P>
208 206
209 However DGA has some drawbacks. It seems it is somewhat dependent on the 207 <P>However DGA has some drawbacks. It seems it is somewhat dependent on the
210 graphics chip you use and on the implementation of the XServer's video 208 graphics chip you use and on the implementation of the XServer's video
211 driver that controls this chip. So it does not work on every system ... 209 driver that controls this chip. So it does not work on every system ...</P>
212 210
213 211
214 <A NAME=2.2.1.3.3>2.2.1.3.3. Installing DGA support for <B>MPlayer</B></A> 212 <P><B><A NAME=2.2.1.3.3>2.2.1.3.3. Installing DGA support for MPlayer</A></B></P>
215 213
216 First make sure X loads the DGA extension, see in /var/log/XFree86.0.log : 214 <P>First make sure X loads the DGA extension, see in /var/log/XFree86.0.log:</P>
217 215
218 216 <P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>(II) Loading extension XFree86-DGA</CODE></P>
219 (II) Loading extension XFree86-DGA 217
220 218 <P>See, XFree86 4.0.x or greater is VERY RECOMMENDED!
221 219 <B>MPlayer</B>'s DGA driver is autodetected on ./configure, or you can force it
222 See, XFree86 4.0.x or greater is VERY RECOMMENDED! 220 with --enable-dga.</P>
223 <B>MPlayer</B>'s DGA driver is autodetected on ./configure, or you can force it 221
224 with --enable-dga. 222 <P>If the driver couldn't switch to a smaller resolution, experiment with
225 223 switches -vm (only with X 3.3.x), -fs, -bpp, -zoom to find a video mode that
226 If the driver couldn't switch to a smaller resolution, experiment with 224 the movie fits in. There is no converter right now.. :(</P>
227 switches -vm (only with X 3.3.x), -fs, -bpp, -zoom to find a video mode that 225
228 the movie fits in. There is no converter right now.. :( 226 <P>Become ROOT. DGA needs root access to be able to write directly video memory.
229 227 If you want to run it as user, then install <B>MPlayer</B> SUID root:</P>
230 Become ROOT. DGA needs root access to be able to write directly video memory. 228
231 If you want to run it as user, then install <B>MPlayer</B> SUID root: 229 <P><CODE>
232 230 &nbsp;&nbsp;&nbsp;&nbsp;<CODE>chown root /usr/local/bin/mplayer<BR>
233 231 &nbsp;&nbsp;&nbsp;&nbsp;<CODE>chmod 750 /usr/local/bin/mplayer<BR>
234 chown root /usr/local/bin/mplayer 232 &nbsp;&nbsp;&nbsp;&nbsp;<CODE>chmod +s /usr/local/bin/mplayer<BR></CODE></P>
235 chmod 750 /usr/local/bin/mplayer 233
236 chmod +s /usr/local/bin/mplayer 234
237 235 <P>Now it works as a simple user, too.</P>
238 236
239 Now it works as a simple user, too. 237
240 238 <P><B>!!!! BUT STAY TUNED !!!!</B><BR>
241 239 This is a <B>BIG</B> security risk! Never do this on a server or on a computer
242 !!!! BUT STAY TUNED !!!! 240 can be accessed by more people than only you because they can gain root
243 This is a BIG security risk! Never do this on a server or on a computer 241 privilegies through suid root mplayer.<BR>
244 can be accessed by more people than only you because they can gain root 242 <B>!!!! SO YOU HAVE BEEN WARNED ... !!!!</B></P>
245 privilegies through suid root mplayer. 243
246 !!!! SO YOU HAVE BEEN WARNED ... !!!! 244 <P>Now use '-vo dga' option, and there you go! (hope so:)
247 245 You should also try if the '-vo sdl:dga' option works for you! It's much
248 246 faster!!!</P>
249 Now use '-vo dga' option, and there you go! (hope so:) 247
250 You should also try if the '-vo sdl:dga' option works for you! It's much 248 <P><B><A NAME=2.2.1.3.4>2.2.1.3.4. Resolution switching</A></B></P>
251 faster!!! 249
252 250 <P>The DGA driver allows for switching the resolution of the output signal.
253 251 This avoids the need for doing (slow) software scaling and at the same
254 <A NAME=2.2.1.3.4>2.2.1.3.4. Resolution switching</A> 252 time provides a fullscreen image. Ideally it would switch to the exact
255 253 resolution (except for honouring aspect ratio) of the video data, but the
256 The DGA driver allows for switching the resolution of the output signal. 254 XServer only allows switching to resolutions predefined in
257 This avoids the need for doing (slow) software scaling and at the same 255 <CODE>/etc/X11/XF86Config</CODE> (<CODE>/etc/X11/XF86Config-4</CODE> for XFree 4.0.X respectively).
258 time provides a fullscreen image. Ideally it would switch to the exact 256 Those are defined by so-called modelines and depend on the capabilites
259 resolution (except for honouring aspect ratio) of the video data, but the 257 of your video hardware. The XServer scans this config file on startup and
260 XServer only allows switching to resolutions predefined in 258 disables the modelines not suitable for your hardware. You can find
261 /etc/X11/XF86Config (/etc/X11/XF86Config-4 for XFree 4.0.X respectively). 259 out which modes survive with the X11 log file. It can be found at:
262 Those are defined by so-called modelines and depend on the capabilites 260 <CODE>/var/log/XFree86.0.log</CODE>.</P>
263 of your video hardware. The XServer scans this config file on startup and 261 <P>See appendix A for some sample modeline definitions.</P>
264 disables the modelines not suitable for your hardware. You can find 262
265 out which modes survive with the X11 log file. It can be found at: 263 <P><B><A NAME=2.2.1.3.5>2.2.1.3.5. DGA &amp; MPlayer</A></B></P>
266 /var/log/XFree86.0.log 264
267 See appendix A for some sample modeline definitions. 265 <P>DGA is used in two places with <B>MPlayer</B>: The SDL driver can be made to make
268 266 use of it (-vo sdl:dga) and within the DGA driver (-vo dga).
269 267 The above said is true for both; in the following sections I'll explain
270 <A NAME=2.2.1.3.5>2.2.1.3.5. DGA &amp; <B>MPlayer</B></A> 268 how the DGA driver for <B>MPlayer</B> works.</P>
271 269
272 DGA is used in two places with <B>MPlayer</B>: The SDL driver can be made to make 270 <P><B><A NAME=2.2.1.3.6>2.2.1.3.6. Features of the DGA driver</A></B></P>
273 use of it (-vo sdl:dga) and within the DGA driver (-vo dga).
274 The above said is true for both; in the following sections I'll explain
275 how the DGA driver for <B>MPlayer</B> works.
276
277
278 <A NAME=2.2.1.3.6>2.2.1.3.6. Features of the DGA driver</A>
279 271
280 The DGA driver is invoked by specifying -vo dga at the command line. 272 <P>The DGA driver is invoked by specifying -vo dga at the command line.
281 The default behaviour is to switch to a resolution matching the original 273 The default behaviour is to switch to a resolution matching the original
282 resolution of the video as close as possible. It deliberately ignores the 274 resolution of the video as close as possible. It deliberately ignores the
283 -vm and -fs switches (enabling of video mode switching and fullscreen) - 275 -vm and -fs switches (enabling of video mode switching and fullscreen) -
284 it always tries to cover as much area of your screen as possible by switching 276 it always tries to cover as much area of your screen as possible by switching
285 the video mode, thus refraining to use a single additional cycle of your CPU 277 the video mode, thus refraining to use a single additional cycle of your CPU
286 to scale the image. 278 to scale the image.
287 If you don't like the mode it chooses you may force it to choose the mode 279 If you don't like the mode it chooses you may force it to choose the mode
288 matching closest the resolution you specify by -x and -y. 280 matching closest the resolution you specify by -x and -y.
289 By providing the -v option, the DGA driver will print, among a lot of other 281 By providing the -v option, the DGA driver will print, among a lot of other
290 things, a list of all resolutions supported by your current XF86-Config 282 things, a list of all resolutions supported by your current XF86-Config
291 file. 283 file.
292 Having DGA2 you may also force it to use a certain depth by using the -bpp 284 Having DGA2 you may also force it to use a certain depth by using the -bpp
293 option. Valid depths are 15, 16, 24 and 32. It depends on your hardware 285 option. Valid depths are 15, 16, 24 and 32. It depends on your hardware
294 whether these depths are natively supported or if a (possibly slow) 286 whether these depths are natively supported or if a (possibly slow)
295 conversion has to be done. 287 conversion has to be done.</P>
296 288
297 If you should be lucky enough to have enough offscreen memory left to 289 <P>If you should be lucky enough to have enough offscreen memory left to
298 put a whole image there, the DGA driver will use doublebuffering, which 290 put a whole image there, the DGA driver will use doublebuffering, which
299 results in much smoother movie replaying. It will tell you whether double- 291 results in much smoother movie replaying. It will tell you whether double-
300 buffering is enabled or not. 292 buffering is enabled or not.</P>
301 293
302 Doublebuffering means that the next frame of your video is being drawn in 294 <P>Doublebuffering means that the next frame of your video is being drawn in
303 some offscreen memory while the current frame is being displayed. When the 295 some offscreen memory while the current frame is being displayed. When the
304 next frame is ready, the graphics chip is just told the location in memory 296 next frame is ready, the graphics chip is just told the location in memory
305 of the new frame and simply fetches the data to be displayed from there. 297 of the new frame and simply fetches the data to be displayed from there.
306 In the meantime the other buffer in memory will be filled again with new 298 In the meantime the other buffer in memory will be filled again with new
307 video data. 299 video data.</P>
308 300
309 Doublebuffering may be switched on by using the option -double and may be 301 Doublebuffering may be switched on by using the option -double and may be
310 disabled with -nodouble. Current default option is to disable 302 disabled with -nodouble. Current default option is to disable
311 doublebuffering. When using the DGA driver, onscreen display (OSD) only 303 doublebuffering. When using the DGA driver, onscreen display (OSD) only
312 works with doublebuffering enabled. However, enabling doublebuffering may 304 works with doublebuffering enabled. However, enabling doublebuffering may
313 result in a big speed penalty (on my K6-II+ 525 it used an additional 20% of 305 result in a big speed penalty (on my K6-II+ 525 it used an additional 20% of
314 CPU time!) depending on the implementation of DGA for your hardware. 306 CPU time!) depending on the implementation of DGA for your hardware.</P>
315 307
316 308
317 <A NAME=2.2.1.3.7>2.2.1.3.7. Speed issues</A> 309 <P><B><A NAME=2.2.1.3.7>2.2.1.3.7. Speed issues</A></B></P>
318 310
319 Generally spoken, DGA framebuffer access should be at least as fast as using 311 <P>Generally spoken, DGA framebuffer access should be at least as fast as using
320 the X11 driver with the additional benefit of getting a fullscreen image. 312 the X11 driver with the additional benefit of getting a fullscreen image.
321 The percentage speed values printed by mplayer have to be interpreted with 313 The percentage speed values printed by mplayer have to be interpreted with
322 some care, as for example, with the X11 driver they do not include the time 314 some care, as for example, with the X11 driver they do not include the time
323 used by the X-Server needed for the actual drawing. Hook a terminal to a 315 used by the X-Server needed for the actual drawing. Hook a terminal to a
324 serial line of your box and start top to see what is really going on in your 316 serial line of your box and start top to see what is really going on in your
325 box ... 317 box ...</P>
326 318
327 Generally spoken, the speedup done by using DGA against 'normal' use of X11 319 <P>Generally spoken, the speedup done by using DGA against 'normal' use of X11
328 highly depends on your graphics card and how well the X-Server module for it 320 highly depends on your graphics card and how well the X-Server module for it
329 is optimized. 321 is optimized.</P>
330 322
331 If you have a slow system, better use 15 or 16bit depth since they require 323 <P>If you have a slow system, better use 15 or 16bit depth since they require
332 only half the memory bandwidth of a 32 bit display. 324 only half the memory bandwidth of a 32 bit display.</P>
325
326 <P>Using a depth of 24bit is even a good idea if your card natively just supports
327 32 bit depth since it transfers 25% less data compared to the 32/32 mode.</P>
333 328
334 Using a depth of 24bit is even a good idea if your card natively just supports 329 <P>I've seen some avi files already be replayed on a Pentium MMX 266. AMD K6-2
335 32 bit depth since it transfers 25% less data compared to the 32/32 mode. 330 CPUs might work at 400 MHZ and above.</P>
336 331
337 I've seen some avi files already be replayed on a Pentium MMX 266. AMD K6-2 332 <P><B><A NAME=2.2.1.3.8>2.2.1.3.8. Known bugs</A></B></P>
338 CPUs might work at 400 MHZ and above. 333
339 334 <P>Well, according to some developpers of XFree, DGA is quite a beast. They
340 335 tell you better not to use it. Its implementation is not always flawless
341 <A NAME=2.2.1.3.8>2.2.1.3.8. Known bugs</A> 336 with every chipset driver for XFree out there.</P>
342 337
343 Well, according to some developpers of XFree, DGA is quite a beast. They 338 <P><UL>
344 tell you better not to use it. Its implementation is not always flawless 339 <LI>with XFree 4.0.3 and nv.o there is a bug resulting in strange colors
345 with every chipset driver for XFree out there. 340 <LI>ATI driver requires to switch mode back more than once after finishing
346 341 using of DGA
347 o with XFree 4.0.3 and nv.o there is a bug resulting in strange colors 342 <LI>some drivers simply fail to switch back to normal resolution (use
348 o ATI driver requires to switch mode back more than once after finishing 343 Ctrl-Alt-Keypad +, - to switch back manually)
349 using of DGA 344 <LI>some drivers simply display strange colors
350 o some drivers simply fail to switch back to normal resolution (use 345 <LI>some drivers lie about the amount of memory they map into the process's
351 Ctrl-Alt-Keypad +, - to switch back manually) 346 address space, thus vo_dga won't use doublebuffering (SIS?)
352 o some drivers simply display strange colors 347 <LI>some drivers seem to fail to report even a single valid mode. In this
353 o some drivers lie about the amount of memory they map into the process's 348 case the DGA driver will crash telling you about a nonsense mode of
354 address space, thus vo_dga won't use doublebuffering (SIS?) 349 100000x100000 or the like ...
355 o some drivers seem to fail to report even a single valid mode. In this 350 <LI>OSD only works with doublebuffering enabled
356 case the DGA driver will crash telling you about a nonsense mode of 351 </UL></P>
357 100000x100000 or the like ... 352
358 o OSD only works with doublebuffering enabled 353 <P><B><A NAME=2.2.1.3.9>2.2.1.3.9. Future work</A></B></P>
359 354
360 355 <P><UL><LI>use of the new X11 render interface for OSD
361 <A NAME=2.2.1.3.9>2.2.1.3.9. Future work</A> 356 <LI>where is my TODO list ???? :-(((</UL></P>
362 357
363 o use of the new X11 render interface for OSD 358
364 o where is my TODO list ???? :-((( 359 <P><B><A NAME=2.2.1.3.A>2.2.1.3.A. Some modelines</A></B></P>
365 360
366 361 <PRE>
367 <A NAME=2.2.1.3.A>2.2.1.3.A. Some modelines</A>
368
369 Section "Modes" 362 Section "Modes"
370 Identifier "Modes[0]" 363 Identifier "Modes[0]"
371 Modeline "800x600" 40 800 840 968 1056 600 601 605 628 364 Modeline "800x600" 40 800 840 968 1056 600 601 605 628
372 Modeline "712x600" 35.0 712 740 850 900 400 410 412 425 365 Modeline "712x600" 35.0 712 740 850 900 400 410 412 425
373 Modeline "640x480" 25.175 640 664 760 800 480 491 493 525 366 Modeline "640x480" 25.175 640 664 760 800 480 491 493 525
374 Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan 367 Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan
375 Modeline "352x288" 25.10 352 368 416 432 288 296 290 310 368 Modeline "352x288" 25.10 352 368 416 432 288 296 290 310
376 Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan 369 Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan
377 Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan 370 Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan
378 EndSection 371 EndSection
379 372 </PRE>
380 373
381 These entries work fine with my Riva128 chip, using nv.o XServer driver 374 <P>These entries work fine with my Riva128 chip, using nv.o XServer driver
382 module. 375 module.</P>
383 376
384 377
385 <A NAME=2.2.1.3.B>2.2.1.3.B. Bug Reports</A> 378 <P><B><A NAME=2.2.1.3.B>2.2.1.3.B. Bug Reports</A></B></P>
386 379
387 If you experience troubles with the DGA driver please feel free to file 380 <P>If you experience troubles with the DGA driver please feel free to file
388 a bug report to me (e-mail address below). Please start mplayer with the 381 a bug report to me (e-mail address below). Please start mplayer with the
389 -v option and include all lines in the bug report that start with vo_dga: 382 -v option and include all lines in the bug report that start with vo_dga:</P>
390 383
391 Please do also include the version of X11 you are using, the graphics card 384 <P>Please do also include the version of X11 you are using, the graphics card
392 and your CPU type. The X11 driver module (defined in XF86-Config) might 385 and your CPU type. The X11 driver module (defined in XF86-Config) might
393 also help. Thanks! 386 also help. Thanks!</P>
394 387
395 388
396 Acki (acki@acki-netz.de, www.acki-netz.de) 389 <P><I>Acki (acki@acki-netz.de, www.acki-netz.de)</I></P>
397 390
398 391
399 <A NAME=2.2.1.4>2.2.1.4. SDL</A> 392 <P><B><A NAME=2.2.1.4>2.2.1.4. SDL</A></B></P>
400 393
401 Here are some notes about SDL out in <B>MPlayer</B>. 394 <P>Here are some notes about SDL out in <B>MPlayer</B>.</P>
402 395
403 There are several commandline switches for SDL: 396
404 397
405 -vo sdl:name specifies sdl video driver to use (ie. aalib, 398 <P><TABLE BORDER=0>
406 dga, x11) 399 <TD COLSPAN=4><P><B>There are several commandline switches for SDL:</B></P></TD><TR>
407 -ao sdl:name specifies sdl audio driver to use (ie. dsp, 400 <TD>&nbsp;&nbsp;</TD><TD>-vo sdl:name</TD><TD>&nbsp;&nbsp;</TD><TD>
408 esd, arts) 401 specifies sdl video driver to use (ie. aalib, dga, x11)</TD><TR>
409 -noxv disables Xvideo hardware acceleration 402 <TD></TD><TD>-ao sdl:name</TD><TD></TD><TD>specifies sdl audio driver to use (ie. dsp,
410 -forcexv tries to force Xvideo acceleration 403 esd, arts)</TD><TR>
411 404 <TD></TD><TD>-noxv</TD><TD></TD><TD>disables Xvideo hardware acceleration</TD><TR>
412 SDL Keys: 405 <TD></TD><TD>-forcexv</TD><TD></TD><TD>tries to force Xvideo acceleration</TD><TR>
413 406
414 F toggles fullscreen/windowed mode 407 <TD COLSPAN=4><P><B>SDL Keys:</B></P></TD><TR>
415 C cycles available fullscreen modes 408
416 W/S mappings for * and / (mixer control) 409 <TD></TD><TD>F</TD><TD></TD><TD>toggles fullscreen/windowed mode</TD><TR>
417 410 <TD></TD><TD>C</TD><TD></TD><TD>cycles available fullscreen modes</TD><TR>
418 KNOWN BUGS: 411 <TD></TD><TD>W/S</TD><TD></TD><TD>mappings for * and / (mixer control)</TD><TR>
419 - Keys pressed under sdl:aalib console driver repeat forever. (use -vo aa !) 412
420 It's bug in SDL, I can't change it (tested with SDL 1.2.1). 413 </TABLE></P>
421 414
422 415 <P><B>KNOWN BUGS:</B></P>
423 <A NAME=2.2.1.5>2.2.1.5. SVGAlib</A> 416 <P><UL><LI>Keys pressed under sdl:aalib console driver repeat forever. (use -vo aa !)
424 417 It's bug in SDL, I can't change it (tested with SDL 1.2.1).
425 If you don't have X, you can use the SVGAlib target! Be sure not to use the 418 </UL></P>
426 -fs switch, since it toggles the usage of the software scaler, and it's 419
427 SLOOOW now, unless you have a real fast CPU (and/or MTRR?). :( 420 <P><B><A NAME=2.2.1.5>2.2.1.5. SVGAlib</A></B></P>
428 421
429 Of course you'll have to install svgalib and its development package in 422 <P>If you don't have X, you can use the SVGAlib target! Be sure not to use the
430 order for <B>MPlayer</B> build its SVGAlib driver (autodetected, but can be 423 -fs switch, since it toggles the usage of the software scaler, and it's
431 forced), and don't forget to edit /etc/vga/libvga.config to suit your 424 SLOOOW now, unless you have a real fast CPU (and/or MTRR?). :(</P>
432 card &amp; monitor. 425
433 426 <P>Of course you'll have to install svgalib and its development package in
434 427 order for <B>MPlayer</B> build its SVGAlib driver (autodetected, but can be
435 <A NAME=2.2.1.6>2.2.1.6. Framebuffer output (FBdev)</A> 428 forced), and don't forget to edit /etc/vga/libvga.config to suit your
436 429 card &amp; monitor.</P>
437 Whether to build the FBdev target is autodetected during ./configure . 430
438 Read the framebuffer documentation in the kernel sources 431 <P><B><A NAME=2.2.1.6>2.2.1.6. Framebuffer output (FBdev)</A></B></P>
439 (Documentation/fb/*) for info on how to enable it, etc.. ! 432
440 433 <P>Whether to build the FBdev target is autodetected during ./configure .
441 If your card doesn't support VBE 2.0 standard (older ISA/PCI 434 Read the framebuffer documentation in the kernel sources
442 cards, such as S3 Trio64), only VBE 1.2 (or older?) : 435 (Documentation/fb/*) for info on how to enable it, etc.. !</P>
443 Well, VESAfb is still available, but you'll have to load SciTech Display 436
444 Doctor (formerly UniVBE) before booting Linux. Use a DOS boot disk or 437 <P>If your card doesn't support VBE 2.0 standard (older ISA/PCI
445 whatever. And don't forget to register your UniVBE ;)) 438 cards, such as S3 Trio64), only VBE 1.2 (or older?) :
446 439 Well, VESAfb is still available, but you'll have to load SciTech Display
447 The FBdev output takes some additional parameters above the others: 440 Doctor (formerly UniVBE) before booting Linux. Use a DOS boot disk or
448 441 whatever. And don't forget to register your UniVBE ;))</P>
449 -fb specify the framebuffer device to use (/dev/fd0) 442
450 -fbmode mode name to use (according to /etc/fb.modes) 443 <P>The FBdev output takes some additional parameters above the others:</P>
451 -fbmodeconfig config file of modes (default /etc/fb.modes) 444
452 monitor_hfreq 445 <P><TABLE BORDER=0>
453 monitor_vfreq IMPORTANT values, see example.conf 446 <TD>&nbsp;&nbsp;</TD><TD>-fb</TD><TD>&nbsp;&nbsp;</TD><TD>
454 monitor_dotclock 447 specify the framebuffer device to use (/dev/fd0)</TD><TR>
455 448 <TD></TD><TD>-fbmode</TD><TD></TD><TD>mode name to use (according to /etc/fb.modes)</TD><TR>
456 If you want to change to a specific mode, then use 449 <TD></TD><TD>-fbmodeconfig</TD><TD></TD><TD> config file of modes (default /etc/fb.modes)</TD><TR>
457 450 <TD></TD><TD>-monitor_hfreq</TD><TD></TD><TD ROWSPAN=3>IMPORTANT values, see example.conf</TD><TR>
458 mplayer -vm -fbmode (NameOfMode) filename 451 <TD></TD><TD>-monitor_vfreq</TD><TD></TD><TR>
459 452 <TD></TD><TD>-monitor_dotclock</TD><TD></TD><TR>
460 -vm alone will choose the most suitable mode from /etc/fb.modes . Can be 453 </TABLE></P>
461 used together with -x and -y options too. The -flip option is supported only 454
462 if the movie's pixel format matches the video mode's pixel format. 455 <P>If you want to change to a specific mode, then use</P>
463 Pay attention to the bpp value, fbdev driver tries to use the current, 456
464 or if you specify the -bpp option, then that. 457 <P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;mplayer -vm -fbmode (NameOfMode) filename</CODE></P>
465 -zoom option isn't supported (software scaling is slow). -fs option 458
466 isn't supported. You can't use 8bpp (or less) modes. 459 <P><UL><LI><B>-vm</B> alone will choose the most suitable mode from /etc/fb.modes . Can be
467 460 used together with -x and -y options too. The -flip option is supported only
468 NOTE: FBdev video mode changing _does not work_ with the VESA framebuffer, 461 if the movie's pixel format matches the video mode's pixel format.
469 and don't ask for it, since it's not an <B>MPlayer</B> limitation. 462 Pay attention to the bpp value, fbdev driver tries to use the current,
470 463 or if you specify the -bpp option, then that.
471 464 <LI><B>-zoom</B> option isn't supported (software scaling is slow). -fs option
472 <A NAME=2.2.1.7>2.2.1.7. Matrox framebuffer (mga_vid)</A> 465 isn't supported. You can't use 8bpp (or less) modes.</UL></P>
473 466
474 This section is about the Matrox G200/G400/G450 BES (Back-End Scaler) 467 <P>NOTE: FBdev video mode changing _does not work_ with the VESA framebuffer,
475 support, the mga_vid kernel driver. It's active developed by me (A'rpi), and 468 and don't ask for it, since it's not an <B>MPlayer</B> limitation.</P>
476 it has hardware VSYNC support with triple buffering. It works on both 469
477 framebuffer console and under X. 470 <P><B><A NAME=2.2.1.7>2.2.1.7. Matrox framebuffer (mga_vid)</A></B></P>
471
472 <P>This section is about the Matrox G200/G400/G450 BES (Back-End Scaler)
473 support, the mga_vid kernel driver. It's active developed by me (A'rpi), and
474 it has hardware VSYNC support with triple buffering. It works on both
475 framebuffer console and under X.</P>
478 476
479 To use it, you first have to compile mga_vid.o : 477 <P>To use it, you first have to compile mga_vid.o:</P>
480 478
481 479 <P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;cd drivers<BR>
482 cd drivers 480 &nbsp;&nbsp;&nbsp;&nbsp;make</CODE></P>
483 make 481
484 482 <P>Then create /dev/mga_vid device:</P>
485 483
486 Then create /dev/mga_vid device : 484 <P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;mknod /dev/mga_vid c 178 0</CODE></P>
487 485
488 486 <P>and load the driver with</P>
489 mknod /dev/mga_vid c 178 0 487
490 488 <P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;insmod mga_vid.o</CODE></P>
491 489
492 and load the driver with 490 <P>You should verify the memory size detection using the 'dmesg' command. If
493 491 it's bad, use the mga_ram_size option (rmmod mga_vid first), specify card's
494 492 memory size in MB:</P>
495 insmod mga_vid.o 493
496 494 <P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;insmod mga_vid.o mga_ram_size=16</CODE></P>
497 495
498 You should verify the memory size detection using the 'dmesg' command. If 496 <P>To make it load/unload automatically when needed, insert the following line
499 it's bad, use the mga_ram_size option (rmmod mga_vid first), specify card's 497 at the end of /etc/modules.conf:</P>
500 memory size in MB: 498
501 499 <P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;alias char-major-178 mga_vid</CODE></P>
502 500
503 insmod mga_vid.o mga_ram_size=16 501 <P>Then run</P>
504 502
505 503 <P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;depmod -a</CODE></P>
506 To make it load/unload automatically when needed, insert the following line 504
507 at the end of /etc/modules.conf : 505 <P>Now you have to (re)compile <B>MPlayer</B>, ./configure will detect /dev/mga_vid
508 506 and build the 'mga' driver. Using it from <B>MPlayer</B> goes by '-vo mga' if
509 507 you have matroxfb console, or '-vo xmga' under XFree86 3.x.x or 4.x.x.</P>
510 alias char-major-178 mga_vid 508
511 509 <P>Note: '-vo xmga' works under XFree86 4.x.x, but it conflicts with the Xv
512 510 driver, so avoid using both. If you messed up Xv with mga, try running
513 Then run 511 <B>MPlayer</B> with '-vo mga' . It should fix Xv.</P>
514
515
516 depmod -a
517
518
519 Now you have to (re)compile <B>MPlayer</B>, ./configure will detect /dev/mga_vid
520 and build the 'mga' driver. Using it from <B>MPlayer</B> goes by '-vo mga' if
521 you have matroxfb console, or '-vo xmga' under XFree86 3.x.x or 4.x.x .
522
523 Note: '-vo xmga' works under XFree86 4.x.x, but it conflicts with the Xv
524 driver, so avoid using both. If you messed up Xv with mga, try running
525 <B>MPlayer</B> with '-vo mga' . It should fix Xv.
526 512
527 513
528 <A NAME=2.2.1.8>2.2.1.8. SiS 6326 framebuffer (sis_vid)</A> 514 <P><B><A NAME=2.2.1.8>2.2.1.8. SiS 6326 framebuffer (sis_vid)</A></B></P>
529 515
530 SiS 6326 YUV Framebuffer driver -> sis_vid kernel driver 516 <P>SiS 6326 YUV Framebuffer driver -> sis_vid kernel driver</P>
531 517
532 Its interface should be compatible with the mga_vid, but the driver was not 518 <P>Its interface should be compatible with the mga_vid, but the driver was not
533 updated after the mga_vid changes, so it's outdated now. Volunteers 519 updated after the mga_vid changes, so it's outdated now. Volunteers
534 needed to test it and bring the code up-to-date. 520 needed to test it and bring the code up-to-date.</P>
535 521
536 522 <P><B><A NAME=2.2.1.9>2.2.1.9. 3dfx YUV support</A></B></P>
537 <A NAME=2.2.1.9>2.2.1.9. 3dfx YUV support</A> 523
538 524 <P>3dfx has native YUV+scaler support, using /dev/3dfx (tdfx.o driver?)
539 3dfx has native YUV+scaler support, using /dev/3dfx (tdfx.o driver?) 525 The /dev/3dfx kernel driver exists only for 2.2.x kernels, for use with
540 The /dev/3dfx kernel driver exists only for 2.2.x kernels, for use with 526 Glide 2.x Linux ports. It's not tested with <B>MPlayer</B>, and so no more
541 Glide 2.x Linux ports. It's not tested with <B>MPlayer</B>, and so no more 527 supported. Volunteers needed to test it and bring the code up-to-date.</P>
542 supported. Volunteers needed to test it and bring the code up-to-date. 528
543 529 <P><B><A NAME=2.2.1.10>2.2.1.10. OpenGL output</A></B></P>
544 530
545 <A NAME=2.2.1.10>2.2.1.10. OpenGL output</A> 531 <P><B>MPlayer</B> support displaying movies using OpenGL. Unfortunately, not all
546 532 drivers support this ability. For example the Utah-GLX drivers
547 <B>MPlayer</B> support displaying movies using OpenGL. Unfortunately, not all 533 (for XFree86 3.3.6) have it, with all cards.
548 drivers support this ability. For example the Utah-GLX drivers 534 See <A HREF="http://utah-glx.sourceforge.net">http://utah-glx.sourceforge.net</A>
549 (for XFree86 3.3.6) have it, with all cards. 535 for details about how to install it.</P>
550 See <A HREF="http://utah-glx.sourceforge.net">http://utah-glx.sourceforge.net</A> for details about how to install it. 536
551 537 <P>XFree86(DRI) >= 4.0.3 supports it only with Matrox, and Radeon cards.
552 XFree86(DRI) >= 4.0.3 supports it only with Matrox, and Radeon cards. 538 See <A HREF="http://dri.sourceforge.net">http://dri.sourceforge.net</A> for download,
553 See <A HREF="http://dri.sourceforge.net">http://dri.sourceforge.net</A> for download, and installation instructions. 539 and installation instructions.</P>
554 540
555 541 <P><B><A NAME=2.2.1.11>2.2.1.11. AAlib - text mode displaying</B></P>
556 <A NAME=2.2.1.11>2.2.1.11. AAlib - text mode displaying</A> 542
557 543 <P><B>AAlib</B> is a library for displaying graphics in text mode, using powerful
558 <B>AAlib</B> is a library for displaying graphics in text mode, using powerful 544 ASCII renderer. There are LOTS of programs already supporting it, like Doom,
559 ASCII renderer. There are LOTS of programs already supporting it, like Doom, 545 Quake, etc. MPlayer contains a very usable driver for it.
560 Quake, etc. MPlayer contains a very usable driver for it. 546 If ./configure detects aalib installed, the aalib libvo driver will be built.</P>
561 If ./configure detects aalib installed, the aalib libvo driver will be built. 547
562 548 <P><TABLE BORDER=0>
563 You can use some keys in the AA Window to change rendering options: 549 <TD COLSPAN=4><P><B>You can use some keys in the AA Window to change rendering options:</B></P></TD><TR>
564 1 : decrease contrast 550 <TD>&nbsp;&nbsp;</TD><TD>1</TD><TD>&nbsp;&nbsp;</TD><TD>decrease contrast</TD><TR>
565 2 : increase contrast 551 <TD></TD><TD>2</TD><TD></TD><TD>increase contrast</TD><TR>
566 3 : decrease brightness 552 <TD></TD><TD>3</TD><TD></TD><TD>decrease brightness</TD><TR>
567 4 : increase brightness 553 <TD></TD><TD>4</TD><TD></TD><TD>increase brightness</TD><TR>
568 5 : switch fast rendering on/off 554 <TD></TD><TD>5</TD><TD></TD><TD>switch fast rendering on/off</TD><TR>
569 6 : set dithering mode (none, error distribution, floyd steinberg) 555 <TD></TD><TD>6</TD><TD></TD><TD>set dithering mode (none, error distribution, floyd steinberg)</TD><TR>
570 7 : invert image 556 <TD></TD><TD>7</TD><TD></TD><TD>invert image</TD><TR>
571 a : toggles between aa and mplayer control) 557 <TD></TD><TD>a</TD><TD></TD><TD>toggles between aa and mplayer control)</TD><TR>
572 558
573 559 <TD COLSPAN=4><P><B>The following command line options can be used:</B></P></TD><TR>
574 The following command line options can be used: 560
575 -aaosdcolor=V : change osd color 561 <TD></TD><TD>-aaosdcolor=V</TD><TD></TD><TD>change osd color</TD><TR>
576 -aasubcolor=V : change subtitle color 562 <TD></TD><TD>-aasubcolor=V</TD><TD></TD><TD>change subtitle color</TD><TR>
577 where V can be: (0/normal, 1/dark, 2/bold, 3/boldfont, 4/reverse, 563 <TD COLSPAN=3></TD><TD><P><I>where V can be: (0/normal, 1/dark, 2/bold, 3/boldfont, 4/reverse, 5/special)</P></TD><TR>
578 5/special)
579 564
580 AAlib itselves provides a large sum of options. 565 <TD COLSPAN=4><P><B>AAlib itselves provides a large sum of options.
581 Here are some important: 566 Here are some important:</P></B></TD><TR>
582 -aadriver : set recommended aa driver (X11, curses, linux) 567
583 -aaextended : use all 256 characters 568 <TD></TD><TD>-aadriver</TD><TD></TD><TD>set recommended aa driver (X11, curses, linux)</TD><TR>
584 -aaeight : use eight bit ascii 569 <TD></TD><TD>-aaextended</TD><TD></TD><TD>use all 256 characters</TD><TR>
585 -aahelp : prints out all aalib options 570 <TD></TD><TD>-aaeight</TD><TD></TD><TD>use eight bit ascii</TD><TR>
571 <TD></TD><TD>-aahelp</TD><TD></TD><TD>prints out all aalib options</TD><TR>
572 </TABLE></P>
573
574 <P>NOTE: the rendering is very CPU intensive, especially when using AA-on-X
575 (using aalib on X), and it's least CPU intensive on standard,
576 non-framebuffer console. Use SVGATextMode to set up a big textmode,
577 then enjoy! (secondary head Hercules cards rock :)) (anyone can enhance
578 bdev to do conversion/dithering to hgafb? Would be neat :)</P>
586 579
587 580 <P>Use the -framedrop option if your comp isn't fast enough to render all frames!</P>
588 NOTE: the rendering is very CPU intensive, especially when using AA-on-X 581
589 (using aalib on X), and it's least CPU intensive on standard, 582 <P>Playing on terminal you'll get better speed and quality using the linux driver, not
590 non-framebuffer console. Use SVGATextMode to set up a big textmode, 583 curses (-aadriver linux). But therefore you need write access on /dev/vcsa&lt;terminal&gt;!
591 then enjoy! (secondary head Hercules cards rock :)) (anyone can enhance 584 That isn't autodetected by aalib, bu vo_aa tries to find the best mode.
592 fbdev to do conversion/dithering to hgafb? Would be neat :) 585 See http://aa-project.sourceforge.net/tune/ for further tuning issues.</P>
593 586
594 Use the -framedrop option if your comp isn't fast enough to render all 587 <P><B><A NAME=2.2.1.A>2.2.1.A. TV-out support</A></B></P>
595 frames! 588
596 589 <P><B><A NAME=2.2.1.A.1>2.2.1.A.1. Matrox cards</A></B></P>
597 Playing on terminal you'll get better speed and quality using the linux 590
598 driver, not curses (-aadriver linux). But therefore you need write 591 <P><I> What I'd love to see in mplayer is the the same feature that I see in my
599 access on /dev/vcsa(terminal)! That isn't autodetected by aalib, bu 592 windows box. When I start a movie in windows (in a window or in full screen)
600 vo_aa tries to find the best mode. See 593 the movie is also redirected to the tv-out and I can also see it full screen
601 http://aa-project.sourceforge.net/tune/ for further tuning issues. 594 on my tv. I love this feature and was wondering how hard it would be to add
602 595 such a feature to mplayer.</I></P>
603 596
604 <A NAME=2.2.1.A>2.2.1.A. TV-out support</A> 597 <P>It's a driver limitation. BES (Back-End Scaler, it's the overlay generator
605 598 and YUV scaling engine of G200/G400/G450 cards) works only with CRTC1.
606 599 Normally, CRTC1 (textmode, every bpp gfx and BES) is routed to HEAD1,
607 <A NAME=2.2.1.A.1>2.2.1.A.1. Matrox cards</A> 600 and CRTC2 (only 16/32bpp gfx) is routed to HEAD2 (TV-out).</P>
608 601
609 <I> What I'd love to see in mplayer is the the same feature that I see in my 602 <P>Under linux, you have two choices to get TV-out working:</P>
610 windows box. When I start a movie in windows (in a window or in full screen) 603
611 the movie is also redirected to the tv-out and I can also see it full screen 604 <P><UL>
612 on my tv. I love this feature and was wondering how hard it would be to add 605 <LI>Using X 4.0.x + the HAL driver from matrox, so you'll get dual-head
613 such a feature to mplayer.</I> 606 support, and you'll be able to redirect second output to the TV.
614 607 Unfortunately it has Macrovision encryption enabled, so it will
615 It's a driver limitation. BES (Back-End Scaler, it's the overlay generator 608 only work on directly-connected TV, no through VCR.
616 and YUV scaling engine of G200/G400/G450 cards) works only with CRTC1. 609 Other problem is that Xv doesn't work on the second head.
617 Normally, CRTC1 (textmode, every bpp gfx and BES) is routed to HEAD1, 610 (I don't know how Windows solve it, maybe it swaps the CRTCs between
618 and CRTC2 (only 16/32bpp gfx) is routed to HEAD2 (TV-out). 611 the heads, or just uses YUV framebuffer of second DAC with some trick)
619 612 <LI>Using matroxfb with dual-head support enabled (2.4.x kernels).
620 Under linux, you have two choices to get TV-out working: 613 You'll be able to get a framebuffer console (using CRTC2, so it's
621 614 slow), and TV-out (using CRTC1, with BES support).
622 1. Using X 4.0.x + the HAL driver from matrox, so you'll get dual-head 615 You have to forget X while using this kind of TV-out! :(
623 support, and you'll be able to redirect second output to the TV. 616 </UL></P>
624 Unfortunately it has Macrovision encryption enabled, so it will 617
625 only work on directly-connected TV, no through VCR. 618 <P>Follow these instructions:</P>
626 Other problem is that Xv doesn't work on the second head. 619
627 (I don't know how Windows solve it, maybe it swaps the CRTCs between 620 <P><UL>
628 the heads, or just uses YUV framebuffer of second DAC with some trick) 621 <LI>Compile all the matrox-related things to modules in the kernel.
629 622 (you MUST compile them to modules, at least I couldn't get them
630 2. Using matroxfb with dual-head support enabled (2.4.x kernels). 623 working built-in yet)
631 You'll be able to get a framebuffer console (using CRTC2, so it's 624 [reboot to new kernel & install modules, but don't load them yet!]
632 slow), and TV-out (using CRTC1, with BES support). 625 <P><CODE>
633 You have to forget X while using this kind of TV-out! :( 626 &nbsp;&nbsp;cd TVout<BR>
634 627 &nbsp;&nbsp;./compile.sh</CODE></P>
635 - Compile all the matrox-related things to modules in the kernel. 628 <LI>Run the 'modules' script from the TV-out directory of mplayer.
636 (you MUST compile them to modules, at least I couldn't get them 629 It will switch your console to framebuffer.
637 working built-in yet) 630 Change to tty1 (ALT+F1)!
638 [reboot to new kernel &amp; install modules, but don't load them yet!] 631 Now run the script 'independent', it will set up your tty's:
639 632 <P>tty 1,2: fb console, CRTC2, head 1 (monitor)<BR>
640 cd TVout 633 tty 3,4,5...: framebuffer+BES, CRTC1, head 2 (TV-out)</P>
641 ./compile.sh 634 You should run the scripts TV-* and Mon-* to set up resolutions:
642 635 <P>change to tty1 (ALT+F1), and run Mon-* (one of them)<BR>
643 - Run the 'modules' script from the TV-out directory of mplayer. 636 change to tty3 (ALT+F3) and then back to tty1 (ALT+F1)</P>
644 It will switch your console to framebuffer. 637 (this change will select tty3 on /dev/fb1 - tricky)<BR>
645 Change to tty1 (ALT+F1)! 638 <P>run TV-* (one of them)</P>
646 Now run the script 'independent', it will set up your tty's: 639 (now you'll get a console on your PAL TV - don't know about NTSC)
647 tty 1,2: fb console, CRTC2, head 1 (monitor) 640 <P>Now if you start mplayer (on tty1), the picture will show up on
648 tty 3,4,5...: framebuffer+BES, CRTC1, head 2 (TV-out) 641 the tty3, so you'll see it on your TV or second monitor.</P>
649 You should run the scripts TV-* and Mon-* to set up resolutions: 642 </UL></P>
650 change to tty1 (ALT+F1), and run Mon-* (one of them) 643
651 change to tty3 (ALT+F3) and then back to tty1 (ALT+F1) 644 <P>Yes, it is a bit 'hack' now. But I'm waiting for the marvel
652 (this change will select tty3 on /dev/fb1 - tricky) 645 project to be finished, it will provide real TV-out drivers, I hope.</P>
653 run TV-* (one of them) 646
654 (now you'll get a console on your PAL TV - don't know about NTSC) 647 <P>My current problem is that BES is working only with CRTC1. So picture
655 648 will always shown up on head routed to CRTC1 (normaly the monitor),
656 Now if you start mplayer (on tty1), the picture will show up on 649 so i have to swap CRTC's, but this way your console will framebuffer
657 the tty3, so you'll see it on your TV or second monitor. 650 (CRTC2 can't do text-mode) and a bit slow (no acceleration). :(</P>
658 651
659 Yes, it is a bit 'hack' now. But I'm waiting for the marvel 652 <P><I>Anyway i also just get monochrome output on the tv ...</I>
660 project to be finished, it will provide real TV-out drivers, I hope. 653 Maybe you have NTSC TV? Or just didn't run one of TV-* scripts.</P>
661 654
662 My current problem is that BES is working only with CRTC1. So picture 655 <BR>
663 will always shown up on head routed to CRTC1 (normaly the monitor), 656 <HR>MPlayer documentation project
664 so i have to swap CRTC's, but this way your console will framebuffer
665 (CRTC2 can't do text-mode) and a bit slow (no acceleration). :(
666
667
668 <I> anyway i also just get monochrome output on the tv ...</I>
669 Maybe you have NTSC TV? Or just didn't run one of TV-* scripts.
670
671
672 </PRE>
673 657
674 </BODY> 658 </BODY>
675
676 </HTML> 659 </HTML>