On Mon, Sep 28, 2020 at 1:44 AM Vieri <[email protected]> wrote:

> Hi,
>
> I'd like to make sure that specific RDP connections get the best image
> quality regardless of bandwidth.
> ...
> Should I leave DPI undefined, or should I manually give it a value of,
> say, 300?
>

Short answer:

No. The "dpi" parameter affects only how the client width/height are
interpreted, not image quality.

Long answer:

The "dpi" parameter controls the *effective resolution* of the display
only. It will not have any effect on the true remote display resolution as
it pertains to things like font/vector rendering quality, which Guacamole
(and typically Windows) assume is 96 DPI.

So why is the DPI used at all if it has no effect on the true DPI of the
Windows' display?

Very high DPI devices like modern cell phones have a great many pixels
covering a small area. If the true dimensions of these displays were sent
as-is to Windows, the screen that you see on the client side would be
unusable. With the Windows side assuming 96 DPI, you would end up with text
that would be readable on a large monitor but is just microprint on a
handheld device. To combat this, Guacamole's RDP support uses heuristics to
determine a width and height to request for the remote desktop that will be
"reasonable" based on the client-side DPI and dimensions.

Blindly using an effective 96 DPI would produce a display that typically
does not have enough screen real estate to be usable on small devices,
whereas blindly using the true client-side DPI would produce a display
that's unusable for the reasons noted above. Guacamole's heuristics will
typically select a DPI somewhere in between.

You can see the internals of how this is done here:

https://github.com/apache/guacamole-server/blob/ceabd68e280c416e31cc35b105eac33dc13eb11e/src/protocols/rdp/client.h#L46-L63
https://github.com/apache/guacamole-server/blob/ceabd68e280c416e31cc35b105eac33dc13eb11e/src/protocols/rdp/resolution.c

Specifying the "dpi" parameter overrides these heuristics.

- Mike

Reply via email to