| // Copyright 2021 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "screen-capture-utils/kmsvnc_utils.h" |
| |
| namespace screenshot { |
| |
| uint32_t getVncWidth(uint32_t crtc_width) { |
| return (crtc_width + 3) / 4 * 4; |
| } |
| |
| void ConvertBuffer(const DisplayBuffer::Result& from, |
| char* to, |
| uint32_t vnc_width) { |
| // For cases where vnc width != display width(vnc needs to be a multiple of 4) |
| // then vnc width will always be greater than display width. |
| // In that case, we are copying only the available pixels from the display |
| // buffer, and leaving the remainder as-is (zero valued) |
| for (int i = 0; i < from.height; i++) { |
| memcpy(to + vnc_width * kBytesPerPixel * i, |
| static_cast<char*>(from.buffer) + from.stride * i, |
| from.width * kBytesPerPixel); |
| } |
| } |
| |
| } // namespace screenshot |