Difference between revisions of "XvMC"

From MythTV Official Wiki
Jump to: navigation, search
(Example CPU Savings)
(Unichrome)
Line 70: Line 70:
 
Testimony: I use this driver with a CN400 with 2D and MythTV --enable-xvmc-pro...[[User:Krisrose|Kris Rose]], February 2006.
 
Testimony: I use this driver with a CN400 with 2D and MythTV --enable-xvmc-pro...[[User:Krisrose|Kris Rose]], February 2006.
  
Open source is where hope is for more fancy support but the situation is awkward as the project has forked into [http://unichrome.sourceforge.net/ Unichrome] and [http://www.openchrome.org/ openChrome].
+
Open source is where the hope for more fancy support is, but the situation is awkward as the original project, [http://unichrome.sourceforge.net/ Unichrome] has stopped supporting XvMC. The via driver currently in xorg does include XvMC support for both Standard and Pro chipsets as it is following the forked [http://www.openchrome.org/ openChrome] project.
 +
 
 +
Ivor from the [http://www.openchrome.org/ openChrome] project is currently working on adding mpeg4 support.
  
 
==== Intel 810 ====
 
==== Intel 810 ====

Revision as of 13:07, 17 February 2006

X-Video Motion Compensation, or XvMC, allows video programs to only send a graphics card differences from the last frame instead of sending a whole frame. XvMC can be used to reduce CPU utilization when playing back MPEG-2 video. In theory it should also reduce bus bandwidth requirements. Savings will be most dramatic with slow CPUs or when playing HD content. MythTV can be compiled to use XvMC for native playback. External players such as Xine and Mplayer can also be compiled to support XvMC.


Software

XvMC is a software library provided by the X11 system to provide user applications with a standard Application Programming Interface, or API, to hardware specific features.

Supported Video Formats

Currently, only MPEG-2 is supported. This is usually a hardware limitation. As an exception, one of the Unichrome chips is capable of XvMC accelerated MPEG-4 playback, but the Unichrome driver doesn't support that functionality at the time of this writing.

Drivers

Each hardware video card capable of XvMC video acceleration requires a software driver to enable these features. Below is a list of the recommended software drivers and driver versions for each supported hardware type.

Nvidia

There are currently two X11 Nvidia drivers available: Open Source and Proprietary Binary. However, most, if not all people running an Nvidia card with MythTV use the binary driver. See below for an explanation of each driver. Recent NVidia cards have support for full MPEG2 offload (iDCT + MC), and even MPEG4 offload not addressed in XvMC. The GeForce4 MX and GeForce FX series cards also support full MPEG2 offload. The GeForce 4 (non-MX) series cards and earlier support only hardware motion compensation, not the more CPU intensive iDCT offload.

Proprietary Binary
Status This driver is full featured and actively maintained and developed directly by Nvidia Corp. Unless otherwise noted, any mention of Nvidia hardware on the MythTV wiki, forums, or mailing lists usually imply the use of the binary Nvidia driver.
Supports XvMC? YES
How to Obtain? This driver is not included with the XOrg X11 Server for licensing reasons. It is available as a third party download. Usually your linux distribution will have a package available in RPM, Deb, ebuild, or other format.
Recommended Version As of 2006-02-16, the currently recommended driver version is: 1.0.7676
X11 driver name nvidia
Open Source
Status Basic functionality. Only supports 2D hardware acceleration. (no 3D/OpenGL acceleration)
Supports XvMC? NO
How to Obtain? Included with the XOrg X11 Server.
X11 driver name nv

Unichrome

"Unichrome" is the nickname for the onboard graphics of Via chipsets.

Status 2D and Xv supported in Xorg via driver for CLE266 and KM400/KN400 chipsets with K8M800/K8N800, PM8X0 and CN400 still under development
Supports XvMC? YES
How to Obtain? Included in recent versions of Xorg (6.9 and 7.0)
Recommended Version Xorg (6.9 and 7.0)

Testimony: I use this driver with a CN400 with 2D and MythTV --enable-xvmc-pro...Kris Rose, February 2006.

Open source is where the hope for more fancy support is, but the situation is awkward as the original project, Unichrome has stopped supporting XvMC. The via driver currently in xorg does include XvMC support for both Standard and Pro chipsets as it is following the forked openChrome project.

Ivor from the openChrome project is currently working on adding mpeg4 support.

Intel 810

(Add some general info about i810 hardware here)

Status Full featured driver. Supports 2D and 3D hardware acceleration.
Supports XvMC? YES (Supports offload of Motion Compensation, but not the more CPU intensive iDCT)
How to Obtain? Included with the XOrg X11 Server.
Recommended Version Any recent version should be fine as this driver is fairly mature and doesn't change often.
X11 driver name i810
NOTES: The i810 driver isn't mentioned much in the MythTV community. The chipset this driver supports is probably out of production, so hardware may be scarce. It is unknown to the author whether the i810 works with MythTV for XvMC video acceleration.

MythTV

Before MythTV can make use of XvMC hardware support, it first has to be built with XvMC support.

Binary Distributions

The following binary linux distributions support XvMC out of the box:
(list distros here)

Compiling

For a more hands-on approach, one can compile MythTV directly from source.

Source

If compiling manually:

./configure --enable-xvmc
Gentoo

If installing MythTV on Gentoo Linux, make sure the "nvidia" or "unichrome" USE flags are set. This can usually be set on a per package basis in the following file:

/etc/portage/package.use

Configuration

After MythTV has been installed, it needs to be configured to utilize XvMC.

  1. In MythTV's frontend menus, please navigate to:
    Setup -> TV Settings -> Playback
  2. Next, change the "Preferred MPEG2 Decoder" to "Standard XvMC"
  3. Make sure "Extra audio buffering" is checked.

That's it! XvMC should be enabled. Now play a few Recordings and see what happens. If problems occur, check the Tips and Tricks section below for more info.

MPlayer

MPlayer includes an XvMC output plugin. To use it, try this:

mplayer -vo xvmc -vc ffmpeg12c

(assuming you are running mplayer with XvMC support compiled in)

Xine

Xine's plugin is oddly named xxmc (xx instead of xv). Try this:

xine -V xxmc 

(assuming, of course, that xine has been compiled with XvMC support.)

Example CPU Savings

CPU RAM Video Card Content CPU w/XvMC CPU w/o XvMC Notes
2.93Ghz Celeron D 1Gb DDR 3200 Nvidia FX 5200 SD 8-12% 10-14%
AMD Athlon XP 2400 512mb DDR 3200 Nvidia FX 6200 HD (1080i) 20-25% 80% XvMC figure is w/BOB deinterlace enabled. (of course XvMC still locks to lock on "prebuffer" in MythTV 0.18 a lot)
AMD Athlon XP 1600 1GB DDR Nvidia 6800LE SD 15% 25%
AMD Athlon 800 768MB PC100 Nvidia Geforce 2MX SD 15%-20% 45-50%
VIA C3 Nehemiah 1GHz 20% can hardly play mpeg2 without XvMC
Intel P4 2.26 HD 50% 95%+
AMD 2500+ 1GB FX5500 256MB HD 50% 99%+
Via C3 Nehemiah 1.33GHz 1GB VIA CN400 SD 12% 90%
(Please add your example Hardware stats here!)

Tips and Tricks

XvMC sounds like a dream come true for those wanting to play HD content with a slower system, but unfortunately it's not always perfect. Even with XvMC and low CPU usage, many still experience problems with prebuffering pauses, mild to moderate audio or video stuttering, problems with the OSD, and other issues. If their CPU is fast enough, many simply turn off XvMC as a last resort. But this guide hopes to help the reader make the most of XvMC and avoid frustration. Here are some suggestions that may help:

Prebuffering Pause or stutter with Nvidia

  • Try disabling OpenGL VSync.
  • Try setting this in your "Device" section in your xorg.conf:
Option "NVAGP" "1"

OSD Flicker

If you are using MythTV version 0.18 and you experience severe OSD stutter or flicker when XvMC is enabled, try upgrading to 0.19. The OSD flicker is fixed for the author in 0.19 with an Nvidia FX 5200.

Greyscale OSD

MythTV version 0.19 ships with a hack to enable full color OSD with XvMC enabled on Nvidia 4 & 5 series cards ONLY.
(i.e. Nvidia FX 5200 is a 5 series card, 6000 is a 6 series card)

WARNING: if you have a non-nvidia card or an nvidia 6 or 7 series card this hack won't help. The nvidia 6 and 7 series cards lack the chroma keying and color & contrast adjust features that the older 4 and 5 series cards had. That is why this guide refers to this feature in 0.19 as a "hack".
(Thanks to Daniel Kristjansson, the author of the chromakey code, for this info!)

If you have an nvidia 4 or 5 series card, please read on:
The hack is disabled by default. The code change is described here.

To enable the hack under 0.19, do this:

  • Make a change to your xorg.conf file. Add this to your Devices section:
Option "XvmcUsesTextures" "false" 
  • Make a change to the "settings" table in MythTV's MySQL database. You can access your MySQL mythconverg database from the command line like this:
mysql -u root -p mythconverg

You will be prompted for a password. If you don't remember setting one up, try just pressing the ENTER key.

Here is the SQL statement you should use to make the change:

INSERT INTO settings SET value='UseChromaKeyOSD',data='1',hostname='yourhost';

But change 'yourhost' to the hostname that your frontend is running on. If you're not sure what your hostname is, run `hostname` on the command line to find out.

  • Now restart X11 (for the xorg.conf change to take effect) and your frontend (for the SQL change to take effect) and see if it works!

Alternatives

There are alternative methods for hardware assisted MPEG-2 playback of standard definition video:

External Links