This section container articles on how to properly calibrate your HTPC video output and achieve bit-perfect audio output.
-
Search
-
Meta
This section container articles on how to properly calibrate your HTPC video output and achieve bit-perfect audio output.
This review has been posted by a customer.
Here is the review:
“This is a double review of sorts. Before I get into the review, a little back story. I previously owned a Logitech Transporter. I had upgraded within the Slim Devices family from the Squeezebox 3 to the Logitech Touch after the Logitech buyout. Then, I made the move to the Transporter. The Transporter still is a great network computer audio device. Unfortunately, Logitech decided to effectively kill the brand so I unloaded the Transporter for fear of having a $1000+ paperweight.
It was at that point, I decided to stop trying to look for an off the shelf solution and just build a computer which could stream audio from my networked server. I’m using J River Media Center for playback and use the iPhone app, J Remote, for control. I figure this setup will should future proof me (ie….5-6 years of use).
So, the hunt was on! I wanted a computer case that would be 100% silent and fit in somewhat with all my other components. You know. Not look like I have a loud, cheesy computer sitting next to my multi-thousand dollar stereo.
I knew of A-Tech Fabrication (http://www.atechfabrication.com/) and had heard good things about the quality of their cases but DAYUM at the price! Then, I read an article on Computeraudiophile.com which mentioned the HD-Plex cases. I looked up the site and decided that this was the case for me. Attractive and affordable!
I decided that I really wanted an black H5.S case for my build, but it was out of stock. Being the impatient person I am, on September 12, 2012, I ordered a black H3.S case with fanless 80 watt power supply, internal IR receiver, and MCE remote. The case arrived promptly and well packaged. The instructions were relatively clear and I had no problem with the build.
This was also my first experience with mini ITX motherboards. I built the computer from a Biostar TH61 motherboard with an Intel G630T processor. The G630T is a dual core 2.3 GHz CPU with only 35 watt of TDP. Plenty low for a completely fanless, passive system. I installed 8GB of Kingston DDR3 RAM and installed Windows 7 Ultimate on a 64GB Crucial M4 SSD.
The system was almost exactly what I wanted. Silent, stable, and fast. Then, I got the email that the H5.S was back in stock. DAMMIT!! I ended up selling the H3.S build and purchased a black H5.S case with fanless 80 watt power supply, internal IR receiver, and MCE remote. Just like the previous H3.S, the H5.S arrived arrived promptly and well packaged.
I already had an Intel DH67BL motherboard lying around for another computer build so I just pulled it into duty for my new build. I purchased an Intel G640T processor which I found for the same price as the previous G630T. The G640T is a dual core 2.4 GHz CPU with the same 35 watt TDP. I followed the same recipe for success with 8GB of Kingston DDR3 RAM and Windows 7 Ultimate on a 64GB Crucial M4 SSD.
Comparing the H3.S to the H5.S, they both had a few faults and areas where I felt improvements could be made. Most of these should be considered nit-picky and I feel they do not detract from the overall quality of the cases.
The H3.S grooves were powder-coated which likely minimizes heat transfer from the heat pipes to the case/external heat sinks.The H5.S grooves were raw aluminum. I found on both the H3.S and H5.S that the front USB cable has to be cut down for the screws to fit into the case. Providing longer screws would prevent the need for having to cut the cable down. The H3.S case came with only a front USB 3.0 cable while the H5.S came with both front USB 2.0 & 3.0 cables.”









HDPLEX Internal IR with MCE Remote Manual
Part 1: Installation
A. Install the IR PCB in the IR slot on the back of the chassis faceplate using one M3x6 screw
B. HDPLEX Internal IR PCB wire layout.

C. Plug the USB on the motherboard internal port, plug the power switch cable on the middle two PIN of the HDPLEX power switch PCB.

D: Connect the 5VSB to the +5V output from the DC-ATX converter.


If you can’t power up the PC from S5 state, first unplug the IR switch cable, flip 180 degree and plug back. Incorrect polarization will prevent IR from power up the PC. If this does not solve the problem, you need to use HDPLEX IR’s unique “Forced shutdown” function. See details in the “Multimedia function” section.
Part 2: Remote Configuration
The HDPLEX MCE remote is preconfigured as the standard windows MCE remote and use Microsoft Windows native driver, no third party driver is needed.
In addition, remote configuration program allows you to tailor the MCE remote to your needs. Download this program at http://www.hd-plex.com/images/accessories/remote.zip

To assign a function, just click the corresponding key to activate setup window. A warning dialog box will pop up if the program does not detect the HDPLEX internal IR. Please make sure the IR is plugged properly on the motherboard USB port. If you continue with this warning, no setup will be saved.

There are six categories of functions which you could assign to a remote key.






Part 3: Using Profiles
HDPLEX IR allows each key have four different function by switching between four profiles. For example, key”1” could function as keyboard “P” under profile 1 and “Volume+” under profile 2.
Profiles could be exported and imported in the format of BIN file.

Each individual profile could be exported or imported. For example, if user A export “Profile 1” to 1.bin and user B import 1.bin to his profile 1, both users will have the same remote key function under Profile 1. If user B import 1.bin to his “Profile 2”, his other three profiles won’t be affected and his profile 2 will have the same remote key configuration as user A’s profile 1.

All four profiles could be exported or imported at once as a single bin file when choose “All Profiles”. For example, user A export his four profiles into foursettings.bin. If user B import foursettings.bin when choosing “All Profiles” , user B four profiles will be the same at user A.
If user B import foursettings.bin when “choosing Profile 3”, only the first profile from foursettings.bin will be imported. In this case, user B’s profile 3 will be the same as user A’s profile 1.

Warning: “Empty current settings” button will erase key configuration for ALL FOUR PROFILES no matter which profile you have selected. If you want to get back to factory default, please download factory default settings at http://www.hd-plex.com/images/accessories/factory.bin and import under “All Profiles”.
This is a very good HTPC video set up guide from Mai Sun’s blog:
http://sunmaiblog.wordpress.com/2010/10/06/calibrate-htpc-for-optimal-video-output/
非常清楚的解释了正确设置HTPC视频输出的要点。对于YUV 4:2:0 编码的视频播放来说,
PC都必须将其转先换为RGB再输出给显示设备,所以转换的准确与否对于画质就非常重要。
Mai Sun的文章如下:
For a HTPC based home theatre system I personally prefer to divide video calibration process into the following two steps:
In this article I’ll try to cover the topics with regards to HTPC calibration – that is how to get a proper output from our HTPC. There are several reasons why we want to calibrate our HTPC before our display device:
When we play a video in HTPC, there are several things in the HTPC video pipeline that can have impact on picture quality:
The target of HTPC calibration step is to find correct settings for all involved components listed above which gives best possible optimal output to our display device. I’ll first try to explain some theories behind scene and then focus on how to test the “correctness” of output from our HTPC.
Movies are normally encoded in YUV 4:2:0 with luma range 16-235, but most graphics card works in RGB 4:4:4 colour space with luma range 0-255, so conversion of both chroma and luma is required before sending video signal to our display. Besides chroma and luma resampling, resizing and de-interlacing are also considered as important factors when comparing different decoders/renderers, and I will try to describe them from a more practical perspective. Some theories behind smooth playback and different pull down techniques are discussed in the end of this section
Luma resampling refers to expanding video level (16-235) to PC level (0-255), and as we can easily see that the procedure produces fractional numbers which even HDMI 1.4 can not carry. In order to send luma through HDMI, fractional numbers are rounded to integers as the following example shows:
| Original Luma | Expanded Luma | Rounded Result |
| 16 | 0 | 0 |
| 17 | 1.163636364 | 1 |
| 18 | 2.327272727 | 2 |
| 19 | 3.490909091 | 3 |
| 20 | 4.654545455 | 5 |
| 21 | 5.818181818 | 6 |
| 22 | 6.981818182 | 7 |
| 23 | 8.145454545 | 8 |
| 24 | 9.309090909 | 9 |
| 25 | 10.47272727 | 10 |
| 26 | 11.63636364 | 12 |
Obviously there are several problems with such algorithm:
The luma information outside video range (0-16 referred to as BTB and 235-255 referred to as WTW) are important though we don’t normally see them in a movie. IMO they provide the following values:
Finally my suggestions are:
Chroma upsampling applies when converting YUV 4:2:0 to RGB/YUV 4:4:4. More information about how it works can be found here and here.
Chroma upsampling generates artificial colour information which doesn’t exist in the original video, therefore the results/quality are quite different in different renderers. Common renderers using different chroma algorithms are compared by Madshi here, and the results are summarized below:
MadVR is a unique renderer that uses 16bits processing pipeline, the rest renderers uses only 10bits or 8bits. As an example, ATI’s internal video process pipeline uses 10 bits. Below is the statement from Madshi with regards to why more bits is important:
“I’ve seen many comments about HDMI 1.3 DeepColor being useless, about 8bit being enough (since even Blu-Ray is only 8bit to start with), about dithering not being worth the effort etc. Is all of that true?
It depends. If a source device (e.g. a Blu-Ray player) decodes the YCbCr source data and then passes it to the TV/projector without any further processing, HDMI 1.3 DeepColor is mostly useless. Not totally, though, because the Blu-Ray data is YCbCr 4:2:0 which HDMI cannot transport (not even HDMI 1.3). We can transport YCbCr 4:2:2 or 4:4:4 via HDMI, so the source device has to upsample the chroma information before it can send the data via HDMI. It can either upsample it in only one direction (then we get 4:2:2) or into both directions (then we get 4:4:4). Now a really good chroma upsampling algorithm outputs a higher bitdepth than what you feed it. So the 8bit source suddenly becomes more than 8bit. Do you still think passing YCbCr in 8bit is good enough? Fortunately even HDMI 1.0 supports sending YCbCr in up to 12bit, as long as you use 4:2:2 and not 4:4:4. So no problem.
But here comes the big problem: Most good video processsing algorithms produce a higher bitdepth than you feed them. So if you actually change the luma (brightness) information or if you even convert the YCbCr data to RGB, the original 8bit YCbCr 4:2:0 mutates into a higher bitdepth data stream. Of course we can still transport that via HDMI 1.0-1.2, but we will have to dumb it down to the max HDMI 1.0-1.2 supports.
For us HTPC users it’s even worse: The graphics cards do not offer any way for us developers to output untouched YCbCr data. Instead we have to use RGB. Ok, e.g. in ATI’s control panel with some graphics cards and driver versions you can activate YCbCr output, *but* it’s rather obvious that internally the data is converted to RGB first and then later back to YCbCr, which is a usually not a good idea if you care about max image quality. So the only true choice for us HTPC users is to go RGB. But converting YCbCr to RGB increases bitdepth. Not only from 8bit to maybe 9bit or 10bit. Actually YCbCr -> RGB conversion gives us floating point data! And not even HDMI 1.3 can transport that. So we have to convert the data down to some integer bitdepth, e.g. 16bit or 10bit or 8bit. The problem is that doing that means that our precious video data is violated in some way. It loses precision. And that is where dithering comes for rescue. Dithering allows to “simulate” a higher bitdepth than we really have. Using dithering means that we can go down to even 8bit without losing too much precision. However, dithering is not magic, it works by adding noise to the source. So the preserved precision comes at the cost of increased noise. Fortunately thanks to film grain we’re not too sensitive to fine image noise. Furthermore the amount of noise added by dithering is so low that the noise itself is not really visible. But the added precision *is* visible, at least in specific test patterns (see image comparisons above).
So does dithering help in real life situations? Does it help with normal movie watching?
Well, that is a good question. I can say for sure that in most movies in most scenes dithering will not make any visible difference. However, I believe that in some scenes in some movies there will be a noticeable difference. Test patterns may exaggerate, but they rarely lie. Furthermore, preserving the maximum possible precision of the original source data is for sure a good thing, so there’s not really any good reason to not use dithering.
So what purpose/benefit does HDMI DeepColor have? It will allow us to lower (or even totally eliminate) the amount of dithering noise added without losing any precision. So it’s a good thing. But the benefit of DeepColor over using 8bit RGB output with proper dithering will be rather small.”
Besides MadVR which provides superb chroma upsampling quality, the YV upchroma shader inside MPC-HC seems to produce a very close and similar result. To use it, we need to feed NV12 (which is a special Nvidia colour space) to MPC-HC from our video decoder and choose EVR as renderer.
There are also several resizing/scaling algorithms that we can choose from different renderers, examples are bicubic in EVR or VMR9 and nearest neighbor in overlay and VMR7. In general, bicubic provides better quality than other scaling algorithms which gives an advantage of using EVR renderer over VMR/overlay renderer.
There is a comparison among different scaling algorithms which can be found here, and some results are as follows:
Since EVR, Halli and MadVR provide superior scaling algorithm, I would suggest to use these renderers instead of others. If for some reason we have to stick with overlay or VMR, we should consider to use FFDShow to do scaling instead.
De-interlacing is the process of converting interlaced video, such as common analog television signals or 1080i format HDTV signals, into a non-interlaced form. More information about it can be found here. I don’t have much knowledge in this area, and the ATI hardware de-interlacing satisfies my requirements.
The FPS(frame per second) in different video files might not be the same, for example BBS content is normally in 25P. However, most of movies are in 24P which is in fact 23.976 frames per second (23.976 comes from 24/1.001). In order to play such video at 60HZ refresh rate, 3:2 pulldown is introduced. 3:2 pulldown repeats the first frame 3 times, and then 2nd frame 2 time, so for every 2 frames it generates 5 (24/60=2/5). The potential problem of 3:2 pulldown lies in the fact that some frames stay on the screen longer than others which causes noticeable judder. True 24P playback doesn’t need 3:2 pulldown and the playback should be much smoother. In order to enable true 24P playback we need to make sure that:
When our TV or projector receives 24P signal, it normally either does 5:5 pulldown(display each frame 5 times) or creatively generate intermediate frames(generate 4 frame between every 2 frames). Personally I prefer creative frame generation which is available in my Panasonic projector, but nevertheless, both options should give us smooth playback (comparing to 3:2 pulldown).
I normally perform the following tests to check the output from my HTPC, and running through these tests helps me to find potential software configuration errors. Before we do these tests, we need to know the following:
For 1080P display device, it is important to make sure we obtain 1:1 pixel mapping from our HTPC output. We can use the single pixel patterns available in section B2 or C (see screenshots below) from “Misc Patterns” to check if any of our device resizes the image.
If we don’t get 1:1 pixel mapping we need to check the resolution and overscan/underscan settings of our graphics card and display device. Test pattern 5 (see screenshot below) in “Basic Settings” can be used to detect overscan.
Our HTPC may give us different luma ranges for desktop and video depending on the settings of decoder, renderer and graphics card. Here I’d like to summarize some of the common combinations from my ATI graphics card in the table below:
| Cases | Desktop | Video (main content) | BTB WTW |
Result | Notes |
| 1 | 0-255 | 0-255 | No | OK | Video expanded to 0-255. |
| 2 | 0-255 | 16-235 | Yes | Washed | Video is not expanded. |
| 3 | 16-235 | 16-235 | No | OK | Video is expanded to 0-255 RGB first than everything is compressed to YCbCr. |
| 4 | 16-235 | 2X-22X | Yes | Washed | Video range is not expanded to 0-255 before compression. |
| 5 | 16-235 | 16-235 | Yes | OK | Desktop is compressed to YCbCr while video is output directly in YCbCr colour space without modification which preserves BTB and WTW. |
Some notes from the table above:
In this most important step we need to make sure the luma output from our HTPC is correct and the levels we get for desktop and videos are consistent (case 1, 3 or 5). For this purpose we use “Grayscale Ramp” and/or “Grayscale Steps” patterns in section A of “Misc Patterns” (see screenshots below).
For video part we’d like to make sure that we can see most colour transitions or steps between “Reference Black” and “Reference White” and we should not see BTB and most of WTW (see the theory part). The following settings can be checked when we don’t get the optimal result:
Beside video, we also need to check desktop luma range to make sure it’s consistent with video range. Any grayscale diagram like the follows can help us with this check:
We can use the same “Grayscale Ramp” video to check if banding is introduced by the video pipeline. The following images shows the result with banding (left) and the result without banding (right).
Banding is normally introduced due to luma conversion, and it can be solved either by 1) eliminating luma conversion or 2) introducing dithering to luma conversion. Sadly to say that in most cases we have to go for (and live with) the latter option. We know that MadVR applies dithering automatically when expanding YV12 to RGB while FFDShow requires dithering being manually enabled, to my knowledge both solutions work fine.
This step is to check colour conversion between RGB and YCbCr is carried out correctly. For historic reasons, SD and HD follows different conversion algorithms: ITU-R BT.709 for HD and ITU-R BT.601 for SD. If we sometimes play SD stuff, we probably also need to run colour test with ITU-R BT.601 encoded test patterns. To test correctness of primary colours (red, green and blue), we need to either use colour filters or wave monitor for input signal on display device. Test pattern “Flashing Primary Colours” from A4 in “Misc Patterns” is used in this test scenario(see screenshot below), and the idea is to look through the colour filters and make sure that we don’t see anything flashing. In practice we may still notice flashing even though the colour output from our HTPC is correct, and that is because our display device is not calibrated yet.
To check resizing quality, we can upscale a SD video to 1080P and observe if the result is acceptable. Different resizing algorithms give different results as discussed in theory part, and I think it’s really a personal taste which algorithm to prefer. Normally resizing/scaling are controlled by renderers, and for some renderers such as MadVR or EVR CP provide configuration options so that we can choose the algorithm we prefer. If the renderer we’re using is not configurable, we can consider to use a decoder like FFDShow which supports resizing/scaling and gives us configuration options.
Tearing and judder are two different issues, but they can be both tested with a video that contains a lot of camera shifts. Players like MPC-HC even provides build-in test pattern for tearing which we can use for the same purpose.
If we see constant tearing in video playback, we need to check if Windows Aero is enabled(don’t laugh, Aero do remove tearing). Playing video in D3D full screen mode (with vertical sync on) can also solve this problem if it’s supported by the player.
Judder on the other hand is often cause by 1)mismatch of refresh rate and video FPS or 2) dual screen setup. It is always a good idea to use the right refresh rate for videos in different FPS. For example, with my display being able to accept 24P, 50P and 60P signal, I choose 23.976HZ (23HZ in CCC) when I play 24P, 50HZ when I play 25P, and 59.94HZ(59HZ in CCC) when I play 30P or 30i, and all these materials give me smooth playback without any noticeable judder. In general, we get smooth playback when we set refresh rate to be multiple times of FPS. In case that we can’t find a suitable refresh rate for a certain FPS, we should consider to use ReClock to slow down or speed up the FPS.
In HD world, video processing is normally more expensive and time consuming than audio processing, which as a result can make them out of sync, and we call this lip-sync problem. To check lip-sync we can play a movie with a lot of conversational content, and watch and listen carefully to see if lip movement is out of sync with voice. Small different between video and audio can be easily adjusted by audio delay in our AVR or HTPC, but if the difference is more than 0.5 second, we should probably check configuration of audio/video decoder and CPU/GPU usage.
After trying many different combinations of decoders and renderers, I would like to recommend the following combinations which gives me no problem passing the above mentioned calibration tests: