bk138 / droidVNC-NG

VNC server app for Android that does not require root privileges.
GNU General Public License v2.0
1.39k stars 201 forks source link

Loss of image quality on v2.7.0 vs 2.6.0 #240

Closed master255 closed 1 month ago

master255 commented 2 months ago

@bk138 On the latest version 2.7.2 from the Play market, I got a black bar on the right side of the screen and the image quality deteriorated, even on the maximum image quality setting. Connection via novnc

This did not happen on version 2.6.0.

The screenshot shows the maximum image quality, but you can clearly see that there are artifacts: image

bk138 commented 2 months ago

@master255 There's no change between 2.7.0 and 2.7.2 affecting image quality or the black bar issue you're seeing (which is in fact #145, so let's track there :-) ).

master255 commented 2 months ago

@bk138 You closed the bug too quickly. My mistake. There were no problems on version 2.6.0. Here's a screenshot. I just installed it. Probably the degradation happened between versions 2.6.0 and 2.7.0 image

master255 commented 2 months ago

@bk138 Re-open the bug

bk138 commented 2 months ago

@master255 here are the changes between 2.6.0 and 2.7.2: https://github.com/bk138/droidVNC-NG/compare/v2.6.0...v2.7.2

Are you able to build from source and do a bisect maybe? If not, having a look at each change would help.

The only thing I can imagine causing image quality loss is 3da1dda07e1694e54636217987a091b813cbac36 but that was already on 2.4.0.

master255 commented 2 months ago

@bk138 Too much unfamiliar code. I can test apk files if you provide them and collect logcat logs. I've downloaded the project now and I'm looking at the code. But the project does not compile because of errors in the code.

Upd: I was able to compile and run the application. But noVnc doesn't work.

master255 commented 2 months ago

@bk138 How can this be fixed? image

bk138 commented 2 months ago

@master255 can you compile a list of steps for me to reproduce? With versions used, settings used, outcome, as specific as possible? I can then have a look myself.

master255 commented 2 months ago

@bk138 Just all defaults and image quality to max. Android 8.0. Galaxy S8+.

bk138 commented 2 months ago

@bk138 Just all defaults and image quality to max. Android 8.0. Galaxy S8+.

You mean server side scaling? Which client was used? Which server version worked, which did not?

master255 commented 2 months ago

@bk138 1. Yes.

  1. noVNC buildin
  2. 2.6.0 good, 2.7.0+ bad
bk138 commented 2 months ago

@master255 I now tried

I get the same image quality with both, a black bar on the right is present in both. In short, can't reproduce the issue :-/

You might want to check your browser's local storage for noVNC quality settings (if none there, it's using defaults), or try with another browser. Another thing that comes to mind is trying on a different network.

master255 commented 2 months ago

@bk138 Android 8.0? What's the device?

bk138 commented 2 months ago

Android 12, some Samsung.

master255 commented 2 months ago

@bk138 So I'm testing on Android 8.0. You should test on that version too. Or your app is only for Android 12+?

master255 commented 2 months ago

@bk138 On my Galaxy S22 Ultra Android 12 on version 2.7.2, I can't see the side line. But the image quality is also very poor, even at the highest setting. image

master255 commented 2 months ago

@bk138 And I'm sure on version 2.6.0 the picture quality will be fine.

bk138 commented 2 months ago

@master255 can you please test with an Android 8 emulator image and post the setup and results here?

master255 commented 2 months ago

@bk138 No. I can't test with the emulator because it doesn't have network access

bk138 commented 2 months ago

@bk138 No. I can't test with the emulator because it doesn't have network access

--> https://developer.android.com/studio/run/emulator-networking should help

master255 commented 2 months ago

@bk138 I added port redirection: redir add tcp:5800:5800 redir add tcp:5900:5900

Through the emulator console (telnet) But still can't open the link http://127.0.0.1:5800/vnc.html?autoconnect=true&host=127.0.0.1&port=5900

Maybe I need to do something else?

bk138 commented 2 months ago

@bk138 I added port redirection: redir add tcp:5800:5800 redir add tcp:5900:5900

Through the emulator console (telnet) But still can't open the link http://127.0.0.1:5800/vnc.html?autoconnect=true&host=127.0.0.1&port=5900

Maybe I need to do something else?

I just tested with

adb forward tcp:5800 tcp:5800
adb forward tcp:5900 tcp:5900

Then http://127.0.0.1:5800/vnc.html?autoconnect=true&host=127.0.0.1&port=5900 works.

Can't reproduce the image quality issue either.

master255 commented 1 month ago

@bk138 Yes. I was able to forward the ports too. I think your problem is that you are overprotecting your program. Here, I found an obvious problems with the image quality. image

bk138 commented 1 month ago

Well if we can find a fix I'm happy to add it. I'm not saying you don't see an issue. I am just not able to reproduce it nor can I see a recent code change that might trigger it. To get this clear: I hear you, but what can be a proper fix?

master255 commented 1 month ago

@bk138 It feels like libvncserver has changed. I think the problem is in it.

bk138 commented 1 month ago

You could try building the server with different commits/versions of libvncserver - within https://github.com/bk138/droidVNC-NG/compare/v2.6.0...v2.7.0 only https://github.com/bk138/droidVNC-NG/commit/d7cf3ac24b2d46e234a2461544142ff113f95092 touches libvncserver, and this is going from https://github.com/LibVNC/libvncserver/commits/acac77968d6ea9a8f09d7b758fe1bffac31da7eb to https://github.com/LibVNC/libvncserver/commits/06cff313d22deebcb55d720541d3faeae2986347 ...

master255 commented 1 month ago

@bk138 I don't have time to do this. I write other programs. More important ones.

bk138 commented 1 month ago

@bk138 I don't have time to do this. I write other programs. More important ones.

Hey fair enough! Here are two screenshots using the built-in noVNC, server is running on the same Android 8 emulated device:

v2.6.0 v2.7.0
grafik grafik

tl;dr: can't reproduce. It's probably got something to do with different network conditions, maybe noVNC has got some auto-sensing. Also, as per https://github.com/bk138/droidVNC-NG/issues/240#issuecomment-2362877615, the libvncserver changes in between don't touch any imaging-related code.

master255 commented 1 month ago

@bk138 Both screens are poor quality. Where is the good quality? I think you're wrong and I'll send you a comparison of the screen versions on the emulator later.