In my opinion the two main curses of HTPCs are tearing and judder (T&J). Any rational person would probably choose a €80 DVD player from the nearest discount store instead of an HTPC that can easily be ten times as expensive and ten times as fickle. But then again, some people actually prefer a fickle Jaguar before a reliable Volkswagen. When it comes to watching digital movies, I’m one of those.
My additions to the MPC-HC are intended to address the T&J problem as described elsewhere on this blog. MPC-HC has a lot of bells and whistles and some let you trade one feature for another. If you for instance use a lot of GPU cycles on executing pixel shader code to execute fancy filters, you will most likely get T&J or at least T, as there may not be enough time to execute all the rendering and shader code between two frames.
Even disabling pixel shaders, there is still some time-consuming code to be executed if you wish; there are a bunch of different resizers. Resizers perform filtering when enlarging a frame to avoid blockiness. I ran some experiments with different types of resizers with my graphics board to decide how much sync offset that was required to avoid tearing with each resizer. Sync offset basically decides how much time you have to execute the resizer code. This is what I found out:
| Resizer |
Min sync offset |
| Nearest neighbor |
5 ms |
| Bilinear |
5 ms |
| Bilinear (PS 2.0) |
6 ms |
| Bicubic(PS 2.0) |
15 ms |
The Present at nearest vsync sync option was used in MPC-HC Gothsync patch 9018. No other shaders were activated. Non-exclusive mode full-screen was used to resize from 720 x 416 to 1280 x 720. The graphics board used was an ATI 3450 with ATI Catalyst 9.9 driver for XP.
Displaying the full on-screen statistics display requires an additional 2 ms or so of sync offset (drawing time).
These numbers will most likely vary between boards but do clearly indicate that there is a trade-off between tearing and resizer complexity. I think a bilinear resizer is a good compromise between speed and image quality but then again, a display refresh cycle of 20 ms (50 Hz) is long enough to execute even the most time consuming resizer (15 ms).