mirror of
https://github.com/kasmtech/KasmVNC.git
synced 2025-06-27 05:01:41 +02:00
KASM-7125 fixed issue with rebuilding Xvnc, switched to simplier webp mix math.
This commit is contained in:
parent
02852185a8
commit
00b8d025db
@ -76,6 +76,9 @@ if [ ! -d unix/xserver/include ]; then
|
||||
patch -s -p0 < ../CVE-2022-2320-v1.19.patch
|
||||
;;
|
||||
esac
|
||||
else
|
||||
cd unix/xserver
|
||||
fi
|
||||
|
||||
autoreconf -i
|
||||
# Configuring Xorg is long and has many distro-specific paths.
|
||||
@ -114,7 +117,7 @@ if [ ! -d unix/xserver/include ]; then
|
||||
|
||||
# remove array bounds errors for new versions of GCC
|
||||
find . -name "Makefile" -exec sed -i 's/-Werror=array-bounds//g' {} \;
|
||||
fi
|
||||
|
||||
|
||||
make -j"$(nproc)"
|
||||
|
||||
|
@ -360,7 +360,6 @@ void EncodeManager::doUpdate(bool allowLossy, const Region& changed_,
|
||||
int nRects;
|
||||
Region changed, cursorRegion;
|
||||
struct timeval start;
|
||||
unsigned screenArea;
|
||||
|
||||
updates++;
|
||||
if (conn->cp.supportsUdp)
|
||||
@ -390,17 +389,7 @@ void EncodeManager::doUpdate(bool allowLossy, const Region& changed_,
|
||||
memset(&webpstats, 0, sizeof(codecstats_t));
|
||||
|
||||
if (allowLossy && activeEncoders[encoderFullColour] == encoderTightWEBP) {
|
||||
const unsigned rate = 1024 * 1000 / rfb::Server::frameRate;
|
||||
|
||||
screenArea = pb->getRect().width() * pb->getRect().height();
|
||||
screenArea *= 1024;
|
||||
screenArea /= 256 * 256;
|
||||
screenArea *= webpBenchResult;
|
||||
screenArea /= Server::webpEncodingTime;
|
||||
// Encoding the entire screen would take this many 1024*msecs, worst case
|
||||
|
||||
// Calculate how many us we can send webp for, before switching to jpeg
|
||||
webpFallbackUs = rate * rate / screenArea;
|
||||
webpFallbackUs = (1000 * 1000 / rfb::Server::frameRate) * (static_cast<double>(Server::webpEncodingTime) / 100.0);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -884,7 +873,7 @@ void EncodeManager::findSolidRect(const Rect& rect, Region *changed,
|
||||
void EncodeManager::checkWebpFallback(const timeval *start) {
|
||||
// Have we taken too long for the frame? If so, drop from WEBP to JPEG
|
||||
if (start && activeEncoders[encoderFullColour] == encoderTightWEBP && !webpTookTooLong.load(std::memory_order_relaxed)) {
|
||||
const auto us = msSince(start) * 1024;
|
||||
const auto us = msSince(start) * 1000;
|
||||
if (us > webpFallbackUs)
|
||||
webpTookTooLong.store(true, std::memory_order_relaxed);
|
||||
}
|
||||
|
@ -290,5 +290,5 @@ rfb::PresetParameter rfb::Server::preferBandwidth
|
||||
|
||||
rfb::IntParameter rfb::Server::webpEncodingTime
|
||||
("webpEncodingTime",
|
||||
"Sets a weighted value that determines how much webp is used to balance bandwidth and CPU usage.",
|
||||
1, 1, 1000);
|
||||
"Percentage of time allotted for encoding a frame, that can be used for encoding rects in webp.",
|
||||
30, 0, 100);
|
||||
|
@ -129,7 +129,7 @@ encoding:
|
||||
logging:
|
||||
level: off
|
||||
scaling_algorithm: progressive_bilinear
|
||||
webp_encoding_time: auto
|
||||
webp_encoding_time: 30
|
||||
|
||||
compare_framebuffer: auto
|
||||
zrle_zlib_level: auto
|
||||
|
@ -2073,21 +2073,9 @@ sub DefineConfigToCLIConversion {
|
||||
configKeys => [
|
||||
KasmVNC::ConfigKey->new({
|
||||
name => "encoding.video_encoding_mode.webp_encoding_time",
|
||||
validator => KasmVNC::PatternValidator->new({
|
||||
pattern => qr/^(auto|[1-9][0-9]{0,2}|1000)$/,
|
||||
errorMessage => "must be 'auto' or a number in 1..1000"
|
||||
}),
|
||||
type => KasmVNC::ConfigKey::INT
|
||||
})
|
||||
],
|
||||
deriveValueSub => sub {
|
||||
my $self = shift;
|
||||
my $value = $self->configValue();
|
||||
|
||||
if ($value eq "auto") {
|
||||
$value = 1;
|
||||
}
|
||||
$value;
|
||||
}
|
||||
]
|
||||
}),
|
||||
KasmVNC::CliOption->new({
|
||||
name => 'CompareFB',
|
||||
|
Loading…
x
Reference in New Issue
Block a user