New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 684162 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Last visit > 30 days ago
Closed: Feb 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug

Blocking:
issue 663073
issue 679523



Sign in to add a comment

DirectX screen capturer doesn't handle screen size changes properly

Project Member Reported by sergeyu@chromium.org, Jan 24 2017

Issue description

1. Install recent M57 host on Win10 machine with curtain (haven't tested without curtain).
2. Resize client window to make it smaller

Expected: The desktop is resized.
Observed: See attached screen shot: Desktop is resized, but the canvas it is rendered onto isn't. The host keeps sending video at the old resolution, while only portion of the screen is being used and updated.

There were two changes that may be related:
 - New DX capturer.
 - Screen resizing for Win 10 in curtain mode.
 
screenshot.png
400 KB View Download
Cc: zijiehe@chromium.org
I can reproduce this with the desktop capture API in chrome. This means it's a bug in the new capturer.
Owner: sergeyu@chromium.org
Status: Started (was: Untriaged)
The capturer resets the frame queue only after it fails to capture a frame, see https://codesearch.chromium.org/chromium/src/third_party/webrtc/modules/desktop_capture/win/screen_capturer_win_directx.cc?sq=package:chromium&l=92 . This means that when desktop become smaller it fails to notice it and keeps using the old set of frame buffers.
Cc: qiangchen@chromium.org niklase@chromium.org
Components: Blink>GetUserMedia>Desktop Services>Chromoting
Summary: DirectX screen capturer doesn't handle screen size changes properly (was: Desktop size isn't updated properly when screen is resized)
Should I revert the launch CL yet, and relaunch it after this fix?
Labels: ReleaseBlock-Stable
Sounds like something we can fix and merge to 57.
I'm working on a fix right now, but it might be quite substantial. I'm not sure at this point if it's better to fix or disable the new capturer for M57. I'll update this bug when I have a working fix. 

It also looks like there is another related issue: the capturer doesn't detect on-fly when a new monitor is connected.
Yes, this is a defect in new capturer, which can only detect the resolution increments but not decrements. https://cs.chromium.org/chromium/src/third_party/webrtc/modules/desktop_capture/win/dxgi_output_duplicator.cc?rcl=0&l=159
We can use GetScreenRect() each time in CaptureFrame() function, so both issues can be resolved.

Joe also reports a bug https://bugs.chromium.org/p/chromium/issues/detail?id=684937, DX capturer cannot capture lock screen in non-curtain mode. It looks like disabling new capturer would be a safer solution for now.
Blocking: 663073
Blocking: 679523
Owner: zijiehe@chromium.org
Status: Assigned (was: Started)
Labels: -ReleaseBlock-Stable -M-57 M-58
This bug should only impact DxgiTextureMapping, which is used on systems with shared cpu / gpu memory.
Owner: ajnolley@chromium.org
Status: Fixed (was: Assigned)
Change https://codereview.webrtc.org/2682913002 has been submitted to fix this issue.

AJ, would you mind to confirm it?
Status: Verified (was: Fixed)
Checked on Win 10 with curtain mode (and without) and this no longer occurs. Verified Fixed with 59.0.3062.0 Host. 

Sign in to add a comment