2014-07-22, 09:31
Hi there,
I'm currently trying XBMC on a high-end Windows PC. Looks quite nice, but I have to say the image scaling quality (especially downscaling) is atrocious. Looks like a simple Bilinear stretch to me, which doesn't take all pixels into account. The proper way to downscale images is to apply linear filtering. E.g. I'd recommend using Lanczos with 3-taps, or Bicubic with 2-taps. Here's a small image comparison:
(original)
The left side was downscaled with Lanczos3, the right side is how XBMC currently downscales. As you can see, the XBMC produced downscale is terribly aliased, with visible jaggies everywhere.
There are many good Lanczos/Bicubic implementations available under GPL. Hopefully XBMC could use one of those, if the CPU is capable enough for that? Bicubic would work well enough. Should also be pretty easy to apply Bicubic scaling in a Direct3D or OpenGL pixel shader. E.g. some of the MPC-HC internal video renderers already have GPL code for that (for Direct3D).
I'm currently trying XBMC on a high-end Windows PC. Looks quite nice, but I have to say the image scaling quality (especially downscaling) is atrocious. Looks like a simple Bilinear stretch to me, which doesn't take all pixels into account. The proper way to downscale images is to apply linear filtering. E.g. I'd recommend using Lanczos with 3-taps, or Bicubic with 2-taps. Here's a small image comparison:
(original)
The left side was downscaled with Lanczos3, the right side is how XBMC currently downscales. As you can see, the XBMC produced downscale is terribly aliased, with visible jaggies everywhere.
There are many good Lanczos/Bicubic implementations available under GPL. Hopefully XBMC could use one of those, if the CPU is capable enough for that? Bicubic would work well enough. Should also be pretty easy to apply Bicubic scaling in a Direct3D or OpenGL pixel shader. E.g. some of the MPC-HC internal video renderers already have GPL code for that (for Direct3D).