xine is a free, GPL-licensed video player for unix-like systems. The software is based on a modular, advanced multi-threaded architecture composed of:
The core of xine is responsible for synchronizing audio, video and overlays. It provides high performance comunication functionality between modules, logging capability, unified configuration system, On Screen Display support, fast MMX/MMXEXT/SSE memory transfers, among other important things.
- input plugins
They provide input data to xine and may be seen as an abstraction layer for DVDs, files, http, pipes, VCDs so that the rest of xine does not need to know from where the data is coming. Several input plugins for xine are already available over the internet from third party programmers.
- demuxer plugins
These plugins are responsible for understanding file formats like AVI, MOV, ASF and others. These file formats don't define how video and audio are encoded but how the encoded data is mixed together (multiplexed). An AVI file, for example, may have DivX4 video and MP3 audio, MPEG2 video and AC3 audio, etc.
- decoder plugins
These plugins receive the encoded data (video, audio or subtitles) and deliver them uncompressed to the engine to be played or shown. Examples of encoding formats (also called "codecs") are MPEG2, MP3, Ogg Vorbis and Windows Media Video 7/8/9.
- output plugins
xine runs on a wide variety of hardware and operating systems therefore it need to have different means of displaying video and audio. These plugins are like drivers, they talk directly to the system so xine-engine does not need to handle the details. Some video output plugins have been developed to utilize several hardware capabilities like color conversion, scaling and refresh sync to provide the best multimedia experience and at the same time, requiring less CPU processing.
- post effect plugins
These can be use to apply arbitrary effects to video and audio before they are sent to output. Examples include visual plugins like GOOM (generates colorful images from the music being played), audio filters like echo, equalizer or even a video picture-in-picture plugin playing more than one stream at the same time.
- xine is fast
All included decoders are optimized to use MMX, MMXEXT, SSE and 3DNow! acceleration if available. The well designed architecture moves data efficiently across plugins without requiring extra memory copies to be made. Multi-threaded implementation provide big gains on SMP systems.
- xine is extensible
Plugins are probed on startup and new ones may be installed from third party (although the most important are already provided).
- xine is reusable
All described features are available from a library and may be called from other applications. A default X11 GUI (xine-ui) is available but any other frontend can use the xine-lib too. There are several of them already available: GTK+ 2 (gxine; sinek, GQoob), Gnome 2 (Totem), scriptable console (toxine), KDE (kxine), KDE multimedia (xine aRts plugin) and even a Netscape/Mozilla plugin. (Some frontends may be at beta stage.)
- Skinnable GUI
- Download and installation of new skins from the internet
- Navigation controls (seeking, pause, fast, slow, next chapter, etc)
- Linux InfraRed Control support (LIRC)
- On Screen Display features
- DVD and external subtitles
- DVD/VCD menus
- Audio and subtitle channel selection
- Closed Caption support
- Brightness, contrast, audio volume, hue, saturation adjusting (requires hardware/driver support)
- Image snapshot
- Audio resampling
- Software deinterlacing algorithms
- 2-3 pulldown detection (tvtime plugin)
- Configuration dialog
- Aspect ratio changing
- Fullscreen display
- DTS passthrough
- TV fullscreen support using nvtvd
- Streaming playback support
Supported file formats
Note: xine does not support locked/encrypted DVDs, as there seem to be legal problems in that area. At this point it is unclear what the legal implications of providing that functionality are.
However, xine tries to support all features DVD or other enhanced media types offer.
DVD menu support in xine would not have been possible without the kind support from ogle.
- XVideo - XFree86 extension providing hardware YUV->RGB conversion and scaling.
- XShm - Standard X11 displaying with (optional) shared memory support.
- OpenGL - usefull on workstations
- SDL - Simple DirectMedia Library with multiplataform support.
- ASCII Art library - render video using console caracters.
- Syncfb - Matrox G200/G400 hardware overlay with color conversion, scaling and refresh sync using a special kernel module.
- Linux Framebuffer device - provide direct access to videocard memory through kernel drivers.
- VIDIX - Provides direct access to hardware including Matrox G200/400, ATI Mach64, 3DRage, Radeon and Rage128, 3DLabs Permedia3. (may only work as root)
- pgx64 - Sun PGX64/PGX24 output plugin.
- OSS (Open Sound System)
- ALSA 0.9 (Advanced Linux Sound Architecture)
- Irix Audio
- Sun Audio
- aRts (KDE soundserver)
- ESD (Enlightened Sound Daemon - not recommended)
Supported network (Webcasting/Streaming) protocols
- MMS (Microsoft Media)
- PNM (Real Media)
- RTSP (Real Media and others)
- raw TCP socket streaming (tcp://-style mrls)
Supported multimedia hardware boards
- DXR3 (EM8300) - MPEG 1/2 decoder with TV output
- DVB (Digital TV) cards like the Hauppauge WinTV NOVA
- Video 4 Linux (V4L) - video capturing board
- WinTV-PVR 250/350 pci (ivtv driver)