VDPAU

From MythTV Official Wiki
(Redirected from Vdpau)
Jump to: navigation, search
Wikipedia-logo-en.png
Wikipedia has an article on:

General

What is it

VDPAU (Video Decode and Presentation API for Unix) lets Nvidia and AMD/ATI uvd cards play video with hardware acceleration. It lets any Linux, Solaris, and FreeBSD system play files, including highly complex H.264 formats produced by the Hauppauge HD-PVR, that would otherwise require a high-end multicore CPU.

It in essence provides what PureVideo/DirectX Video Acceleration is on the Windows platform. In addition to updated NVIDIA binary drivers or the open source ATI/AMD driver that support the API, extensive documentation is available.

Some highlights of VDPAU:

  • Defines an API for GPU-accelerated decode of MPEG-1, MPEG-2, WMV, H.264, and VC-1 bitstreams.
    • GT2xx and newer GPUs can additionally decode ASP (divx/xvid/mpeg4)
  • 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; NVIDIA hopes to lift this restriction eventually.

Supported Cards

Nvidia

VDPAU is currently supported on the following NVIDIA GPUs (driver version 180.44). An up-to-date list is available at the Nvidia link given below under 'External Links'. Feature Set, when known, is reflected in parenthesis (A/B/C). See more details regarding feature set capabilities here and the nvidia driver readme Appendix A. Supported NVIDIA GPU Products

(1) GPUs with this note may not support H.264 streams with the following widths: 49, 54, 59, 64, 113, 118, 123, 128 macroblocks (769-784, 849-864, 929-944, 1009-1024, 1793-1808, 1873-1888, 1953-1968, 2033-2048 pixels).

Feat. Desktop GPUs Mobile GPUs Motherboard GPUs Professional GPUs Mobile Pro. GPUs

A

  • GeForce 8400 GS (1)
  • GeForce 8500 GT
  • GeForce 8600 GS
  • GeForce 8600 GT
  • GeForce 8600 GTS
  • GeForce 8800 GS
  • GeForce 8800 GT
  • GeForce 8800 GTS 512
  • GeForce 9400 GT
  • GeForce 9500 GS
  • GeForce 9500 GT
  • GeForce 9600 GS
  • GeForce 9600 GSO
  • GeForce 9600 GSO 512
  • GeForce 9600 GT
  • GeForce 9650 S
  • GeForce 9800 GT
  • GeForce 9800 GTX+
  • GeForce 9800 GTX/9800 GTX+
  • GeForce 9800 GX2
  • GeForce GT 120
  • GeForce GT 130
  • GeForce GT 140
  • GeForce GT 230
  • GeForce GT 330
  • GeForce GTS 240
  • GeForce GTS 250
  • GeForce GTX 260
  • GeForce GTX 275
  • GeForce GTX 280
  • GeForce GTX 285
  • GeForce GTX 295
  • GeForce 8400M G
  • GeForce 8400M GS
  • GeForce 8400M GT
  • GeForce 8600M GS
  • GeForce 8600M GT
  • GeForce 8700M GT
  • GeForce 8800M GTS
  • GeForce 8800M GTX
  • GeForce 9300M G
  • GeForce 9500M G
  • GeForce 9500M GS
  • GeForce 9600M GS
  • GeForce 9600M GT
  • GeForce 9600M GT
  • GeForce 9650M GS
  • GeForce 9650M GT
  • GeForce 9700M GT
  • GeForce 9700M GTS
  • GeForce 9800M GS
  • GeForce 9800M GT
  • GeForce 9800M GTS
  • GeForce 9800M GTS
  • GeForce 9800M GTX
  • GeForce 9800M GTX
  • GeForce G 110M
  • GeForce GT 120M
  • GeForce GT 130M
  • GeForce GT 220M
  • GeForce GTS 150M
  • GeForce GTS 160M
  • GeForce GTX 260M
  • GeForce GTX 280M
  • GeForce GTX 285M


  • Quadro CX
  • Quadro FX 1700
  • Quadro FX 1800
  • Quadro FX 370
  • Quadro FX 3700
  • Quadro FX 380
  • Quadro FX 3800
  • Quadro FX 4700 X2
  • Quadro FX 4800
  • Quadro FX 570
  • Quadro FX 580
  • Quadro FX 5800
  • Quadro NVS 290
  • Quadro VX 200
  • Quadroplex 2200 D2
  • Quadroplex 2200 S4
  • Quadro FX 1600M
  • Quadro FX 1700M
  • Quadro FX 2700M
  • Quadro FX 2800M
  • Quadro FX 3600M
  • Quadro FX 360M
  • Quadro FX 3700M
  • Quadro FX 3800M
  • Quadro FX 570M
  • Quadro FX 770M
  • Quadro NVS 130M
  • Quadro NVS 135M
  • Quadro NVS 140M
  • Quadro NVS 320M

B

  • GeForce 9300 GE (1)
  • GeForce 9300 GS (1)
  • GeForce G100 (1)
  • GeForce 8400 (1)
  • GeForce 9200 (1)
  • GeForce 8200M G (1)
  • GeForce 8200M G (1)
  • GeForce 9100M G (1)
  • GeForce 9100M G (1)
  • GeForce 9200M GS (1)
  • GeForce 9300M GS (1)
  • GeForce 9300M GS (1)
  • GeForce 9400M (1)
  • GeForce 9400M (1)
  • GeForce 9400M G (1)
  • GeForce 9400M G (1)
  • GeForce G102M (1)
  • GeForce G102M (1)
  • GeForce G103M (1)
  • GeForce G105M (1)
  • GeForce 8200 (1)
  • GeForce 8300 (1)
  • GeForce 9100 (1)
  • GeForce 9300 (1)
  • GeForce 9300 / nForce 730i (1)
  • GeForce 9400 (1)
  • ION (1)
  • ION LE (1)
  • HICx16 + Graphics (1)
  • Quadro FX 370 LP (1)
  • Quadro NVS 295 (1)
  • Quadro NVS 420 (1)
  • Quadro NVS 450 (1)
  • Quadro FX 370M (1)
  • Quadro NVS 150M (1)
  • Quadro NVS 160M (1)

C

  • GeForce 205
  • GeForce 210
  • GeForce 310
  • GeForce G210
  • GeForce GT 220
  • GeForce GT 240
  • GeForce GT 320
  • GeForce GT 340
  • GeForce GT 430
  • GeForce GTS 450
  • GeForce GTX 460
  • GeForce GTX 460 SE
  • GeForce GTX 465
  • GeForce GTX 470
  • GeForce GTX 480


NB: not supported:

  • GeForce 8100 / nForce 720a
  • GeForce 8300 GS
  • GeForce 8400 SE
  • GeForce 8800 GTS
  • GeForce 8800 GTX
  • GeForce 8800 Ultra
  • GeForce 9300 SE
  • GeForce GT 220 (PCI ID 0x0CAC)
  • GeForce 305M
  • GeForce 310M
  • GeForce G210M
  • GeForce GT 230M
  • GeForce GT 240M
  • GeForce GT 320M
  • GeForce GT 325M
  • GeForce GT 330M
  • GeForce GT 335M
  • GeForce GT 415M
  • GeForce GT 420M
  • GeForce GT 425M
  • GeForce GT 435M
  • GeForce GTS 250M
  • GeForce GTS 260M
  • GeForce GTS 350M
  • GeForce GTS 360M
  • GeForce GTX 460M
  • GeForce GTX 480M
  • GeForce 610M
  • Second Generation ION / GT218
  • GeForce 610M
  • NVS 300
  • Quadro 2000
  • Quadro 4000
  • Quadro 5000
  • Quadro 600
  • Quadro 6000
  • Quadro FX 380 LP
  • NVS 2100M
  • NVS 3100M
  • NVS 5100M
  • Quadro 5000M
  • Quadro FX 1800M
  • Quadro FX 380M
  • Quadro FX 880M

D

  • GeForce 510
  • GeForce 605
  • GeForce GT 520MX
  • GeForce GT 610
  • GeForce GTX 650
  • GeForce GTX 650 Ti
  • GeForce GTX 660
  • GeForce GTX 660 Ti
  • GeForce GTX 670
  • GeForce GTX 670MX
  • GeForce GTX 675MX
  • GeForce GTX 680
  • GeForce GTX 690
  • GeForce 410M
  • GeForce GT 640M
  • GeForce GT 640M LE
  • GeForce GT 645M
  • GeForce GT 650M
  • GeForce GTX 660M
  • GeForce GTX 680M
  • Quadro 410
  • Quadro K5000
  • Quadro K1000M
  • Quadro K2000M
  • Quadro K3000M
  • Quadro K4000M
  • Quadro K5000M

Rules of thumb: anything from before the 8xxx series is unsupported ; anything with the original G80 GPU (8800 GTX, 8800 Ultra, Quadro FX5600, the first 8800 GTS) is unsupported ; everything newer in the 8xxx, 9xxx and 2xx series should work if the driver supports the card.

Since video decoding is done in dedicated hardware, all supported cards have the same level of performance. Specifically, this means H.264 High 4.1, VC-1 Advanced 3, or MPEG-2 MP@HL at up to 40Mbps. Deinterlacing is performed within the shader hardware, so a more powerful card will be capable of more advanced filters at higher resolutions and framerates. Increased memory bandwidth will also help. Detailed specs on shaders, memory bandwidth, etc. can be found at this GeForce Chipsets page. Just click on the link for the relevant chipset to see the details.(see User results table below for examples).

ATI/AMD

Supported Features

  • Bit stream Audio (including DTS-HD, TrueHD, LPCM 7.1)
  • max resolution: 2048 x 1152
  • mpeg2, mpeg4, h264, vc1 advanced acceleration
  • Bob and Temporal deinterlacing via vdpau


Video Cards

Family Engineering Names Marketing Names UVD Version VDPAU Capable

R100

  • R100
  • RV100
  • RV200
  • RS100
  • RS200
  • 7xxx
  • 320-345


NO

R200

  • R200
  • RV250
  • RV280
  • RS300
  • 8xxx - 9250
NO

R300

  • R300
  • R350
  • RV350
  • RV380
  • RS400
  • RS480
  • 9500 - 9800
  • X300 - X600
  • X1050 - X1150
  • 200M
NO

R400

  • R420
  • R423
  • RV410
  • RS600
  • RS690
  • RS740
  • X700 - X850
  • X12xx
  • 2100
  • X700 - X850
  • X12xx
  • 2100
NO

R500

  • RV515
  • R520
  • RV530
  • RV560
  • RV570
  • R580
  • X1300 - X2300
  • HD2300
NO

R600

  • R600
  • RV610
  • RV630
  • RV620
  • RV635
  • RV670
  • RS780
  • RS880
  • HD2400 - HD4290
Yes

R700

  • RV770
  • RV730
  • RV710
  • RV740
  • HD4330 - HD5165
  • HD5xxV
Yes

Evergreen

  • CEDAR
  • REDWOOD
  • JUNIPER
  • CYPRESS
  • PALM (Wrestler)
  • SUMO
  • SUMO2
  • HD5430 - HD5970
  • all HD6000 not listed under Northern Islands
  • HD7350

UVD 2.2 (Cedar - cypress) UVD 3 (Plam - Sumo)

Yes

Northern Islands

  • ARUBA
  • BARTS
  • TURKS
  • CAICOS
  • CAYMAN
  • HD6450
  • HD6570
  • HD6670
  • HD6790 - HD6990
  • HD64xxM
  • HD67xxM
  • HD69xxM
  • HD7450 - HD7670

UVD 3

Yes

Southern Islands

  • CAPE VERDE
  • PITCAIRN
  • TAHITI
  • OLAND
  • HAINAN
  • HD7750 - HD7970
  • R9 270
  • R9-280
  • R7 240
  • R7 250

UVD 3

Yes

Sea Islands

  • BONAIRE
  • KABINI
  • KAVERI
  • HAWAII
  • HD7790
  • R7 260
  • R9 290

UVD 3

Yes

UVD 2

The UVD saw a refresh with the release of the Radeon HD 4000 series products. The UVD 2 features full bitstream decoding of H.264/MPEG-4 AVC, VC-1, as well as iDCT level acceleration of MPEG2 video streams. Performance improvements allow dual video stream decoding and Picture-in-Picture mode. This makes UVD2 full BD-Live compliant.

UVD 2.2

The UVD 2.2 features a re-designed local memory interface and enhances the compatibility with MPEG2/H.264/VC-1 videos. However, it was marketed under the same alias as "UVD 2 Enhanced" as the "special core-logic, available in RV770 and RV730 series of GPUs, for hardware decoding of MPEG2, H.264 and VC-1 video with dual-stream decoding". The nature of UVD 2.2 being an incremental update to the UVD 2 can be accounted for this move.

UVD 3

UVD3 adds support for bitstream MPEG2 decoding, DivX and Xvid via MPEG-4 Part 2 decoding and Blu-ray 3D via MVC.[7] along with 120 Hz stereo 3D support,[8] and is optimized to utilize less CPU processing power.

Card status

High Def 1080i De-interlacing capabilities On Each Card

GPU None One Field (1x) Bob (2x) Temporal (1x) Temporal (2x) Advanced (1x) Advanced (2x)
Example X X X X X X X
8200 X X X (>= 512Mb) (SD only) (>= 512Mb) (SD only)
8400 PCI X X X  ? (SD only) (SD only) (SD only)
8400 PCI-e (G86) X X X X (tearing at 1080i) X (choppy at 1080i) (SD only) (SD only)
8400 PCI-e (G98) X X X X X (SD only) (SD only)
8500 GT X X X X X X -
8600 GT X X X X X X X
9300 X X X X X X (SD only)
9400 X X X X X X (SD only)
9500 GT X X X X X X X (occasional stutter, skip_chroma helps)
9600 GT X X X X X X X
GT 210 X X X X X X (SD only)
GT 220 X X X X X X X
GT 240 X X X X X X X
GT 430 X X X X X X X
GT 520 X X X X X X (SD only, maybe HD at PAL frame-rates)
610M X X X X X X X

Should do all of the rest but I have not tried them.

Supported Drivers

Support started with version 180.06. Latest version available at NVIDIA's website. Bugs are fixed with every new release.

MythTV Support

Fully supported in MythTV 0.22 and above

What works?

  • Any codec support by VDPAU can be offloaded with the MythTV video player.
  • Color OSD
  • OSD menus
  • PiP

What doesn't?

  • Nothing is known not to work at the present

Enabling VDPAU in MythFrontend

Navigate to:

 "Utilities -> Setup -> TV Settings -> Playback -> Playback Profiles (3/8)"
  LINHES R8: Service Menu->Setup->Video->Playback

VDPAU Playback Profiles are automatically created in current versions.

  • VDPAU High Quality: use Temporal Spatial 2X (Advanced 2X) for all content. To be used with nvidia cards >= 8600GT, >= 9500GT, GT120 or >= GT220
  • VDPAU Normal: use Temporal 2X for HD content, and Temporal Spatial 2X (Advanced 2X) for SD content. To be used with nvidia cards >= 8400, >= 9300, GT110 or >= GT210
  • VDPAU Slim: use Bob 2X with skip chroma option, with One Field as fall back, to be used with nvidia cards >= 8200 or when VDPAU Normal doesn't work for some reasons.

Profiles using 2X deinterlacers give better motion playback than 1X ones.

Filters

You can add filters to your profile by entering:

  1. Utilities/Setup -> Setup -> TV Settings -> Playback -> Playback Profiles (3/8)
  2. Enter Edit for the if rez condition you want to change.
  3. Custom filters is on the second screen.

Some options will hurt performance, so don't enable unnecessarily.

This is a comma seperated list of options such as:

 vdpauivtc, vdpauskipchroma, vdpaudenoise=0.5, vdpausharpen=1.0
  • vdpaucolorspace
    • Sets ITU BT601 and ITU BT709 (BT709 for HD videos and BT601 for SD) colour spaces, by default or automatically
    • Why/when it should be used: always, used in MythTV default profiles
    • Set as vdpaucolorspace=[auto|itu709|itu601]
    • example: vdpaucolorspace=auto
  • vdpauivtc
    • Enabling VDPAU inverse telecine, requires Basic or Advanced deinterlacer
    • Why/when it should be used: When playing telecined content.
    • Type: toggle
    • Example: vdpauivtc
  • vdpauskipchroma
    • Enabling Skip Chroma Deinterlace
    • Why/when it should be used: It may help with lower-end graphic cards. This is the default for VDPAU Low quality profile
    • Type: toggle
    • Example: vdpauskipchroma
  • vdpaudenoise
    • VDPAU Denoise
    • Why/when it should be used: To reduce visual noise or "grain" in the picture. This seems to reduce both chroma and luminance noise (Can anyone confirm this?)
    • Will hurt performance
    • The valid range is 0.0 to 1.0, with 0.0 disabling it
    • Example: vdpaudenoise=0.5
  • vdpausharpen
    • VDPAU Sharpen
    • Why/when it should be used: To soften or sharpen the picture. Sharpening the picture will also sharpen any other artifacts such as noise, so this should generally be used with other filters.
    • Will hurt performance
    • The valid range is -1.0 to 1.0, with 0.0 disabling it
    • Example: vdpausharpen=0.7
  • vdpauhqscaling
    • enables High Quality scaling
    • Why/when it should be used: If you have a VDPAU features C card (e.g. nVidia 210, 220, Ion 2)
    • Type: toggle
    • Example: vdpauhqscaling

Compiling MythTV with VDPAU

MythTV compiles with VDPAU unless the --disable-vdpau is used. Older version required the --enable-vdpau switch. See configure --help.

Caveats

  • 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 revision 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.
  • In MythTV, it is not possible to configure video playback profiles to filter based on video format (only by resolution). So it is not currently possible to use VDPAU for H.264/HD-PVR and Xv for Mpeg2.
  • Off-loading to the GPU may increase its heat out-put. It may seem obvious, but check your GPU temperature and cooling arrangements.
  • Many playback issues can be resolved by making sure enough memory has been allocated to the video card, 256MB is a bare minimum requirement and 512MB is strongly recommended. For on-board video this is usually configured via the "GPU Window" BIOS option.

Troubleshooting

VDPAU test

To test to see if you vdpau is working on your system you can run vdpauinfo from the command line to see if your system is setup correctly. This will not work if you are remotely logged into the computer. If vdpau is functioning correctly you should get a result like this.

Display: :0.0   screen: 0
API version: 1
Information string: G3DVL VDPAU Driver Shared Library version 1.0

Video surface: 

name   width height types
-------------------------------------------
420    16384 16384  NV12 YV12 
422    16384 16384  UYVY YUYV 
444    16384 16384  Y8U8V8A8 V8U8Y8A8 

Decoder capabilities:

name               level macbs width height
-------------------------------------------
MPEG1                 0  9216  2048  1152
MPEG2_SIMPLE          3  9216  2048  1152
MPEG2_MAIN            3  9216  2048  1152
H264_BASELINE        41  9216  2048  1152
H264_MAIN            41  9216  2048  1152
H264_HIGH            41  9216  2048  1152
VC1_ADVANCED          4  9216  2048  1152
MPEG4_PART2_SP        3  9216  2048  1152
MPEG4_PART2_ASP       5  9216  2048  1152

Output surface:

name              width height nat types
----------------------------------------------------
B8G8R8A8         16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 
R8G8B8A8         16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 
R10G10B10A2      16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 
B10G10R10A2      16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 

Bitmap surface:

name              width height
------------------------------
B8G8R8A8         16384 16384
R8G8B8A8         16384 16384
R10G10B10A2      16384 16384
B10G10R10A2      16384 16384
A8               16384 16384

Video mixer:

feature name                    sup
------------------------------------
DEINTERLACE_TEMPORAL             y
DEINTERLACE_TEMPORAL_SPATIAL     -
INVERSE_TELECINE                 -
NOISE_REDUCTION                  y
SHARPNESS                        y
LUMA_KEY                         -
HIGH QUALITY SCALING - L1        -
HIGH QUALITY SCALING - L2        -
HIGH QUALITY SCALING - L3        -
HIGH QUALITY SCALING - L4        -
HIGH QUALITY SCALING - L5        -
HIGH QUALITY SCALING - L6        -
HIGH QUALITY SCALING - L7        -
HIGH QUALITY SCALING - L8        -
HIGH QUALITY SCALING - L9        -

parameter name                  sup      min      max
-----------------------------------------------------
VIDEO_SURFACE_WIDTH              y        48     2048
VIDEO_SURFACE_HEIGHT             y        48     1152
CHROMA_TYPE                      y  
LAYERS                           y         0        4

attribute name                  sup      min      max
-----------------------------------------------------
BACKGROUND_COLOR                 y  
CSC_MATRIX                       y  
NOISE_REDUCTION_LEVEL            y      0.00     1.00
SHARPNESS_LEVEL                  y     -1.00     1.00
LUMA_KEY_MIN_LUMA                y  
LUMA_KEY_MAX_LUMA                y  

Nvidia

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

  • Enable Extra Audio Buffering (same page)
  • Disable Real-Time Priority (same page) (or limits.conf) if you have intermittent playback freezes (playback stops for about 30 seconds,the computer is COMPLETELY unresponsive during this period and then playback resumes as is nothing had happened)
  • Adding 'Option "TripleBuffer" "true"' to the Device section of xorg.conf (following the 'Driver nvidia' line) will allocate more memory buffers to 2D playback (and less to 3D).
   Option         "TripleBuffer" "True"

Tearing/Stuttering

Disabling the Composite Extension

Tearing of the OSD over a perfect video playback can be avoided by stopping playback, exiting playback, and re-starting playback of the stream. (No idea why this works..only that it does.)

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

or with the following lines in /etc/X11/xorg.conf:

   Section "Extensions"
       Option "Composite" "Disable"
   EndSection

This may also help eliminate sporadic single-frame stuttering glitches (e.g. slight jerks in long panning shots or scrolling backgrounds).

GPU Power Management

Another common problem is the "adaptive clocking" PowerMizer capability of some NVidia cards: if this is active, frames will occasionally be dropped as the clock rate is adjusted. To switch to performance mode temporarily, use the nvidia-settings application in interactive mode to set "Preferred Mode" to "Prefer Maximum Performance" under each GPU's "PowerMizer" page.

NOTE: YOU MUST REBOOT YOUR SYSTEM AND HAVE POWERMIZER DISABLED, AS DESCRIBED BELOW, TO CORRECT ANY PROBLEMS CREATED BY RUNNING POWERMIZER.

Unfortunately, due to a bug in recent versions of nvidia-settings, this setting may not be preserved across reboots: in order to switch to performance mode automatically, you may need to create a script that executes:

   nvidia-settings -a '[gpu:0]/GPUPowerMizerMode=1'

for each GPU (in this case, for GPU 0). Note that this must be done after X starts: if you use GDM to manage your console logins, /etc/gdm/Init/Default may be a good place to put this. Confirm the setting by running:

   nvidia-settings -q '[gpu:0]/GPUPowerMizerMode'

after the following reboot.

Disable audio upmixing

This might not be VDPAU related, but it's worth to check whether 5.1 audio upmixing is enabled. Enabling this sometimes causes video stuttering. Audio behaves normal however.

Artifacts

Adding "vdpaubuffersize=32" (or higher: eg. 42 works well for the Zotac HD-ID11 box) in the list of filters in Playback Settings may help with artifacts during playback. Remove this filter if running on 0.25 or later.

CPU Frequency Scaling

If you are using CPU frequency scaling and are having problems playing HD video with VDPAU (stuttering video or audio) then it maybe that your processor is causing a bottleneck. Two known issues exist:

  • Some AMD processors reduce the bus speed along with the CPU clock, at the lowest scaling level this may be enough to cause VDPAU problems in transferring data fast enough across the bus. One solution is to increase the minimum speed by changing the value in /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq, see sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies for a list of valid values. e.g. On for a CPU with a min speed of 1000Mhz you may need to bump the min speed to 1800Mhz.

As root:

echo 1800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
  • If frequency scaling is still causing problems then it may be due to too high a threshold being set for frequency changes. Ubuntu for example uses a ridiculous threshold of 95% utilisation per core which is beyond what many userspace applications are even allowed to achieve at their priority level. So an application like MythTV would be choking and the ondemand governor would never increase the CPU frequency to cope. You should first check that your distribution has a reasonable value configured for the 'up threshold', what's reasonable will vary but 50% is a good place to start.

intel_idle Power Management

You may be seeing a problem with intel_idle if you are using an Atom- or i3/5/7-based system (e.g., the Zotac MAG): this driver causes occasional stuttering when power management is enabled. You can disable this by adding

intel_idle.max_cstate=0

to your boot options (e.g., to GRUB_CMDLINE_LINUX in /etc/default/grub, followed by executing update-grub). After rebooting, confirm that power management has been disabled:

$ cat /proc/acpi/processor/CPU0/info | grep power
power management:        no

Disabling intel_idle power management actually results in power management falling back to ACPI, which does not appear to have the same stuttering issue.

AMD/ATI

Kernel Version

UVD support is only possible on linux kenerl 3.10 and greater

Ubuntu Graphic Drviers

Ubuntu 13.10

Ubuntu 13.10 is shipped with a version of mesa that needs to update to get the full performance out of the UVD decoder. This is simply be done by adding the Updated and Optimized Open Graphics Drivers PPA. It is possible to do this by running the following commands

  sudo apt-add-repository ppa:oibaf/graphics-drivers
  sudo apt-get update
  sudo apt-get upgrade
  sudo apt-get install libg3dvl-mesa

Ubuntu 14.04

For Ubuntu 14.04 the drivers for vdpau are not installed by default. To install the driver simply install the mesa-vdpau-drivers package

 sudo apt-get install mesa-vdpau-drivers

NOTE: If you get no video from the above, I came across the following at XBMC.org for the wsnipex repository for mesa drivers. This mesa driver works well with the Foxconn NT-A3500 using the A350 / AMD6310 video.

 sudo apt-add-repository ppa:wsnipex/mesa
 sudo apt-get update
 sudo apt-get dist-upgrade
 sudo apt-get install libg3dvl-mesa vdpauinfo linux-firmware


HDMI Audio

In the event that HDMI audio pass through is not work you will need to set a kernel parameters.

On ubuntu edit the file /etc/default/grub and look for the line starting with GRUB_CMDLINE_LINUX_DEFAULT and update it read like this

 GRUB_CMDLINE_LINUX_DEFAULT="radeon.audio=1 radeon.dpm=1 clocksource=hpet hpet=enable quiet splash"

afterward update the boot loader by running the following command

 sudo update-grub
 sudo reboot

Other Kernel Parameter

Option Values Default value Explanation

radeon.agpmode

1, 2, 4, 8, -1

0

AGP mode, -1 for PCI/PCIe mode

radeon.audio

0, 1

0

Disable/enable HDMI audio

radeon.benchmark

0

Run benchmark

radeon.connector_table

0

Force connector table

radeon.disp_priority

0, 1, 2

0

Display Priority (0 = auto, 1 = normal, 2 = high)

radeon.dynclks

0, 1, -1

-1

Disable/Enable dynamic clocks, -1 for auto

radeon.gartsize

32, 64, etc.

512

Size of PCIe/IGP gart to setup in megabytes

radeon.hw_i2c

0, 1

0

Disable/enable hw i2c engine

radeon.modeset

0, 1, -1

-1

Disable/enable modesetting, -1 for auto

radeon.msi

0, 1, -1

-1

Disable/enable MSI support, -1 for auto

radeon.no_wb

0, 1

Disable/enable AGP writeback for scratch registers

radeon.pcie_gen2

0, 1

-1

Disable/enable PCIe 2.0 support, -1 for auto

radeon.r4xx_atom

0, 1

0

Disable/enable ATOMBIOS modesetting for R4xx

radeon.test

0

Run tests

radeon.tv

0, 1

1

Disable/enable TV

radeon.vramlimit

32, 64, etc.

0

Restrict VRAM for testing

User results

Note: Reports on 1080i content are of greatest interest for deinterlacers. Do not list a deinterlacer if testing on progressive content like 720p. If reports for 720p and 1080i differ (as they will if using a deinterlacer) consider making two entries or indicating the difference in your success/fail results.

Nvidia

Chipset Onboard / Allocated Memory Driver De-interlacer Version 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. 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%
8200 IGP - Asus M3N78-VM 512mb 256.35 Temporal 1x 0.23-fixes 25260 HD-PVR h.264 1080i 14Mb/s BlackCurves Mythbuntu Gnome 1152x720 Yes Athlon 64 X2 4800+ 7% vdpaubuffersize=64,vdpauskipchroma
Sparkle SFPC84GS512U2LP GeForce 8400 GS PCI 512mb 180.35 Temporal 1x HW 0.21-fixes w/patch OTA 720p and 1080i Retro Retro fluxbox VGA (analog) 1280x1024 Yes AMD Geode NX1750 (1.4 Ghz), ~30% Looks super, OSD set to non-fade. Bob 2x is *almost* useable as is Temporal 2x HW. One field also works well.
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.
Asus EN8400GS Silent PCIe (G98 chipset, 500MHz Core/333Mhz Mem) 256mb 180.53 Temporal 1x HW 0.22 OTA HDTV (1080i & 720p) default default mwm 1080p Yes Pentium-D (3.4 GHz) 2% - 5% Temporal 1x HW and Bob deinterlacers work ok. Temporal 1x HW is a little jerky on some stations. H.264 1080p files play perfect
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 works well only with SD video. 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.
Quadro NVS 140M in a Lenovo T61 Laptop 512MB (shared) 180.29 One Field 1x HW 0.21-fixes + patches SD MPEG-2, HD MPEG-2 720p and 1080i from either QAM tuner or Firewire Cable Box Blue Retro Gnome 1440x900 Yes Core 2 Duo T9300 2.5 GHz ~50% on one core OSD sometimes fails to show. Before VDPAU, CPU usage was up to 90% on one core used by Myth and additional 20-30% used by X.
9300 IGP (EVGA 113-YW-E115-TR) 512mb 180.29 (Debian experimental package -1) Temporal 2x r20207 trunk OTA HD 1080i Blue Terra fvwm 1080p Yes Core 2 Duo E5200 2.5GHz <10% Jerky playback w/ Advanced 2x on 1080i. Had to set 512MB GPU mem in BIOS to play 1080i at all. Using Advanced 2x w/o problems for 480i.
GeForce 9300. Motherboard Asus P5N7A-VM 512MB (Shared) 180.51 Temporal 2x HW 0.21-fixes + patch TechnoTrend Premium DVB-C 2300 on remote backend Mythbuntu Mythbuntu Xfce 720p Yes Intel(R) Core(TM)2 Duo CPU E5400 @ 2.50GHz CPU Load approx 5-7 %. Advanced (2x, Hw) used for 720x576i SD, had to change to Temporal 2x HW to have smooth playback of 1080i
GeForce 9400GT. Motherboard Gigabyte Intel G35 512MB (Dedicated) 180.60 Advanced 2X HW for SD, Temporal 2x HW for HD 0.21-fixes + VDPAU patch DVB-T on remote backend Mythbuntu + Avenard repo Mythbuntu Xfce 1080P Yes Intel(R) C2D CPU E8200 @ 2.66GHz CPU Load approx 4-5 %. Advanced (2x, Hw) used for <= 720, Temporal 2x HW or Advanced 1X HW for > 720
GeForce 9400M. Motherboard Gigabyte GA-E7AUM-DS2H 256MB (Shared) 180.60 Advanced 2X HW for SD, Temporal 2x HW for HD 0.21-fixes + VDPAU patch DVB-T on remote backend Mythbuntu + Avenard repo Mythbuntu Xfce 1080P Yes Intel(R) C2D CPU 8500 @ 3.16GHz CPU Load approx 4-5 %. Advanced (2x, Hw) used for <= 720, Temporal 2x HW or Advanced 1X HW for > 720
GeForce 9400M. Apple macbook 256MB (Shared) 180.60 Advanced 2X HW 0.21-fixes + VDPAU patch DVB-T on remote backend Mythbuntu + Avenard repo Mythbuntu Xfce 1280x800 Yes Intel(R) C2D CPU @ 2.4 GHz CPU Load approx 4-5 %. Advanced (2x, Hw) for all content on laptop display
GeForce 9500GT (PNY). Intel D945PVS Mobo 1024MB (Shared) 256.44 Advanced 2X HW 0.23-fixes 2xFirewire on local backend RHEL6 Beta 2 ATRPMS Build 235 Bijou vuvuzela KDE Component Video 480p / 1080i Yes Intel(R) P4D CPU @ 2.8 GHz CPU Load approx 5-10 %. -
nvidia ion - GeForce 9400. Zotac IONITX-C 512MB 180.51 Temporal 2X HW 0.21-fixes + VDPAU patch (20549) ATSC 720p & 1080i + HDPVR 720p blootube blootube fluxbox 720p Yes Atom(TM) CPU 230 @ 1.60GHz CPU Load approx 4-7 %. Works great even w/ single core atom. No fans. 20W power draw.
NVIDIA GeForce 8200 Motherboard ASUS M3N78-VM 512MB (Shared) 190.18.03 Bob 2x trunk 21145 HD-PVR 1080i + 720p blootube blootube KDE 1080p Yes Athlon 64 X2 6000 3.0GHz 1-3% No tearing. Audio stuttering with Advanced 2x/1x. Box 2x works.
NVIDIA GeForce 8200 Motherboard ASUS M3N78-VM 512MB (Shared) 304.43 Bob 2x 0.25.2 +fixes 20120802 46cab93- 0ubuntu1 DVB YLE HD (1080i?) Mythcenter-wide Mythcenter-wide Xfce 1920x1080 Yes Athlon 64 X2 3800+ 5-7% Got rid of stuttering with scaling_min_freq 1800000
NVIDIA GeForce 8200 Motherboard ASUS M3N78-VM 512MB (Shared) 304.64 0.25.2 +fixes on Mythbuntu 12.04 DVB-S (Astra, tested w/ EinsfestivalHD) Mythcenter-wide Mythcenter-wide Xfce 1920x1080 No for >720p Athlon 64 X2 2100+ 8-30% VDPAU works with <720p, but not for SD or HD: audio & video stuttering. Tried: no filtering or deinterlacers at all, scaling_min_freq 1800000, vdpaubuffercount=42, PowerMizer max performance. Workaround: use xv-blit with Yadifx2 for >=720.
NVIDIA GeForce 8300 Motherboard ASUS M3N78 PRO 512mb (shared) 185.18.14 Temporal 2x trunk 20694M BBC HD H.264 1080i 21Mb/s blootube Terra KDE 1920x1080 Yes Athlon 64 X2 5200 2.7Ghz 10-15% 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.
NVIDIA GeForce 9500GT Motherboard Gigabyte GA-M571SL1-S4 512mb 190.53 Advanced 2x HW 0.22-fixes HD-PVR Comcast max variable bitrate Blue Abstract Blue Abstract Gnome 720p Yes Athlon X2 5200+ 2.7GHz 8%-10% Rock solid at 720p
NVIDIA GT 220 [1] 1024mb 195.36.15 Advanced 2x HW 0.23-fixes HDHomeRun (1080i+720p), FireWire (1080i+720p) Mythbuntu Mythbuntu Xfce 1080p Yes Athlon X2 2400 8%-10% Works great.
NVIDIA GT 430 1024mb 210.19.21 Advanced 2x HW 0.23-fixes FireWire (1080i+720p, FiOS) and h264 1080i Black Curves Mythcenter-Wide KDE 3.5 1080i Yes Athlon X2 4400 20% at 1GHz Works great.
NVIDIA ION GeForce 9400M ZOTAC IONITX-B-E 512mb 195.36.15 Advanced 2x HW 0.23-fixes HDHomeRun (1080i+720p), FireWire (1080i+720p) Mythbuntu Mythbuntu Xfce 1080p Yes Atom(TM) CPU 230 @ 1.60GHz CPU Load approx 4-7 %. Works great.
NVIDIA ION (GeForce 9400M variant) ZOTAC IONITX-A-U 512MB (Shared) 195.36.24 Temporal 2x HW (HD), Advanced 2x HW (SD) 0.23-fixes ATSC 720p/1080i MPEG2, 720p/1080p h264 MKVs (Remote backend) Metallurgy Arclight Xfce 1080p Yes Intel Atom 330 1.6GHz — 3 - 8% in Myth; 0 - 2% in mplayer (set as external player for mkv files) Needed to install two matched RAM sticks for dual-channel mode, or GPU memory bandwidth was insufficient. Initially tried with one 2GB stick; Temporal 2x at 1080i was very jerky, but works perfectly with two 1GB sticks.
Also, MB is running with nothing but RAM added; PXE boot + NFS root, with excellent performance. (File access hits 110 - 120MB/sec, limited only by GigE speeds.)
NVIDIA GT 220 [2] 1024mb 260.19.44 Advanced 2x HW 0.24-fixes 950Q - QAM (Time Warner for HD Local), PVR500 (Dual analog for SD Cable) Scientific Linux 6.0 Scientific Linux 6.0 Gnome 1080p Yes Intel(R) Core(TM)2 Duo CPU E4400 @ 2.00GHz no issues running full 2x on 1080i content.
NVIDIA GT 520 (using Asus silent model) [3] 1024mb 275.09.07 Advanced 2x HW 0.24-fixes DVB-T on remote backend Mythcenter-Wide Mythcenter-Wide Fluxbox 1680x1050 Yes Amd Opteron 146 (throttled to 1GHz) ~ 5% CPU no issues running Advanced 2x on 1080i content. Tested with Tennis, Australian Rules Football and Motor Sports
NVIDIA GT 520 [4] 1024mb 260.19.44 Advanced 2x HW 0.25 Ceton InfiniTV on Verizon FIOS Cable Card Scientific Linux 6.0 Scientific Linux 6.0 Gnome 1080p Yes Intel(R) Core(TM)2 Duo CPU E4400 @ 2.00GHz no issues running full 2x on 1080i content.
NVIDIA GeForce 210 [5] 512mb 195.36.15 Advanced 2x HW 0.25 HDHomeRun (1080i+720p), FireWire (1080i+720p) Mythbuntu Default Mythbuntu Default Xfce 720p Yes AMD Phenom II X4@2.8Ghz CPU Load ~5% Works Great for 1080i, 720p (both MPEG-2 and H.264)
NVIDIA GeForce 210 [6] 512mb 304.88-0ubuntu0.0.2 Advanced 2x HW 0.25 HDHomeRun (1080i+720p), hvr-2250(QAM/NTSC cable), Mythbuntu Default Mythbuntu Default Xfce 1080p Yes AMD Athlon x2 4400+ CPU Load ~15% Could not turn on vdpauhqscaling, as that caused frames to be skipped.
NVIDIA GeForce 610M ASUS EeeBox EB1033 512mb 319.23 Advanced 2x HW 0.26 HDHomeRun (1080i+720p) Blue Abstract Blue Abstract fluxbox 1080p Yes Intel Atom D2700 Dual-Core Processor Load ~10% (combined fe/be) Using vdpauhqscaling. Perfect for recorded streams. Standard Myth/VDPAU occasional stuttering on LiveTV/EPG (appears to be a Myth bug in feeding the decode buffer -- trailing the LiveTV stream by a few seconds works around the bug, ex. hit pause and then resume after starting LiveTV)
NVIDIA GeForce GTX 1050
Zotac Geforce GTX 1050 Mini
2GB 375.20 Advanced 2x HW 0.28 HDHomeRun Prime (1080i+720p) Blue Abstract Wide Blue Abstract Wide evilwm 1080p Yes Intel i5-2500k Quad Core Processor Load <10% (combined fe/be) Running Gentoo. Using VDPAU with 'vdpauhqscaling' option. Audio out using NVIDIA HDMI out (HBR - 192kbit). Perfect recorded streams and perfect LiveTV. Using SSD (Samsung 850 Pro) for LiveTV recordings on ext4 fs.

AMD

Chipset UVD version Onboard / Allocated Memory Driver De-interlacer Myth Version Video Source Theme Window Manager Display res Working CPU Usage when playing Comments
AMD HD6320 (westler) 3.0 320mb MESA 10.1-git Bob 2x HW 0.27 HDHomeRun (1080i+720p ATSC), HDPVR (1080i+720p H264) Mythbuntu Default Xfce 720p Yes AMD E-450 APU (1.65GHz, dual core) 30-40% load Works Great for 1080i/p, 720p (both MPEG-2 and H.264)
Radeon HD 7290 (Wrestler) 3.0 256mb MESA stock ubuntu 14.04 version Temporal 2x HW 0.28 HDHomeRun (1080i+720p ATSC) Mythbuntu Xfce 720p Yes AMD C70 18-25% load prefect playback for MPEG-2 content
Radeon HD 8510G 3.0 1000mb MESA stock ubuntu 14.04 version Temporal 2x HW 0.27 HDHomeRun (1080i+720p ATSC), HDPVR (1080i+720p H264) Myth Media stream redux 28.1 Xfce 1080p Yes AMD a8-5545 (1.7GHz, quad core) 10-15% load prefect playback for MPEG-2 and H.264 content

External Links

NVIDIA Linux Forum

More info on VDPAU from NVIDIA

Linux VDPAU testing tool at nvnews

List of all NVIDIA chipsets and level of VDPAU support

Note: This list is dependent on the driver version. This currently points to the version 260.19.36 README file appendix. Newer versions of the driver may add other GPUs to the list and other capabilities.

Link to the newest driver versions: stable and beta