From 4b58f0b4ddb02e20a7aaa43cb8e382bb314807e8 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Tue, 11 Jul 2023 22:33:53 +0200 Subject: [PATCH] Allow to explicitly increase the bitrate massively This has the benefit - over direct connections - to be able to send a lot more data. In particular fast moving frames may avoid fps drops with a higher target bitrate. --- libs/hbb_common/src/config.rs | 4 ++-- src/server/video_qos.rs | 6 +++--- src/ui/header.tis | 11 +++++++++-- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/libs/hbb_common/src/config.rs b/libs/hbb_common/src/config.rs index 8f2e180a0..7bdd322d3 100644 --- a/libs/hbb_common/src/config.rs +++ b/libs/hbb_common/src/config.rs @@ -1078,7 +1078,7 @@ impl PeerConfig { D: de::Deserializer<'de>, { let v: Vec = de::Deserialize::deserialize(deserializer)?; - if v.len() == 1 && v[0] >= 10 && v[0] <= 100 { + if v.len() == 1 && v[0] >= 10 && v[0] <= 0xFFF { Ok(v) } else { Ok(Self::default_custom_image_quality()) @@ -1402,7 +1402,7 @@ impl UserDefaultConfig { "codec-preference" => { self.get_string(key, "auto", vec!["vp8", "vp9", "av1", "h264", "h265"]) } - "custom_image_quality" => self.get_double_string(key, 50.0, 10.0, 100.0), + "custom_image_quality" => self.get_double_string(key, 50.0, 10.0, 0xFFF as f64), "custom-fps" => self.get_double_string(key, 30.0, 5.0, 120.0), _ => self .options diff --git a/src/server/video_qos.rs b/src/server/video_qos.rs index dda15fd55..2ebcdaa84 100644 --- a/src/server/video_qos.rs +++ b/src/server/video_qos.rs @@ -299,9 +299,9 @@ impl VideoQoS { } else if q == ImageQuality::Best.value() { Quality::Best } else { - let mut b = (q >> 8 & 0xFF) * 2; - b = std::cmp::max(b, 10); - b = std::cmp::min(b, 200); + let mut b = (q >> 8 & 0xFFF) * 2; + b = std::cmp::max(b, 20); + b = std::cmp::min(b, 8000); Quality::Custom(b as u32) } }; diff --git a/src/ui/header.tis b/src/ui/header.tis index 2d79db8fa..022792f7e 100644 --- a/src/ui/header.tis +++ b/src/ui/header.tis @@ -424,10 +424,17 @@ class Header: Reactor.Component { function handle_custom_image_quality() { var tmp = handler.get_custom_image_quality(); var bitrate = (tmp[0] || 50); - msgbox("custom", "Custom Image Quality", "
\ -
x% Bitrate
\ + var extendedBitrate = bitrate > 100; + var maxRate = extendedBitrate ? 4000 : 100; + msgbox("custom-image-quality", "Custom Image Quality", "
\ +
x% Bitrate More
\
", "", function(res=null) { if (!res) return; + if (res.id === "extended-slider") { + var slider = res.parent.$(#bitrate-slider) + slider.slider.max = res.checked ? 4000 : 100; + return; + } if (!res.bitrate) return; handler.save_custom_image_quality(res.bitrate); toggleMenuState();