mirror of
https://github.com/weyne85/rustdesk.git
synced 2025-10-29 17:00:05 +00:00
sync codec format
This commit is contained in:
@@ -380,6 +380,7 @@ impl Connection {
|
||||
time,
|
||||
last_delay:qos.current_delay,
|
||||
target_bitrate:qos.target_bitrate,
|
||||
codec_format:qos.codec_format.into(),
|
||||
..Default::default()
|
||||
});
|
||||
conn.inner.send(msg_out.into());
|
||||
|
||||
@@ -72,11 +72,11 @@ pub struct VideoQoS {
|
||||
height: u32,
|
||||
user_image_quality: u32,
|
||||
current_image_quality: u32,
|
||||
|
||||
enable_abr: bool,
|
||||
pub codec_format: test_delay::CodecFormat,
|
||||
pub current_delay: u32,
|
||||
pub fps: u8, // abr
|
||||
pub target_bitrate: u32, // abr
|
||||
|
||||
updated: bool,
|
||||
state: DelayState,
|
||||
debounce_count: u32,
|
||||
@@ -110,6 +110,8 @@ impl Default for VideoQoS {
|
||||
fps: FPS,
|
||||
user_image_quality: ImageQuality::Balanced.as_percent(),
|
||||
current_image_quality: ImageQuality::Balanced.as_percent(),
|
||||
enable_abr: false,
|
||||
codec_format: Default::default(),
|
||||
width: 0,
|
||||
height: 0,
|
||||
current_delay: 0,
|
||||
@@ -145,14 +147,16 @@ impl VideoQoS {
|
||||
|
||||
self.current_delay = delay / 2 + self.current_delay / 2;
|
||||
log::trace!(
|
||||
"VideoQoS update_network_delay:{}, {}, state:{:?},count:{}",
|
||||
"VideoQoS update_network_delay:{}, {}, state:{:?}",
|
||||
self.current_delay,
|
||||
delay,
|
||||
self.state,
|
||||
self.debounce_count
|
||||
);
|
||||
|
||||
// ABR
|
||||
if !self.enable_abr {
|
||||
return;
|
||||
}
|
||||
let current_state = DelayState::from_delay(self.current_delay);
|
||||
if current_state != self.state && self.debounce_count > 5 {
|
||||
log::debug!(
|
||||
@@ -544,7 +548,6 @@ fn run(sp: GenericService) -> ResultType<()> {
|
||||
video_qos.set_size(width as _, height as _);
|
||||
let mut spf = video_qos.spf();
|
||||
let bitrate = video_qos.generate_bitrate()?;
|
||||
drop(video_qos);
|
||||
|
||||
log::info!("init bitrate={}", bitrate);
|
||||
|
||||
@@ -571,6 +574,9 @@ fn run(sp: GenericService) -> ResultType<()> {
|
||||
Err(err) => bail!("Failed to create encoder: {}", err),
|
||||
}
|
||||
|
||||
video_qos.codec_format = encoder.get_codec_format();
|
||||
drop(video_qos);
|
||||
|
||||
let privacy_mode_id = *PRIVACY_MODE_CONN_ID.lock().unwrap();
|
||||
#[cfg(not(windows))]
|
||||
let captuerer_privacy_mode_id = privacy_mode_id;
|
||||
|
||||
@@ -240,6 +240,7 @@ struct QualityStatus {
|
||||
fps: i32,
|
||||
delay: i32,
|
||||
target_bitrate: i32,
|
||||
codec_format: test_delay::CodecFormat,
|
||||
}
|
||||
|
||||
impl Default for QualityStatus {
|
||||
@@ -249,6 +250,7 @@ impl Default for QualityStatus {
|
||||
fps: -1,
|
||||
delay: -1,
|
||||
target_bitrate: -1,
|
||||
codec_format: test_delay::CodecFormat::Unknown,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -269,13 +271,21 @@ impl Handler {
|
||||
}
|
||||
|
||||
fn update_quality_status(&self, status: QualityStatus) {
|
||||
let codec_format = match status.codec_format {
|
||||
test_delay::CodecFormat::Unknown => "Unknown",
|
||||
test_delay::CodecFormat::VP8 => "VP8",
|
||||
test_delay::CodecFormat::VP9 => "VP9",
|
||||
test_delay::CodecFormat::H264 => "H264",
|
||||
test_delay::CodecFormat::H265 => "H265",
|
||||
};
|
||||
self.call2(
|
||||
"updateQualityStatus",
|
||||
&make_args!(
|
||||
status.speed,
|
||||
status.fps,
|
||||
status.delay,
|
||||
status.target_bitrate
|
||||
status.target_bitrate,
|
||||
codec_format
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -2604,6 +2614,7 @@ impl Interface for Handler {
|
||||
self.update_quality_status(QualityStatus {
|
||||
delay: t.last_delay as _,
|
||||
target_bitrate: t.target_bitrate as _,
|
||||
codec_format: t.codec_format.enum_value_or_default(),
|
||||
..Default::default()
|
||||
});
|
||||
let mut msg_out = Message::new();
|
||||
|
||||
@@ -482,16 +482,20 @@ class QualityMonitor: Reactor.Component
|
||||
<div>
|
||||
Target Bitrate: {qualityMonitorData[3]}kb
|
||||
</div>
|
||||
<div>
|
||||
Codec: {qualityMonitorData[4]}
|
||||
</div>
|
||||
</div>;
|
||||
}
|
||||
}
|
||||
|
||||
$(#quality-monitor).content(<QualityMonitor />);
|
||||
handler.updateQualityStatus = function(speed, fps, delay, bitrate) {
|
||||
handler.updateQualityStatus = function(speed, fps, delay, bitrate, codec_format) {
|
||||
speed ? qualityMonitorData[0] = speed:null;
|
||||
fps > -1 ? qualityMonitorData[1] = fps:null;
|
||||
delay > -1 ? qualityMonitorData[2] = delay:null;
|
||||
bitrate > -1 ? qualityMonitorData[3] = bitrate:null;
|
||||
codec_format != "Unknown" ? qualityMonitorData[4] = codec_format:null;
|
||||
qualityMonitor.update();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user