diff --git a/libs/hbb_common/protos/message.proto b/libs/hbb_common/protos/message.proto
index 61f739343..273e7a6c5 100644
--- a/libs/hbb_common/protos/message.proto
+++ b/libs/hbb_common/protos/message.proto
@@ -471,7 +471,7 @@ message OptionMessage {
BoolOption show_remote_cursor = 3;
BoolOption privacy_mode = 4;
BoolOption block_input = 5;
- uint32 custom_image_quality = 6;
+ int32 custom_image_quality = 6;
BoolOption disable_audio = 7;
BoolOption disable_clipboard = 8;
BoolOption enable_file_transfer = 9;
diff --git a/libs/scrap/src/common/dxgi.rs b/libs/scrap/src/common/dxgi.rs
index c0b4130bb..1a8c39885 100644
--- a/libs/scrap/src/common/dxgi.rs
+++ b/libs/scrap/src/common/dxgi.rs
@@ -1,5 +1,6 @@
use crate::dxgi;
use std::io::ErrorKind::{NotFound, TimedOut, WouldBlock};
+use std::time::Duration;
use std::{io, ops};
pub struct Capturer {
@@ -40,8 +41,8 @@ impl Capturer {
self.height
}
- pub fn frame<'a>(&'a mut self, timeout_ms: u32) -> io::Result> {
- match self.inner.frame(timeout_ms) {
+ pub fn frame<'a>(&'a mut self, timeout_ms: Duration) -> io::Result> {
+ match self.inner.frame(timeout_ms.as_millis() as _) {
Ok(frame) => Ok(Frame(frame)),
Err(ref error) if error.kind() == TimedOut => Err(WouldBlock.into()),
Err(error) => Err(error),
@@ -135,7 +136,7 @@ impl CapturerMag {
pub fn get_rect(&self) -> ((i32, i32), usize, usize) {
self.inner.get_rect()
}
- pub fn frame<'a>(&'a mut self, _timeout_ms: u32) -> io::Result> {
+ pub fn frame<'a>(&'a mut self, _timeout_ms: Duration) -> io::Result> {
self.inner.frame(&mut self.data)?;
Ok(Frame(&self.data))
}
diff --git a/libs/scrap/src/common/hwcodec.rs b/libs/scrap/src/common/hwcodec.rs
index ec4e7082c..076304067 100644
--- a/libs/scrap/src/common/hwcodec.rs
+++ b/libs/scrap/src/common/hwcodec.rs
@@ -140,6 +140,10 @@ impl EncoderApi for HwEncoder {
fn use_yuv(&self) -> bool {
false
}
+
+ fn set_bitrate(&mut self, bitrate: u32) -> ResultType<()> {
+ todo!()
+ }
}
impl HwEncoder {
diff --git a/src/client.rs b/src/client.rs
index adeabda66..ca5352ae4 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -1005,7 +1005,7 @@ impl LoginConfigHandler {
msg_out
}
- pub fn save_custom_image_quality(&mut self, custom_image_quality: u32) -> Message {
+ pub fn save_custom_image_quality(&mut self, custom_image_quality: i32) -> Message {
let mut misc = Misc::new();
misc.set_option(OptionMessage {
custom_image_quality,
diff --git a/src/server/connection.rs b/src/server/connection.rs
index 8f04841c2..77d41d4e0 100644
--- a/src/server/connection.rs
+++ b/src/server/connection.rs
@@ -1117,7 +1117,7 @@ impl Connection {
let mut image_quality = None;
if let ImageQuality::NotSet = q {
if o.custom_image_quality > 0 {
- image_quality = Some(o.custom_image_quality);
+ image_quality = Some(o.custom_image_quality as _);
}
} else {
image_quality = Some(q.value() as _)
diff --git a/src/server/video_service.rs b/src/server/video_service.rs
index fa0b77fc7..8113ffee3 100644
--- a/src/server/video_service.rs
+++ b/src/server/video_service.rs
@@ -385,7 +385,7 @@ impl TraitCapturer for Capturer {
#[cfg(windows)]
impl TraitCapturer for scrap::CapturerMag {
- fn frame<'a>(&'a mut self, _timeout_ms: u32) -> Result> {
+ fn frame<'a>(&'a mut self, _timeout_ms: Duration) -> Result> {
self.frame(_timeout_ms)
}
diff --git a/src/ui/remote.rs b/src/ui/remote.rs
index 1abd4eb2a..22ae5f505 100644
--- a/src/ui/remote.rs
+++ b/src/ui/remote.rs
@@ -569,7 +569,7 @@ impl Handler {
.lc
.write()
.unwrap()
- .save_custom_image_quality(custom_image_quality as u32);
+ .save_custom_image_quality(custom_image_quality);
self.send(Data::Message(msg));
}