8.15. VIDIX
Prev | Chapter 8. Video output devices | Next

## 8.15. VIDIX

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:

1. Download the development version of svgalib (for example 1.9.17), OR download a version made by Alex especially for usage with MPlayer (it doesn't need the svgalib source to compile) from here.

2. 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.

3. To create the necessary devices in the `/dev` directory, do a

       make device

   in the `svgalib_helper` dir, as root.

4. Move the `svgalib_helper` directory to the `vidix` subdirectory of the MPlayer source tree.

5. Remove the comment before the CFLAGS line containing the "svgalib_helper" string from `vidix/Makefile`.

6. Recompile.

### 8.15.1. ATI cards

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.

### 8.15.2. Matrox cards

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

### 8.15.3. Trident cards

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.

### 8.15.4. 3DLabs cards

Although there is a driver for the 3DLabs GLINT R3 and Permedia3 chips, no one has tested it, so reports are welcome.

### 8.15.5. nVidia cards

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

### 8.15.6. SiS cards

This is very experimental code, just like nvidia_vid.

It's been tested on SiS 650/651/740 (the most common chipsets used in the SiS versions of the "Shuttle XPC" barebones boxes out there)

Reports awaited!

Prev | Up | Next
8.14. X11 | Home | 8.16. DirectFB