The author of the LAV Splitter / Audio Decoder has another nifty tool coded up for HTPC users with NVIDIA cards. Based on the CUDA SDK, it is called LAV CUVID. The video decoder is not a typical CUDA API and does not use CUDA to decode. NVIDIA provides an extension to CUDA called CUVID, which just accesses the hardware decoder.

The only unfortunate aspect of LAV CUVID is that it is restricted to NVIDIA GPUs only. While OpenCL might be an open CUDA, it does not provide a CUVID-like video decoder extension on its own. ATI/AMD has the OpenVideoDecode API, which is an extension to OpenCL. Despite being open, it hasn't gained as much traction as CUDA. The AMD APIs are also fairly new and probably not mature enough for developers to focus attention on them yet. Intel offers a similar API through their Media SDK. Again, the lack of support seems to turn away developers.

On Linux, there is the VA-API abstraction layer, which is natively supported by Intel, and has compatibility layers onto VDPAU (NVIDIA), and OVD (ATI/AMD). So, on Linux it is theoretically possible for developers to create a multi-format video decoder. But, there is no support for HD audio bitstreaming with Linux. For Windows, developers are forced to use DXVA(2) for multi-platform video decoding applications.

Is there an incentive for NVIDIA users to shift from the tried and tested MPC Video Decoder (which uses DXVA(2))? I personally use LAV CUVID as my preferred decoder on NVIDIA systems for the following reasons:

  • Support for uniform hardware acceleration for multiple codecs: Theoretically, everything listed under the supported DXVA modes by DXVA Checker should be utilized by the software decoders. Unfortunately, that is not the case. This is evident when the 'Check DirectShow/MediaFoundation Decoders' feature is used to verify the compatibility of a MPEG-4 or interlaced VC-1 stream. The mode either comes out as 'Unsupported', or, it is active only under DXVA1 for VMR (Video Mixing Renderer). LAV CUVID doesn't show DXVA support under DXVA Checker (because it really doesn't use DXVA). However, analysis of the GPU/CPU load reveals that its performance and usage of the GPU are very similar to that of the DXVA2 decoders. Furthermore, all our GPU stress tests were hardware accelerated except for the MS-MPEG4 clip.
  • Support for choice of renderer: For the average Windows 7 HTPC user, the EVR (Enhanced Video Renderer) is much better than VMR since it contains multiple enhancements which are beyond the scope of this piece.

Almost all DXVA2 decoders can connect to the EVR. Advanced HTPC users are more demanding and want to do more post-processing than what EVR provides. madVR enters the scene here, and has support for multiple post processing steps which we will cover further down in this section. However, it doesn't interface with DXVA decoders. The LAV CUVID decoder can interface to all these renderers, and is not restricted like the other DXVA2 decoders.

Starting with v0.8, LAV CUVID has an installation program. Prior to that, the filters had to be registered manually, as in the gallery below.

After downloading and extracting the archive, the installation batch script needs to be run with administrator privileges. If the filter gets successfully registered, your favorite DirectShow player can be configured to use LAV CUVID. The process setup for MPC-HC is shown in the gallery. Make sure that the internal transform filters for the codecs you want to decode with LAV CUVID are unselected. After that, add LAV CUVID in the External Filters section and set it to 'Prefer'.

Here is a sample screenshot with EVR CP statistics for a MKV file played back with LAV Splitter, Audio Decoder and LAV CUVID Decoder.

Click to Enlarge

Now, let us shift our focus to madVR. It is a renderer replacement for EVR, and can be downloaded here. Currently, madVR does not do deinterlacing, noise reduction, edge enhancement and other post processing steps by itself. These need to be done before the frame is presented to madVR for rendering. When using a DXVA decoder, these steps are enabled from the NVIDIA or AMD control panel settings. With the LAV CUVID decoder, we get the post processing steps as enabled in the drivers. The decoded frames are copied back to the system RAM for madVR to use.

The madVR renderer uses the GPU pixel shader hardware for the following steps:

  1. Chroma upsampling
  2. High bit-depth color conversion
  3. Scaling
  4. Display calibration (optionally, if you have your own meter)
  5. Dithering of the internal calculation bit-depth (32bit+) down to the display bit-depth (8 bit)

All of these things are realized with a higher bit-depth and quality compared to what the standard GPU post processing algorithms do.

The gallery below gives an overview of how to install madVR and configure it appropriately.

After downloading and extracting the archive, run the installation batch script to register the renderer filter. By default, the MPC-HC 'Output' options has madVR grayed out under the 'DirectShow Video' section. After the registration of the madVR filter, it becomes possible to select this option. When you try to play a video with the new output settings, it is possible that a security warning pops up asking for permission to open the madVR control application. Allowing the application to run creates a tray icon to control the madVR settings as shown in the fifth screenshot in the gallery. Screenshots 6 through 12 show the various madVR post processing options.

madVR requires a very powerful GPU for its functioning. Do the GT 430 and GT 520 cut it for the full madVR experience? We will try to find that out in the next section.

Software for HTPCs : LAV Splitter and Audio Decoder Benchmarking LAV CUVID with madVR
Comments Locked

70 Comments

View All Comments

  • ganeshts - Thursday, June 16, 2011 - link

    PotPlayer apparently doesn't have support for hardware deinterlacing, and has a host of other issues [ Search for PotPlayer in this page and then read the next set of posts about it : http://www.avsforum.com/avs-vb/showthread.php?p=20... ].

    Of course, if it works for you, it is great :) (probably it is a good solution for people watching progressive material only).

    The author of LAV CUVID talks in that thread about how renderless DXVA mode works with madVR at the cost of deinterlacing.

    Btw, there is no decode of DTS-HD in any open source software now. Both ffdshow and PotPlayer can decode only the core DTS soundtrack. DTS decode has been around for a long time, though.
  • NikosD - Saturday, June 18, 2011 - link

    Indeed, I was referring to progressive material only - interlaced material is rare - but the page you mentioned says PotPlayer has CPU deinterlacing.

    I don't see where is the problem.

    Hardware Deinterlacing is less important - for most users - than Hardware Decoding (DXVA) and less important than the UNIQUE capability of using DXVA + madVR at the same time.

    The cost of hardware deinterlacing is nothing compared to the cost of DXVA and madVR.

    For the audio part of your answer, I have to say that because of my AVR (Pioneer VSX-920) decoding inside a PC, BluRay, Media Player or any other decoding capable device of multi-channel audio is never an option for me.

    I always prefer the bitstreaming solutions for multi-channel audio - as most of the owners of AVR do - like those provided by FFDshow and PotPlayer which both are more than capable of providing them.

    That's why I wrote "decoding and pass-through", I had to write "splitting and pass-through".

    One last word.

    For every piece of software out there, there is always a list of changes, bugs, things to do.

    That doesn't mean we don't use it or like it.
  • PR3ACH3R - Friday, June 17, 2011 - link

    @Ganesh T S,
    This is some NICE work.
    In fact, I cannot recall when was the last time I have seen such an in depth article on the HTPC GPU subject in Anandtech.

    The balance between the technical issues, the background, & the effort to honestly report all issues known to you in this article, is spot on.

    If it is missing something on the issues report, it misses on the ATI/AMD DPC Latency spiking issues.

    As this is still remains unnoticed in Anandtech even in this excellent article, here is a link to the AVS post describing it.

    http://www.avsforum.com/avs-vb/showthread.php?t=12...

    (Ignore some of the discredit attempt posts in this thread, this problem exists to this very day.)
  • NikosD - Thursday, June 23, 2011 - link

    Well, I did some further tests and found out that PotPlayer does have hardware deinterlacing.

    Have you done any tests by yourself to see if the player supports Hardware Deinterlacing ?
  • ganeshts - Saturday, June 25, 2011 - link

    NikosD, I will definitely try PotPlayer out in the next GPU review. Till now, my knowledge is limited to what is there in the AVSForum thread.
  • flashbacck - Friday, June 24, 2011 - link

    I know HTPCs are even more of niche these days than ever, so I appreciate you still doing these tests very much.
  • wpoulson - Thursday, July 28, 2011 - link

    I really appreciate this guide and have been stepping through it

    I just registered the ASVid.ax file from TMT5 but the filter is not showing up in the External Filter section of MPC-HC. At first I thought it might be because I registered it on the 32 bit side and I'm using 64 bit MPC-HC, so I unregistered the file from System 32 and registered it on the 64 bit side.

    I registered it by going to Start>CMD>Cntrl-Shift-Enter and using the "Regsvr32" command to register the file. I put the file along with the checkactivate dll in a folder in the root directory of my C drive and pointed the Regsvr command to the ASVid.ax file. After hitting enter, I received a "dll successfully registered" message.

    Can someone help me to get the filter visible for MPC-HC?

    A question...While it's considered beta, will the new LAV video decoder do the same thing the arcsoft video decoder does?

    Thanks

    Warren
  • stuartm - Friday, January 20, 2012 - link

    I am aware the gt 430 is a good choice to work around the infamous WMC 29/59 framerate bug. Can you comment on whether or not the 6570 will stutter or not when playing content with 29/59 framerate problems? A very important consideration for those of us using ceton or HDHR Primes (or the new Hauppauge box) for cable TV Live viewing and record/replay.

    Thank You
  • MichaelSan1980 - Saturday, January 21, 2012 - link

    I'd use my HTPC for DVD's and BD's only with an Full-HD TV. Since i have a rather strong CPU and wouldn't use Hardware Deinterlacing for DVDs, i wonder, if the GT520 is ~that~ bad, in terms of image quality?
  • drizzo4shizzo - Wednesday, June 20, 2012 - link

    Old guy here.

    In the market but I need confirmation that these cards can do component output to "old guy" HDTV.

    NONE of the marketing materials suggest that any recent card can.

    Meaning they either come with a component video breakout or at least are compatible with a known 3rd party product, and that they can do the RGB -> YUV thing.

    This ancient EVGA 7600 GT I have does it... with an "svideo lookalike" 7 pin -> component breakout.

    Anyone? Beuller?

Log in

Don't have an account? Sign up now