OSSC Pro: Does the Nearest setting have interpolation?
NewHome › Forums › OSSC, OSSC Pro and DExx-vd isl › OSSC – Discussion and support › OSSC Pro: Does the Nearest setting have interpolation?
- This topic has 3 replies, 3 voices, and was last updated March 15, 2024 at 7:19 PM by
Zacabeb.
-
AuthorPosts
-
March 15, 2024 at 9:21 AM #60706
I have a pretty basic question about the OSSC Pro that I haven’t been able to find an answer to. When you’re in scaler mode and the scaling algorithm is set to “Nearest,” do you get true nearest neighbor scaling complete with uneven pixel sizes and scrolling shimmer, or do you get integer scaling with interpolation (“bilinear sharp” as it’s sometimes called)? I would hope it would be the latter, but all the descriptions I’ve read/heard of this setting conspicuously fail to address whether it has interpolation.
March 15, 2024 at 9:33 AM #60707Having used the OSSC Pro since November: The nearest neighbor scaling does have uneven pixel scaling without any further interpolation. So I use it on NTSC sources which might as well be integer scaled, but use the general scaling (GS in the settings) filter on PAL sources (slightly blurrier of course, but that might not matter depending on the distance to the TV/Monitor).
A “bilinear sharp” setting would indeed be nice, I don’t know if it would be directly implementable. You could try MiSTer filters though. Just rename them to scaler1.txt and scaler2.txt on the SD card.
Hope that helps. 🙂
March 15, 2024 at 9:40 AM #60708That’s a bit unfortunate, but I’m reasonably confident I can figure out how to get the results I want using the MiSTer filters. Thanks for your help.
March 15, 2024 at 7:19 PM #60717Given the support for polyphase scaling, shouldn’t it be possible to add this as a default setting?
If I understand the MISTer polyphase LUTs, a strict nearest-neighbor filter would be created by filling the first 8 of the 16 entries with [0, 128, 0, 0] and the last 8 with [0, 0, 128, 0]. A bilinear sharp filter or hybrid nearest neighbor/bilinear filter would have the entries for the middle phases replaced with a ramped set of values, but the number of phase entries making up that ramp would need to be set to match the fraction of the scaling factor divided by its integer part.
For instance, scaling from 240p to 1080p gives a scaling factor of 4.5 while scaling from 256p to 1080p gives a lower scaling factor of 4.21875. In the latter, the ramp would occupy fewer values. While I assume this can be done with the custom filters, we’re stuck with two presets and thus optimizations for only two scaling factors.
So, a mode which calculates the necessary LUT based on the effective scaling factor to produce a sharp bilinear scaling should be fully possible and quite useful.
Edit: Thinking some more about it, the number of entries making up the ramp should be the decimal part divided by the whole value, not just the integer part. Also, so long as the integer part is the same between two scaling factors, the same LUT should work for both. So a smooth nearest neighbor scaling mode might just need four predefined LUTs for ≈2x, 3x, 4x, and 5x scaling and pick the closest one given the effective scaling factor.
-
This reply was modified 1 year, 4 months ago by
Zacabeb. Reason: Additional thoughts
-
This reply was modified 1 year, 4 months ago by
-
AuthorPosts
- You must be logged in to reply to this topic.