fix(viewer): 帧管线 latest-wins 单槽(修 NVENC 60fps 下积压假死/HUD 停刷)+ GOP 周期自愈
- viewer: 无界 mpsc → Mutex 单槽 latest-wins。根因:NVENC 60fps 到达率 > 渲染 吞吐(~55fps),无界队列无限积压 → 延迟线性增长 + 渲染 drain 阻塞消息泵 → 窗口假死、HUD 停刷(软编 20fps 时代掩盖,NVENC 后暴露) - viewer: 解码帧尺寸与窗口解耦(blit 逐行拷贝,防 NVENC 对齐尺寸不匹配); 首帧打印解码尺寸诊断 - agent: NVENC gop_len 0xffffffff→240(60fps 下 4s 周期 IDR 自愈恢复点, 配合 KeyFrameReq 即时恢复,消除长时间冻结锯齿) - 回环实测:NVENC 4ms/帧满速、解码 1920x1080 匹配、14s 零错误
This commit is contained in:
1 parent
82ec166f23
commit
9c72aecc3b
2 files changed
+46
-22
No files matched your search
@@ -201,7 +201,8 @@ impl NvencEncoder {
|
||||
// CBR 桌面实时档:码率恒定,延迟可预测(对标 UU 3.2Mbps@60fps)
|
||||
config.preset_cfg.rc_params.rate_control_mode = NVencParamsRcMode::CBR;
|
||||
config.preset_cfg.rc_params.average_bit_rate = bitrate_bps;
|
||||
config.preset_cfg.gop_len = 0xffff_ffff; // 无周期 IDR,仅按需(KeyFrameReq)
|
||||
config.preset_cfg.gop_len = 240; // 周期 IDR(60fps 下 4s):网络异常后的自愈恢复点,
|
||||
// 配合 KeyFrameReq 即时恢复,避免长时间冻结
|
||||
config.preset_cfg.frame_interval_p = 1; // 无 B 帧
|
||||
|
||||
let init = InitParams {
|
||||
|
||||
Reference in new issue
Block a user