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: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: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