There will be a new toy to play with in the next build.
The Pi has some quite advanced scaling hardware which is able to do higher quality scaling than other ARM (and probably most PC) boxes.
I've added an API to the firmware where the scaling kernel (a 32 tap filter) can be controlled.
I've hooked that into the sharpness control on the video OSD.
I've used the sharpness control for now as that gives an unobtrusive slider at the top of screen, rather than the scaling method drop down which obscures most of the screen.
Basically sharpness=0 uses the default scaling kernel (Sinc over the range +-3*PI with Hamming window applied).
Each click to the right of that uses a different kernel. I've implemented 9 kernels. Try them and report what you prefer.
Some suggestions:
It's probably best to pause the video when there is some detail visible (like text) to see the effect.
Don't try it when video is 1080p and display is 1080p or you won't see anything. It's more interesting when playing SD content on a HD display
It's not magic. The kernels are a compromise between sharpening (producing more detail, but increasing noise) and blurring (hides the noise and the detail).
The best option for SD video may be different to the best option for 720p.
If anyone is curious and especially if they know about image scaling, then you can see the current kernel with:
Code:
vcgencmd scaling_kernel
scaling_kernel=-2 -3 -4 -4 -3 1 9 22 40 64 90 118 145 169 186 196 196 186 169 145 118 90 64 40 22 9 1 -3 -4 -4 -3 -2 0
and set it with a similar command. The first 32 numbers are the filter coefficients. The last is whether coefficients interpolation is disabled.
(it should be 0 unless doing a nearest-neighbour type kernel).