A Home Theater PC (HTPC) is bar none objectively the best way to watch movies, TV, any video in the best possible quality, much like how a PC is bar none the best platform for gaming. Throw away or sell your consoles and standalone blu-ray players, and get started with an HTPC if you haven’t already! While an HTPC with low end hardware won’t have significant benefits in picture quality, the unparalleled functionality more than makes up for it. But in this article, we focus on the configuration and capabilities of a high end HTPC.
“Why an HTPC?”
Some might ask why bother setting up an HTPC opposed to using a standalone player, game console, or smart TV. A smart TV still has its place as a media center, but game consoles and standalone blu-ray disc players are completely useless in every single facet. The reasons to use an HTPC are:
- Less devices to manage. A PC can do it all, from gaming to watching movies/TV/video to web browsing and everything else obviously, and it is the best platform for all of that. Why manage a bunch of devices and use up important HDMI and power ports when you can have one device that does it all, and does it all best?
- Unparalleled functionality. You can use an advanced setup with a TV tuner card and advanced software (providing features such as DVR that is only limited by your storage, the ability to remove commercials from DVR recordings, and much more) to set up a streaming server, not relying on streaming for the internet. Or you can still stream from the internet. You can use your own storage system or use cloud storage. You can do anything you could possibly want from a media center.
- Unparalleled picture and motion quality. This will be the main focus of this article. Using high end hardware and the software we will go over, the picture quality of a high end HTPC will decimate every other device. Again, similar to how a higher end gaming PC (but not only extremely high end) decimates any other gaming device in picture and motion quality.
“What hardware/software is needed?”
- Operating System: Microsoft Windows 10 (or Windows Server 2012 R2 if you want to build an advanced streaming server and HTPC). Unfortunately the best software for HTPC purposes is exclusive to Windows, unsurprisingly.
- A powerful PC (preferably). As mentioned earlier, a high end PC isn’t required, but if you want image quality that will blow away everything else, you will need a beefy video card. Especially for 4k playback. If you want to get really serious, get an AMD Radeon RX 580 8GB or NVIDIA GeForce GTX 1060 6GB, or above. Yes, I can murder performance with my GTX 1080 Ti if I push the settings hard enough. No video card is too much for an HTPC. Then again there is a point of diminishing returns, but more on this later. AMD is technically better than NVIDIA for HTPC usage, by a slight margin. Unless you go and use really old NVIDIA drivers (early 2015) but if this HTPC is also a gaming PC, then that is not acceptable for obvious reasons. Why is AMD better? Because NVIDIA removed cl_nv_d3d9_sharing from their drivers (Windows 10 drivers at least) in 2015, therefore their drivers/cards have no more OpenCL / DX9 interoperability. The best upscaling algorithm in madVR (the best video renderer there is), NNEDI3, relies on this. So only AMD or old NVIDIA drivers (not recommended) can use NNEDI3. Luckily there are strong alternatives to NNEDI3 even if not quite as good.
- A nice surround sound setup. Not technically required but obviously there isn’t a point in building a high end HTPC without one. The more channels, the better, but of course support for more than 7 channels is rare and Dolby Atmos/DTS:X support is also rare.
- A nice A/V receiver. Your HTPC, sound system, and TV or monitor will connect to it via HDMI.
- A capable video player software. No, Windows Media Player and VLC Media Player will not suffice. You need the best of the best, and luckily they are free and one of them are open source. I use MPC-HC which is the open source one, and an excellent alternative is Potplayer. I don’t think I’d bother using any other. Both have a web interface thankfully.
- madVR, the finest and most advanced video renderer there is, with the most advanced image refinement from supersampling to other upscaling methods (all the ones you can think of and more) to chroma and luma upscaling, motion enhancements, and more.
With NVIDIA, you can improve image quality from NVIDIA Control Panel by enabling Edge Enhancement and Noise Reduction. Don’t go too crazy, use trial and error.
Video Player Configuration
For this article, MPC-HC is used. Once installed, you will want to configure both the video player you chose and madVR. I would just configure the video player first since it calls madVR and you can configure that one with the video player running.
Configure the general output settings as shown below. Select madVR as the renderer.
You can configure advanced fullscreen settings for motion playback as shown below. Self-explanatory but will require lots of trial and error and ideal settings will vary depending on the content you are viewing. Always remember that the ideal scenario is to have content frame rate that multiplies evenly into your refresh rate value, e.g. 120 Hz refresh rate % 24 FPS (cinema standard) = 0.
Below we can see some of the external filters available in MPC-HC. Trial and error, that’s the name of the game. You can edit the image however you want.
Under Internal Filters -> Audio decoder, enable the formats supported by your A/V receiver.
Internal Filters -> Video decoder options menu shown below. This contains the utmost important settings. NVIDIA users should select NVIDIA CUVID as the hardware decoder (this is obviously NVIDIA’s own CUDA based one and is thus the best for their hardware), while AMD users should use DXVA. Select your output formats, dithering method (random dithering has slightly more noise floor while ordered might show rectangular patterns at times). Enable adaptive hardware deinterlacing, it is just best practice to enable hardware rendering over software when applicable.
madVR is the video renderer, so most of the image quality tweaking will be done here. First, configure your devices at the top. Select the device type as appropriate, e.g. digital TV/monitor or receiver. Notice you can load 3D LUT calibration profiles! madVR has built-in support for:
But seeing as how you can load 3D LUT files, you can make one with any calibration software and load it into madVR.
Next we look at artifact removal options below. Very nifty. Reduce banding artifacts, using either medium/high or high/high (test for yourself). For the love of all that is good, do not reduce compression artifacts! That impacts performance as much as supersampling or worse. My GTX 1080 Ti can’t handle it.
The next settings we will look at fall under scaling algorithms. NGU is the best quality for NVIDIA, followed by super-xbr. For AMD, put NNEDI3 as #1. Different algorithms have different settings, but in a nutshell:
- Cubic – Fast, low quality.
- Lanczos – Good quality, good balance between image quality and performance. Probably ideal for GTX 1050 range.
- Spline – In the same realm as Lanczos.
- Jinc – Slightly higher quality and more demanding than Lanczos and Spline.
- Bilateral – Uses luma channel as reference. Hit or miss.
- Reconstruction – Similar to Bilateral, higher quality I believe.
- super-xbr – Supports supersampling, higher quality than all of the above but much more demanding.
- NGU – Supports supersampling and many other options, higher quality than all of the above, very demanding like super-xbr (potentially more). The best choice for NVIDIA users as far as image quality goes. I use this on both my GTX 1060 powered dedicated HTPC, and my GTX 1080 Ti.
- NNEDI3 – De facto standard, best in quality. Not available for NVIDIA using mid 2015 and later drivers.
A really convenient feature in madVR is the series of sliders that rates picture quality to artifacts. madVR is proactive, a rare thing in software in general, and it’s free! Let it be praised.
Downscaling doesn’t matter too much since nobody really ends up using it, unless viewing 4k content on a sub 4k display (but so few content is 4k). Go for higher quality settings, like Jinc or SSIM. Again we have the graphs that indicate picture quality and artifacts.
Uh oh, time for image upscaling, a major reason people use madVR. Here is where you can kill your performance even with a NVIDIA TITAN Xp, and probably with a TITAN V too. The same comments about chroma upscaling algorithms listed above apply here too. I use NGU Anti-Alias on both my GTX 1060 and GTX 1080 Ti, but set to High quality on the GTX 1080 Ti and Medium on the GTX 1060. That’s for luma doubling. I let madVR decide on quadrupling for everything but if you’re watching say 720p content on a 1440p or 5k display, or 1080p content on a 4k display, it might be helpful to force quadrupling (there is a setting here that auto forces it under these conditions). I’m not convinced a GTX 1080 Ti can handle that smoothly though. Again, your own experimentation is required here.
Under Rendering settings, we have Smooth Motion. Use it! Again we see madVR being proactive: I use the setting that enables smooth motion only if there would be judder without it, so as to avoid the nasty soap opera effect. The setting below that, seen in the screenshot below, is potentially more aggressive but should not produce the soap opera effect due to its logic. So that is a good option too. Most movies and TV shows are 24 FPS for reference, so on a 60 Hz display the first two options would not use smooth motion in such content, but on a 120 Hz display it definitely would with the 2nd option and may or may not with the 1st option.
These settings will help you get started, but trial and error is unavoidable if you wish to pursue ideal image quality. While there is a lot to possibly configure, almost all of it is self-explanatory. MPC-HC, Potplayer, and madVR are all very well designed.
For tips on more advanced madVR configuration, visit this website.
Let us know your feedback in the comments section below, and feel free to share your own tips and awesome HTPC setups!