PREAMBLE. VIDIX is the abbreviation for VIDeo Interface for *niX. VIDIX was designed and introduced as an interface for fast user-space drivers providing such video performance as mga_vid does for Matrox cards. It's also very portable.
This interface was designed as an attempt to fit existing video acceleration interfaces (known as mga_vid, rage128_vid, radeon_vid, pm3_vid) into a fixed scheme. It provides a high level interface to chips which are known as BES (BackEnd scalers) or OV (Video Overlays). It doesn't provide low level interface to things which are known as graphics servers. (I don't want to compete with X11 team in graphics mode switching). I.e. main goal of this interface is to maximize the speed of video playback.
USAGE
You can use standalone video output driver: -vo xvidix. This driver was developed as X11's front end to VIDIX technology. It requires X server and can work only under X server. Note that, as it directly accesses the hardware and circumvents the X driver, pixmaps cached in the graphics card's memory may be corrupted. You can prevent this by limiting the amount of video memory used by X with the XF86Config option "VideoRam" in the device section. You should set this to the amount of memory installed on your card minus 4MB. If you have less than 8MB of video ram, you can use the option "XaaNoPixmapCache" in the screen section instead.
There is a console VIDIX driver: -vo cvidix. This requires a working and initialized framebuffer for most cards (or else you'll just mess up the screen), and you'll have a similar effect as with -vo mga or -vo fbdev. nVidia cards however are able to output truly graphical video on a real text console. See the nvidia_vid section for more information. To get rid of text on the borders and the blinking cursor, try something like
setterm -cursor off > /dev/tty9
(assuming tty9
is unused so far) and then
switch to tty9
.
On the other hand, -colorkey 0 should give you a video
running in the "background", though this depends on the colorkey
functionality to work right.
You can use VIDIX subdevice which was applied to several video output drivers, such as: -vo vesa:vidix (Linux only) and -vo fbdev:vidix.
Indeed it doesn't matter which video output driver is used with VIDIX.
REQUIREMENTS
Video card should be in graphics mode (except nVidia cards with the -vo cvidix output driver).
MPlayer's video output driver should know active video mode and be able to tell to VIDIX subdevice some video characteristics of server.
USAGE METHODS. When VIDIX is used as subdevice (-vo vesa:vidix) then video mode configuration is performed by video output device (vo_server in short). Therefore you can pass into command line of MPlayer the same keys as for vo_server. In addition it understands -double key as globally visible parameter. (I recommend using this key with VIDIX at least for ATI's card). As for -vo xvidix, currently it recognizes the following options: -fs -zoom -x -y -double.
Also you can specify VIDIX's driver directly as third subargument in command line:
mplayer -vo xvidix:mga_vid.so -fs -zoom -double file.avi
or
mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 file.avi
But it's dangerous, and you shouldn't do that. In this case given driver will be forced and result is unpredictable (it may freeze your computer). You should do that ONLY if you are absolutely sure it will work, and MPlayer doesn't do it automatically. Please tell about it to the developers. The right way is to use VIDIX without arguments to enable driver autodetection.
Since VIDIX requires direct hardware access you can either run it as root or set the SUID bit on the MPlayer binary (Warning: This is a security risk!). Alternatively, you can use a special kernel module, like this:
Download the development version of svgalib (1.9.x).
Compile the module in the svgalib_helper directory (it can be found inside the svgalib-1.9.17/kernel/ directory if you've downloaded the source from the svgalib site) and insmod it.
To create the necessary devices in the /dev directory, do a
make device
in the svgalib_helper dir, as root.
Then run configure again and pass the parameter
--enable-svgalib_helper as well as
--extra-cflags=/path/to/svgalib_helper/sources/
kernel/svgalib_helper,
where /path/to/svgalib_helper/sources/
has to be
adjusted to wherever you extracted svgalib_helper sources.
Recompile.
Currently most ATI cards are supported natively, from Mach64 to the newest Radeons.
There are two compiled binaries: radeon_vid for Radeon and rage128_vid for Rage 128 cards. You may force one or let the VIDIX system autoprobe all available drivers.
Matrox G200, G400, G450 and G550 have been reported to work.
The driver supports video equalizers and should be nearly as fast as the Matrox framebuffer
There is a driver available for the Trident Cyberblade/i1 chipset, which can be found on VIA Epia motherboards.
The driver was written and is maintained by Alastair M. Robinson.
Although there is a driver for the 3DLabs GLINT R3 and Permedia3 chips, no one has tested it, so reports are welcome.
An unique feature of the nvidia_vid driver is its ability to display video on plain, pure, text-only console - with no framebuffer or X magic whatsoever. For this purpose, we'll have to use the cvidix video output, as the following example shows:
mplayer -vo cvidix example.avi