Skip to content

Add selectable client-side downscaling filters #1994

Open

Description

@Tiikara

Hi,

I render and stream at 3840x2400 to a 1280x800 Steam Deck, using the high-resolution stream as exact 3x supersampling. Moonlight's current fast scaler leaves visible aliasing and shimmering on thin geometry and textures.

The common workaround is to use:

3840x2400 -> 2560x1600 before encoding -> 1280x800 on the client

This looks better, but it adds a fractional 1.5x resize before the final 2x resize. Detail removed or blurred in the first pass cannot be recovered, and two generic scaling passes are not equivalent to one properly filtered 3x resolve from the decoded 2400p frame.

With enough bitrate, I also prefer keeping the original 2400p spatial detail and motion cues available to the encoder instead of discarding them before compression.

This should be separate from resolution selection: stream resolution controls what is encoded and transmitted, while the downscaling filter controls how the decoded frame is mapped to the physical display.

I implemented this using libplacebo. area/box, hermite, and mitchell-netravali all produced clearly cleaner and more stable results in my 3x tests.

Would you consider adding selectable downscaling filters under Advanced Settings?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions