mirror of https://github.com/mpv-player/mpv
200 lines
7.9 KiB
Plaintext
200 lines
7.9 KiB
Plaintext
|
|
Videocards with hardware acceleration:
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* read DOCS/MTRR too!
|
|
|
|
"Hardware acceleration" usually means hardware YUV conversion, scaling,
|
|
bilinear filtering. Under Linux, there are several ways to access it:
|
|
|
|
I. The Xv (XVideo) extension of XFree86 4.0.2
|
|
I.1. Card-specific notes/settings
|
|
II. OpenGL drivers with glTexSubImage() support
|
|
III. Native card-specific drivers, using special abilities of some cards
|
|
IV. DGA - direct graphic access. no YUV & scaling, but faster than raw X11
|
|
V. Not really acceleration, but...
|
|
|
|
Now, let's see them in details:
|
|
|
|
But before reading this, read DOCS/MTRR, and check your /proc/mtrr.
|
|
Believe me, it's worth it! Speeds things up more than 5 times on P3!!!
|
|
|
|
I. Under XFree86 4.0.2 or newer, using the XVideo extension:
|
|
this is what the option '-vo xv' uses.
|
|
|
|
In order to make this work, be sure to check the following:
|
|
|
|
1. You use XFree86 4.0.2 or newer (former versions don't have XVideo)
|
|
|
|
2. Your card actually supports harware acceleration (modern cards do)
|
|
|
|
3. X loads the XVideo extension, it's something like this:
|
|
(II) Loading extension XVideo
|
|
in /var/log/XFree86.0.log
|
|
NOTE : this loads only the XFree86's extension. In a good install, this is
|
|
always loaded, and doesn't mean that the _card's_ XVideo support is
|
|
loaded!
|
|
|
|
4. Your card has Xv support under Linux. To check, try 'xvinfo', it is the
|
|
part of the XFree86 distribution. It should display a long text, similar
|
|
to this:
|
|
|
|
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)
|
|
(...etc...)
|
|
|
|
It must support YUY2 packed, and YV12 planar pixel formats to be
|
|
usable with MPlayer.
|
|
|
|
I.1.
|
|
a, If xvinfo doesn't show these, but XVideo extension is loaded and you're
|
|
sure your card can do YUV conversion,
|
|
- 3dfx voodoo3/banshee users download a new DRI from
|
|
http://dri.sourceforge.net (or possibly use X 4.1.0)
|
|
- S3 Savage4 users download XFree86 >= 4.0.3 (4.1.0 preferred)
|
|
- nVidia users sell their card.. or download the nVidia driver from
|
|
nVidia's website
|
|
b, The GATOS driver (for ATI cards) has VSYNC enabled by default. It means
|
|
that decoding speed (!) is synced to the monitor's refresh rate. If
|
|
playing seems to be slow, try disabling VSYNC somehow, or set refresh
|
|
rate to n*(fps of the movie) Hz.
|
|
|
|
5. Be sure MPlayer is compiled with the "xv" target. "./configure" should say:
|
|
Checking for Xv ... yes
|
|
|
|
6. If all is fine, try the option '-vo xv' . It should work.
|
|
(if it doesn't, send us a bugreport. See the BUGREPORTS on how to do this.)
|
|
|
|
|
|
II. OpenGL drivers with *working* *fast* glTexSubImage() support.
|
|
|
|
The old Utah-GLX drivers (for X 3.3.6) have it, with all cards.
|
|
See http://utah-glx.sourceforge.net for details about how to install it.
|
|
|
|
DRI >= 4.0.3 supports it only with Matrox cards, and Radeon.
|
|
See dri.sourceforge.net for download, and installation instructions.
|
|
|
|
III. Native card-specific drivers
|
|
|
|
There are 3 native drivers for Linux:
|
|
1. Matrox G200/G400/G450 BES (Back-End Scaler) support -> mga_vid kernel drv.
|
|
It's active developed by me (A'rpi), and it has hardware VSYNC support
|
|
with triple buffering. It works on both framebuffer console and under X.
|
|
|
|
To use, simply compile the mga_vid.o in the drivers/ subdir (type: make)
|
|
create /dev/mga_vid device :
|
|
mknod /dev/mga_vid c 178 0
|
|
and load the driver with insmod mga_vid.o. You should verify the memory size
|
|
detection using the 'dmesg' command. If it's bad, use the mga_ram_size
|
|
option (rmmod mga_vid first), specify card's memory size in MB:
|
|
insmod mga_vid.o mga_ram_size=16
|
|
To make it load/unload automatically when needed, insert the following line
|
|
at the end of /etc/modules.conf :
|
|
alias char-major-178 mga_vid
|
|
Then run
|
|
depmod -a
|
|
|
|
Using it from MPlayer: (you should re-compile it with mga_vid support...)
|
|
|
|
Use the 'mga' vo driver on framebuffer console (matroxfb): -vo mga
|
|
and use the xmga driver for X 3.3.x: -vo xmga
|
|
|
|
Note: it works under X 4.0.2 too, but it conflicts with the Xv driver,
|
|
so avoid using both. Usually X restart or reboot needs to get Xv usable
|
|
again :(
|
|
|
|
If you have a dual-head G400, and a TV or second monitor connected to head2,
|
|
then you can watch movies on it: read DOCS/TVout-G400 for details (big hack)
|
|
|
|
2. SiS 6326 YUV Framebuffer driver -> sis_vid kernel driver
|
|
Its interface should be compatible with the mga_vid, but the driver
|
|
was not updated after the mga_vid changes, so it's outdated now.
|
|
Volunteers needed to test it and bring the code up-to-date.
|
|
|
|
3. 3dfx (which ones?) YUV+scaler support, using /dev/3dfx (tdfx.o driver?)
|
|
The /dev/3dfx kernel driver exists only for 2.2.x kernels, for use with
|
|
Glide 2.x Linux ports. It's not tested with MPlayer, and so no more
|
|
supported. Volunteers needed to test it and bring the code up-to-date.
|
|
|
|
|
|
IV. If your card lacks hardware acceleration, you can still boost your fps by
|
|
using the DGA driver:
|
|
|
|
1. Make sure X loads the DGA extension:
|
|
(II) Loading extension XFree86-DGA
|
|
(you see, XFree86 4.0.x or greater is VERY RECOMMENDED!)
|
|
2. MPlayer's DGA driver is autodetected on ./configure, or you can force it
|
|
with --enable-dga.
|
|
3. If the driver couldn't switch to a smaller resolution, experiment with
|
|
switches -vm (only with X 3.3.x), -fs, -bpp, -zoom to find a video mode that
|
|
the movie fits in. There is no converter right now.. :(
|
|
4. Become ROOT. DGA needs root access to be able to write directly video memory.
|
|
If you want to run it as user, then install MPlayer SUID root:
|
|
'chown root /usr/local/bin/mplayer'
|
|
'chmod 750 /usr/local/bin/mplayer'
|
|
'chmod +s /usr/local/bin/mplayer'
|
|
Now it works as a simple user, too.
|
|
!!!! BUT STAY TUNED !!!!
|
|
This is a BIG security risk! Never do this on a server or on a computer
|
|
can be accessed by more people than only you because they can gain root
|
|
privilegies through suid root mplayer.
|
|
!!!! SO YOU HAVE BEEN WARNED ... !!!!
|
|
5. Use '-vo dga' option, and there you go! (hope so:)
|
|
6. Try if the '-vo sdl -sdl dga' options work for you! It's much faster!!!
|
|
|
|
If you have fast enough CPU (P3 800 for example) you can try fsdga for
|
|
fullscreen mpeg playing (using software YUV->RGB scaling):
|
|
mplayer -vo fsdga ...
|
|
|
|
|
|
V. Not really acceleration, but...
|
|
|
|
a, If you don't have X...
|
|
...use the SVGAlib target! Be sure not to use the -fs switch, since it
|
|
toggles the usage of the software scaler, and it's SLOOOW now, unless you
|
|
have a real fast CPU (and/or MTRR?). :(
|
|
|
|
Of course you'll have to install svgalib and its development package in
|
|
order for MPlayer build its SVGAlib driver (autodetected, but can be
|
|
forced), and don't forget to edit /etc/vga/libvga.config to suit your
|
|
card & monitor.
|
|
|
|
Try the aalib target ('-vo sdl -sdl aalib'), it's great! :)
|
|
|
|
b, You want to use framebuffer...
|
|
... Whether to build the FBdev target is autodetected during ./configure .
|
|
Read the framebuffer documentation in the kernel sources
|
|
(Documentation/fb/*) for info on how to enable it, etc.. !
|
|
|
|
... but your card doesn't support VBE 2.0 standard (older ISA/PCI
|
|
cards, such as S3 Trio64), only VBE 1.2 (or older?) :
|
|
Well, VESAfb is still available, but you'll have to load SciTech Display
|
|
Doctor (formerly UniVBE) before booting Linux. Use a DOS boot disk or
|
|
whatever. And don't forget to register your UniVBE ;))
|
|
|
|
NOTE : FBdev video mode changing _does not work_ with the VESA framebuffer,
|
|
and don't ask for it, since it's not an MPlayer limitation.
|
|
|
|
Gabucino & A'rpi
|
|
|