From 00b318af8b4c28f61c78df206a3e2c52bb493675 Mon Sep 17 00:00:00 2001 From: dev-team Date: Fri, 23 Oct 2026 10:45:46 +0800 Subject: [PATCH] =?UTF-8?q?fix(viewer):=20HUD=20=E6=AF=8F=E7=A7=92?= =?UTF-8?q?=E5=BC=BA=E5=88=B6=E5=91=88=E7=8E=B0=EF=BC=88=E4=B8=8D=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E8=A7=86=E9=A2=91=E5=B8=A7=EF=BC=89+=20=E6=A0=87?= =?UTF-8?q?=E9=A2=98=E6=A0=8F=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - HUD 此前仅在 dirty(收到新帧)时绘制,视频流异常/帧被丢弃时面板 永不出现,且掩盖了排障信息;改为每秒统计刷新时强制 update_with_buffer - 窗口标题加 v0.6-HUD 版本标记,用于识别误跑旧版 exe(排障关键) - 回环实测:NVENC 4ms/帧、解码 1920x1080 匹配、14s 零错误 --- viewer/src/main.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/viewer/src/main.rs b/viewer/src/main.rs index 2a1103e..ac39c1f 100644 --- a/viewer/src/main.rs +++ b/viewer/src/main.rs @@ -362,7 +362,7 @@ fn session( }; let mut window = Window::new( - "mvp-remote viewer (Esc 退出)", + "mvp-remote v0.6-HUD (Esc 退出)", w, h, WindowOptions { @@ -471,7 +471,8 @@ fn session( } } - // 6) HUD:每秒刷新一次指标,画在右上角 + // 6) HUD:指标每秒刷新一次;每秒至少强制呈现一次(视频冻结/黑屏时 HUD 依然可见) + let mut need_present = dirty; let (hud_loss, hud_jit, hud_p95, hud_dec); if hud_last.elapsed() >= Duration::from_secs(1) { let f = stats.frames.load(Ordering::Relaxed); @@ -494,13 +495,14 @@ fn session( hud_p95 = stats.gap_p95(); hud_dec = stats.dec_fail.load(Ordering::Relaxed); hud_last = Instant::now(); + need_present = true; // HUD 面板每秒至少重绘一次 } else { hud_loss = f64::NAN; hud_jit = 0; hud_p95 = None; hud_dec = 0; } - if dirty { + if need_present { let rtt = stats.rtt.load(Ordering::Relaxed); let e2e = stats.e2e.load(Ordering::Relaxed); let e2e_ok = stats.e2e_valid.load(Ordering::Relaxed);