Difference between revisions of "VDPAU"

From MythTV Official Wiki
Jump to: navigation, search
m (User results)
m (User results)
Line 208: Line 208:
! 180.29
! 180.29
! Temporal 2x
! Temporal 2x
! r20038
! r20038 trunk
! BBC HD H.264 1080i 21Mb/s
! BBC HD H.264 1080i 21Mb/s
! Metallurgy
! Metallurgy
Line 222: Line 222:
! 180.29
! 180.29
! Temporal 2x
! Temporal 2x
! r20038
! r20038 trunk
! HD-DVD VC-1 1080p 35Mb/s
! HD-DVD VC-1 1080p 35Mb/s
! Metallurgy
! Metallurgy

Revision as of 12:31, 22 February 2009


What is it

The API is called VDPAU (Video Decode and Presentation API for Unix). It provides a large subset of PureVideo HD functionality for NVIDIA Linux, Solaris, and FreeBSD users. It in essence provides what PureVideo/DirectX Video Acceleration is on the Windows platform

Some highlights of VDPAU:

  • Defines an API for GPU-accelerated decode of MPEG-1, MPEG-2, H.264, and VC-1 bitstreams.
  • Defines an API for post-processing of decoded video, including temporal and spatial deinterlacing, inverse telecine, and noise reduction.
  • Defines an API for timestamp-based presentation of final video frames.
  • Defines an API for compositing sub-picture, on-screen display, and other UI elements.

Note that VDPAU does not address content protection issues.

Some highlights/limitations of NVIDIA's current implementation:

  • Supported on NVIDIA GPUs with the NVIDIA second generation video processors (see list further below)
  • Currently, only one video stream can be decoded at a time; we hope to lift this restriction eventually.

Nvidia Implementation

The current API documentation is here.

The most recent driver release may be obtained here here

Supported Cards

VDPAU is currently supported on the following NVIDIA GPUs (as at version 180.16 released December 12, 2008)

Desktop GPUs Mobile GPUs Motherboard GPUs Professional GPUs
  • GeForce Go 7700
  • GeForce 200 Series
  • GeForce 9 Series
  • GeForce 8300 GS
  • GeForce 84xx Series
  • GeForce 85xx Series
  • GeForce 86xx Series
  • GeForce 8800 GTS 512
  • GeForce 8800 GT
  • GeForce 8800 GS
  • GeForce 9500 GT
  • GeForce 9800 GT
  • GeForce 96xxM
  • GeForce 8200M G
  • GeForce 8800M
  • GeForce 8800M GTS
  • GeForce 8800M GTX
  • GeForce 8600M
  • GeForce 8400M
  • GeForce 9200M
  • GeForce 9300M
  • GeForce 9400M
  • GeForce 9500M
  • GeForce 9650M GT
  • GeForce 9700M
  • GeForce 9700M GT
  • GeForce 98xxM
  • GeForce 9800M GTX
  • GeForce 9800M GT
  • GeForce 9800M GS
  • GeForce 8200
  • GeForce 8300
  • GeForce 9100
  • GeForce 9300
  • GeForce 9400
  • Quadro FX 370 LP
  • Quadro NVS 450
  • Quadro FX 470
  • Quadro FX 2700M
  • Quadro FX 4800
  • Quadro FX 5800
  • Quadro CX

VC-1 support in NVIDIA's VDPAU implementation currently requires GeForce 9300 GS, GeForce 9200M GS, GeForce 9300M GS, or GeForce 9300M GS or 8200/8300/9400/9300 IGP. VC-1 is an alternative to H.264, and is a supported video codec for HD DVDs and Blu-ray Discs.

Support for the following GPUs was added with the stable driver version 180.22:

  • Quadro FX 2700M
  • GeForce 9400M G
  • GeForce 9400M
  • GeForce 9800 GT
  • GeForce 8200M G
  • GeForce Go 7700
  • GeForce 9800M GTX
  • GeForce 9800M GT
  • GeForce 9800M GS
  • GeForce 9500 GT
  • GeForce 9700M GT
  • GeForce 9650M GT
  • GeForce 9500 GT

Supported Drivers

Support started with version 180.06. Version 180.29 (6 Feb 2009) are available in 32bit and 64bit versions. They apparently fix the follow VDPAU issues:

  • Fixed a bug that caused VDPAU to display a green screen when using the overlay-based presentation queue with interlaced modes.
  • Fixed a bug that prevented VDPAU from working correctly after X server restarts on some GPUs.
  • Improved VDPAU's handling of mode switches; eliminated a crash in its mode switch recovery code and a hang in the blit-based presentation queue.
  • Fixed a bug that caused VDPAU to crash when using DisplayPort devices.
  • Fixed a potential hang in VDPAU when using the blit-based presentation queue on systems with multiple GPUs not in SLI mode.
  • Implemented missing error checking of layer data in VDPAU's VdpVideoMixerRender function.
  • Improved VDPAU's handling of setups with multiple GPUs, if a subset of the GPUs cannot be supported due to resource limitations.
  • Improved GPU video memory management coordination between the NVIDIA X driver and VDPAU.
  • Fix potential hang in VDPAU when the overlay is already in use.

MythTV Support

Trunk first supported VDPAU in November 2008.

What works?

  • Deinterlacing (select "Advanced (2x, Hw)" for best results, if video card can handle it)
  • OSD
  • Color controls

What doesn't?

  • Live TV with EPG (due to VDPAU not yet being able to decode more than one stream at once)

Issac Richards suggests making sure composite extension is disabled:

Section "Extensions"
      Option  "Composite"     "Disable"

MythTV 0.21-fixes and Ubuntu repository

Jean-Yves Avenard has posted a patch for MythTV 0.21-fixes that backports VDPAU from the development branch. He also provides a Ubuntu/Mythbuntu repository, including mplayer and the Nvidia drivers, for those running that distribution. Add to /etc/apt/sources.list:

   deb http://www.avenard.org/files/ubuntu-repos files/

In addition to "aptitude safe-upgrade", the package nvidia-glx-180 needs to be installed to replace the earlier version of nvidia-glx-*.

Unlike the support in trunk that sees steady ongoing improvements, the backport is unsupported, unofficial, and only is updated as Avenard finds time and the inclination to do so. As he says, "please do not bother [the mythtv-dev mailing list], and do not lodge bugs in the mythtv TRAC system."

Display Profiles

Setup a display profile with:

   decoder = nvidia vdpau acceleration
   video + osd renderers: vdpau 

and a second recommended as a fallback:

   decoder = ffmpeg (Standard)
   video + osd renderers: vdpau

Compiling MythTV with VDPAU

For Myth to support VDPAU it must be built in. MythTV's compilation script supports this. To enable it use the configure script and the --enable-vdpau option.

The following is an example of how to compile MythTV with VDPAU:


  ./configure --prefix=/usr --enable-proc-opt --disable-joystick-menu \
  --disable-firewire --disable-hdhomerun --disable-xvmcw --enable-xvmc-opengl \ 
  --enable-vdpau  --disable-directfb --enable-opengl-vsync


  ./configure --prefix=/usr --enable-opengl --enable-mytharchive \ 
  --disable-mythbrowser --disable-mythcontrols --disable-mythflix \ 
  --enable-mythgallery --disable-mythgame --enable-mythmusic --disable-mythnews \
  --disable-mythphone --enable-mythvideo --disable-mythweather \
  --disable-mythzoneminder --disable-mythmovies


  • No AGP cards support this feature (But PCI versions exist)
  • Warning: Do not install the vdpau beta driver unless you intend to use an NVidia-based video cards exclusively thereafter. Merely installing the nvidia driver breaks digital playback on Intel (and probably any other) video/graphics cards. The nvidia installer *replaces* standard header files (/usr/include/glext.h, glext.h,glxext.h and glx.h) and library files (/usr/lib/libGLcore.so, libGL,so, libGLU.so and libGL.la), with nvidia specific versions which breaks OpenGL playback on other graphic cards. (The 180 series drivers do appear to be usable with non-vdpau capable nvidia GPUs (6200 etc.))
  • If you wish to try an nvidia video board instead of your other video/graphic chipset, be careful. Make a mythconverg database backup, and note the SVN of your present working version. In addition, it would be wise to extract the NVidia pkg.run file (NVIDIA-LINUX....pkg.run -x) and make backups of the original files for which copies exist in the ../include/GL, ../lib and ../X11R6 folders. The package help states that the option '--no-opengl-headers' will skip installing the Nvidia OpenGL headers, however it appears that the other libraries will be replaced anyway. It also does not appear to be the case that the '--uninstall' option actually reverses the install, as the orginal files do not appear to be retained. This is a real time-killer ( and WAF killer) and may require a complete re-installation of the system if you wish to revert to a different family of GPU chip.
  • Video profiles can not filter based on video format (only by resolution). So if you wanted to use VDPAU for H.264/HD-PVR and Xv for Mpeg2 this is not currently possible.
  • Off loading to the GPU may increase its heat out-put. It may seem obvious, but check your GPU temperature and cooling arrangements.


The following configuration changes should be used to prevent issues with VDPAU when used with MythTV:

To prevent vertical and horizontal tearing of the image when viewing live tv or recordings, run the following to disable X Composite Extension (may also cure the all white/gray OSD):

   sudo nvidia-xconfig --no-composite
  • Enable OpenGL VSync within MythTV.

External Links

NVIDIA Linux Forum

User results

Chipset Onboard / Allocated Memory Driver De-interlacer SVN Ver Source OSD Theme Window Manager Display res Working CPU Usage when playing Comments
8200 IGP 512mb 180.29 Temporal 2x r20038 trunk BBC HD H.264 1080i 21Mb/s Metallurgy Terra KWin 1440x900 Yes Athlon 4850e 2.5Ghz 10-15% Some amount of tearing and visual artifacts for the first 20 seconds.
8200 IGP 512mb 180.29 Temporal 2x r20038 trunk HD-DVD VC-1 1080p 35Mb/s Metallurgy Terra KWin 1440x900 Yes Athlon 4850e 2.5Ghz 35%
Asus 8300GS 256mb Beta 180.11 None r19260 HDHomeRun mpeg2 720p and 1080i isthmus Blootube Wide Fluxbox 1080p Yes Athlon X2 64 5700 4-5% 720p is reliable but 1080 i get not enought memory errors.
Asus 8300GS 256mb Beta 180.11 None r19179 HD-PVR h.264 720p 13.5 Mbits/sec Retro MythCenter-wide Gnome 720p Yes Athlon X2 64 4200+ 4-5%
GeForce 8300 512mb Beta 180.16 Bob 2x r19260 DVB-S h.264 1080i 18 Mbits/sec Blootube MythCenter-wide KDE 1080p Yes Athlon X2 64 5200+ 10-15%
PNY 8400GS PCI 512mb Beta 180.22 OneField r19640 HDHomerun, Fusion5 HD 720p and 1080i Gray ProjectGrayhem-wide Fluxbox 1080p Yes Athlon 64 3200+ 5-15% OSD causes stuttering, only OneField deinterlacing is usable
Sparkle 8400GS PCI 512mb Beta 180.11 Basic 2x HW r19298 HDHomerun, 720p and 1080i Default (Blue) G.A.N.T. fvwm VGA (analog) 1024x768 Yes Intel Atom 330, 10-20% I'm no expert but it looks awesome to me! OSD seems ok.
PNY GeForce 8400 GS PCI 512mb Beta 180.16 One Field (1x, Hw) r19597 1080i DVI Default (Blue) Retro Gnome 1080i Yes Intel Duo Core 2 2.2Ghz, 10% Looks great and playback is good. OSD causes play back to stutter a little bit. Tweaking would probably fix.
Sparkle 8400GS PCI 512mb Beta 180.16 Basic 2x HW r19298 HDHomerun 1080i, PVR-150 SD mpeg2 Default (Blue) G.A.N.T. fvwm VGA (analog) 1024x768 No Intel Atom 330, 10-20% No video. Rolled back driver and things work again. Haven't tried building new myth.
Gigabyte GA-E7AUM-DS2H (9400 IGP onboard) 128mb(shared) 180.22 Advanced 2x HW r19631 TinyTwin (1080i+720p) Blootube G.A.N.T xfce 1080p Yes Pentium D 2.8 0-5% Usually perfect, no tearing, plays VC-1, occasional stuttering, regular "Serious error detected", system needs more RAM
Asus EN8400GS Silent PCIe (G98 chipset, 567 MHz Core Clock) 512mb 180.22 Advanced 2x HW r19822 HDHomerun (1080i+720p), HDPVR (720p), HDDVD 1080p (VC1), DVD 480p Isthmus Blootube wide Gnome 1080p Yes Athlon X2 3800 (939) 5% -10% Almost perfect, plays VC-1 - H264 and MPEG2, occasional stuttering
Asus EN8400GS Silent PCIe (G98 chipset, 567 MHz Core Clock) 512mb 180.29 Temporal 1x HW 0.21-fixes w/VDPAU patch OTA HDTV (1080i & 720p) Retro Retro Fluxbox 1080p Yes AMD BE-2350 (2.1 GHz) 2% - 5% Temporal 1x HW and One Field are the only deinterlacers that don't cause jerky picture and out of sync audio. All h264 test files from HD Playback Reports are nice and smooth.
Club 3D 9400GT Silent PCI-E (G96) 512mb 180.22 Advanced 2x HW r19693 SD MPEG-2 DVB, SD H.264, 720p H.264 sample videos Default G.A.N.T. Xfce4 1280x768 DVI->hdmi Yes Athlon64 3000+ (1.8GHz) SD: 5-8%, HD: 10-20% Occational crashes. Was impossible to play any HD without VDPAU, so significant improvement!
Asus GeForce 8600 GT Silent 512mb 180.26 Advanced 2x HW r19823 0.21-fixes SD MPEG-2 DVB, SD H.264, 720p H.264 sample videos blootube wide blootube KDE3.5.10 1600x1050 DVI->hdmi & 960x540->VGA Yes Core2Duo (2,66GHz) SD: 11%, HD: 5% Little tearing, SD slower as it uses ffmpeg.
EVGA e-GeForce 8500GT 1000mb 180.25 Advanced 2x HW r19825 SD MPEG-2 DVB, SD H.264, 720p H.264 hdpvr Default ProjectGrayhem-wide Xfce4 1080p DVI->hdmi Yes AMD Athlon 64 X2 Dual Core Processor 3600+ SD: 3-5%, HD: 4-5% WOW!
GIGABYTE GA-E7AUM-DS2H 9400GT IGP 512mb 180.22 Advanced 2x HW r19885 720p H.264 HD-PVR (11Mbps) Default MythCenter RatPoison VGA (Analog) 1024x768 Yes Pentium Core 2 Duo 2.8Ghz HD: 1-2% Slight stuttering w/ OSD, but generally, WOW
Asus EN8400GS Silent PCIe (G98 chipset, 612 MHz GPU Clock) 512mb 180.29 Temporal 2x HW 0.21-fixes + patch r20005 HDHomeRun (1080i+720p), FireWire (1080i+720p) Retro Retro Ratpoison 1080p Yes Pentium 4 3000 5% -10% Temporal 2x/1x work great, albeit with slight stuttering when OSD displays; Advanced 2x/1x still stutter. Bob 2x works too, but pointless given Temporal 2x.
GeForce 9300. Motherboard Asus P5N7A-VM 256MB 180.22 One Field 1x HW 0.21-fixes + patch From disk (originally from pcHDTV HD-5500) Mythbuntu Mythbuntu Xfce 1080p Yes Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz 10% overall Slight oddness on top line. Before VDPAU, CPU usage at .74. I am including complete load average, mythfrontend.real at 5-7%.
GeForce 9200. Motherboard Jetway JNC62K 512MB (shared) 180.27 One Field 1x HW 0.21-fixes + Jean-Yves Avenard testing patches SD MPEG-2 DVB, SD H.264, 720p H.264 sample videos Mythbuntu Mythbuntu Xfce 1080p Yes AMD Athlon 64 X2 4850e 2.5GHz 2-5% No problems so far - before VDPAU, CPU usage at 80% and whirring fans.