Split from #592.
The problems:
Much improved in:
Still TODO:
A good way to see this in action, which also helps to understand what it does is to start with min-quality at 0 and quality very very low. From the command line or:
xpra control :10 min-quality 0 xpra control :10 quality 1
Then later you can go back to normal with:
xpra control :10 quality 0 xpra control :10 min-quality 30
Retested with 14.0 r6853 Windows 7 64-bit client against a 14.0 r6853 Fedora 20 server:
As I mentioned in #410, with the video running, the whole webpage becomes blurry as well and stays that way. It appears that the auto-refresh for the rest of the webpage is not kicking in, and staying in a low-quality state, which could go into an even worse state with the min-quality lowered.
I'll attach some screenshots.
google-chrome
with min-quality 0
and quality 6
, the whole page generally remains blurry, but with firefox
or lazarus the non-video section (mostly) remains clear while the video section becomes blurry as expected.
quality 0
and min-quality 30
makes youtube sharp with firefox or lazarus, but chrome is still very blurry.
-d refresh
and a firefox window - while video is playing there are an expected flurry of h264 refreshes; with occasional rgb24 refresh checks (unless are changes, such as rolling the mouse over the window).
2014-06-20 16:46:27,823 auto refresh: rgb24 screen update (quality=100), nothing to do (region=rectangle[50, 479, 443, 20], refresh regions=[]) 2014-06-20 16:46:27,868 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:27,880 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:27,919 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:27,963 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:28,002 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:28,028 auto refresh: rgb24 screen update (quality=100), nothing to do (region=rectangle[50, 479, 444, 39], refresh regions=[]) 2014-06-20 16:46:28,050 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:28,085 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:28,130 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:28,163 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:28,199 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:28,229 auto refresh: rgb24 screen update (quality=100), nothing to do (region=rectangle[50, 479, 444, 20], refresh regions=[]) 2014-06-20 16:46:28,250 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:28,285 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:28,326 auto refresh: h264 screen update (quality= 70), list of refresh regions unchanged (region=rectangle[50, 131, 640, 390], refresh regions=[]) 2014-06-20 16:46:28,331 auto refresh: rgb24 screen update (quality=100), nothing to do (region=rectangle[688, 484, 2, 4], refresh regions=[])
-d refresh
and a chrome window - while video is playing there seem to be a mix of rgb, jpeg and h264 refresh screen updates and png auto refresh packets being sent:
2014-06-20 16:17:37,311 schedule_auto_refresh: elapsed time 379 with target=297, refreshing now 2014-06-20 16:17:37,311 timer_full_refresh() after 0ms, regions=[R[0, 0, 1450, 894]] 2014-06-20 16:17:37,459 auto-refresh png packet sent 2014-06-20 16:17:39,523 auto refresh: jpeg screen update (quality= 34), scheduling refresh (region=rectangle[0, 0, 213, 26], refresh regions=[R[0, 0, 213, 26]]) 2014-06-20 16:17:39,622 auto refresh: jpeg screen update (quality= 34), list of refresh regions unchanged (region=rectangle[0, 0, 213, 26], refresh regions=[R[0, 0, 213, 26]]) 2014-06-20 16:17:39,726 auto refresh: jpeg screen update (quality= 35), list of refresh regions unchanged (region=rectangle[0, 0, 213, 26], refresh regions=[R[0, 0, 213, 26]]) 2014-06-20 16:17:39,816 auto refresh: h264 screen update (quality= 37), keeping existing timer (region=rectangle[0, 0, 1450, 894], refresh regions=[R[0, 0, 1450, 894]]) 2014-06-20 16:17:39,818 auto refresh: rgb24 screen update (quality=100), removed rectangle from regions (region=rectangle[1450, 0, 1, 895], refresh regions=[R[0, 0, 1450, 894]]) 2014-06-20 16:17:39,818 auto refresh: rgb24 screen update (quality=100), removed rectangle from regions (region=rectangle[0, 894, 1451, 1], refresh regions=[R[0, 0, 1450, 894]]) 2014-06-20 16:17:39,875 schedule_auto_refresh: elapsed time 352 with target=297, refreshing now 2014-06-20 16:17:39,876 timer_full_refresh() after 0ms, regions=[R[0, 0, 1450, 894]] 2014-06-20 16:17:40,025 auto-refresh png packet sent 2014-06-20 16:17:40,025 auto refresh: jpeg screen update (quality= 35), scheduling refresh (region=rectangle[0, 0, 213, 26], refresh regions=[R[0, 0, 213, 26]]) 2014-06-20 16:17:40,056 auto refresh: jpeg screen update (quality= 35), list of refresh regions unchanged (region=rectangle[0, 0, 213, 26], refresh regions=[R[0, 0, 213, 26]]) 2014-06-20 16:17:40,222 auto refresh: jpeg screen update (quality= 35), list of refresh regions unchanged (region=rectangle[0, 0, 213, 26], refresh regions=[R[0, 0, 213, 26]]) 2014-06-20 16:17:40,289 schedule_auto_refresh: elapsed time 263 with target=50, refreshing now 2014-06-20 16:17:40,289 timer_full_refresh() after 0ms, regions=[R[0, 0, 213, 26]] 2014-06-20 16:17:40,292 auto-refresh png packet sent 2014-06-20 16:17:40,310 auto refresh: jpeg screen update (quality= 35), scheduling refresh (region=rectangle[0, 0, 213, 26], refresh regions=[R[0, 0, 213, 26]]) 2014-06-20 16:17:40,410 auto refresh: jpeg screen update (quality= 35), list of refresh regions unchanged (region=rectangle[0, 0, 213, 26], refresh regions=[R[0, 0, 213, 26]]) 2014-06-20 16:17:40,510 auto refresh: jpeg screen update (quality= 35), list of refresh regions unchanged (region=rectangle[0, 0, 213, 26], refresh regions=[R[0, 0, 213, 26]]) 2014-06-20 16:17:40,572 schedule_auto_refresh: elapsed time 262 with target=50, refreshing now 2014-06-20 16:17:40,573 timer_full_refresh() after 0ms, regions=[R[0, 0, 213, 26]] 2014-06-20 16:17:40,575 auto-refresh png packet sent 2014-06-20 16:17:48,633 auto refresh: h264 screen update (quality= 37), scheduling refresh (region=rectangle[0, 0, 1450, 894], refresh regions=[R[0, 0, 1450, 894]])
h264
updates for the video subregion (443x20 at 50x479). The other areas update as lossless (rgb24
shown in log). What we want to know is if the video region gets a lossless refresh soon after the video stops playing (pause the video or change tab). And if the non-video regions get lossless updates whilst the video is playing.
This ticket is about the quality setting when refreshing the non-video regions. It is only relevant when video regions are detected. Also, note that setting the quality very low is useful for inspecting visually what is happening, to see when things get a lossless refresh if we do end up sending a low quality update, but unless it also happens with the correct settings, it is not necessarily a bug.
With the issues seeming to be related to #410 rather than this ticket, everything else seems to be working as expected. Adjusting quality &/or min-quality primarily affects the video regions when there is video playing, and the pages overall if there's no region requiring especial attention.
Closing.
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/596