Fixes distortion in WGC screen capture path
This is a partial revert of the previously landed CL in https://webrtc-review.googlesource.com/c/src/+/301200. I noticed when I used `getDisplayMedia` on my private Windows laptop in combination with WGC that the captured screen was distorted and did only contain tilted (~35 degrees) lines in all sorts of colors. The issue only happened for one particular screen resolution 3000 x 2000 and 200% scale. Changing to 100% scale instead resolved the issue. I tried many other resolutions but could only trigger for the one above with 200% scaling. Next, I bisected and found [1] which led to [2] which contains my own change in https://webrtc-review.googlesource.com/c/src/+/301200. The only part that could affect the video frame was the part which did `CopyPixelsFrom` so I reverted that part and it solved the issue on my private Windows laptop. I did not dig deeper into why this particular resolution triggered the distortion but deiced to revert to avoid more reports. [1]b4c2a7fcf5..ff848b7a43[2]a9a2957dbcBug: chromium:1428592 Change-Id: I328e77840cd3ca6871254cdf06500bdc616b0c36 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/306600 Commit-Queue: Alexander Cooper <alcooper@chromium.org> Reviewed-by: Alexander Cooper <alcooper@chromium.org> Cr-Commit-Position: refs/heads/main@{#40147}
This commit is contained in:
parent
40a0fa95c8
commit
2264e7aacc
@ -430,8 +430,12 @@ HRESULT WgcCaptureSession::ProcessFrame() {
|
||||
// Make a copy of the data pointed to by `map_info.pData` to the preallocated
|
||||
// `current_frame` so we are free to unmap our texture.
|
||||
uint8_t* src_data = static_cast<uint8_t*>(map_info.pData);
|
||||
current_frame->CopyPixelsFrom(src_data, current_frame->stride(),
|
||||
DesktopRect::MakeSize(current_frame->size()));
|
||||
uint8_t* dst_data = current_frame->data();
|
||||
for (int i = 0; i < image_height; i++) {
|
||||
memcpy(dst_data, src_data, current_frame->stride());
|
||||
dst_data += current_frame->stride();
|
||||
src_data += map_info.RowPitch;
|
||||
}
|
||||
|
||||
d3d_context->Unmap(mapped_texture_.Get(), 0);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user