郑博文
|
4533968057
|
merge: 合入 feature/agent-linux(测试期望值修正 + 冒烟脚本纳入单测 + cargo 网络配置文档)
|
2026-10-28 15:14:51 +08:00 |
|
yu
|
bae871c78c
|
fix(linux-agent): 修正坐标换算单测期望值 + 冒烟脚本纳入单测
- scale(32768,1920) 期望值应为 959(32768×1919÷65535=959.49 向下取整),
原写成 960 —— 是**测试期望值错**,实现本身正确(0→0、65535→extents-1 均通过);
集成测试因带 ±2 像素容差未能暴露,是跑单测才抓到的
- scripts/linux-smoke.sh 原先只跑 --test smoke,漏掉 --bins 单测;现两层都跑
- 手册 §8.4 说明补充单测这一层及其必要性
验证:bash scripts/linux-smoke.sh → 单测 4 passed + 端到端 2 passed
|
2026-10-23 15:04:56 +08:00 |
|
yu
|
49f85db9f9
|
docs: 修正 cargo 网络配置建议(代理而非镜像源)+ 更新构建命令路径
- 实测 USTC 镜像索引 cksum 与下发的 .crate 字节不一致(nvenc 0.1.0),
源替换会触发 checksum 校验失败并改变 registry 身份;改为 [http] proxy 走官方源
- 构建命令里 D:\\wordkb\\... 的失效路径替换为可用写法
- 已实测:Windows cargo build --release 通过(agent.exe/viewer.exe/encbench.exe)
且 cargo test -p linux-agent 在容器内 2 passed
|
2026-10-23 14:10:20 +08:00 |
|
yu
|
9fda49d9c9
|
Merge branch 'main' of http://43.140.215.244:7040/wangyukun/remote into feature/agent-linux
|
2026-10-23 14:02:44 +08:00 |
|
dev-team
|
ad022ffcf4
|
fix: v0.8.1 静止桌面黑屏 - 积压跳帧限定突发到达, 空闲重发帧不判陈旧不计E2E
|
2026-10-23 13:36:21 +08:00 |
|
yu
|
9c340813a8
|
feat(agent): 新增 agent-core 与 Linux 被控端(X11 + XTest,纯新增不动 agent/)
本期只在新增文件里做,**未改动 Windows agent/ 一个字节**(与 NVENC 线并行,避免争抢)。
- 新增 agent-core:平台无关会话层 —— QUIC/TLS 握手、传输调优(沿用 512KB 发送窗口
结论)、验证码认证、会话/select 循环、latest-wins 单槽、输入分发,以及软件编码
视频管线(openh264)。同步跟进协议新增的 Pong{lost,sent} 下行丢包统计字段
- 新增 linux-agent:X11 GetImage 采集 + 整帧变更检测;XTest 注入 + 扫描码→X11
keycode 映射(主键区 = scancode+8,E0 扩展键必须查表,含单元测试)
- 协议零改动:复用 Set-1 扫描码与虚拟桌面归一化坐标,viewer 无需任何修改
- 新增端到端冒烟测试 tests/smoke.rs 与 scripts/linux-smoke.sh(自建 Xvfb,无需
图形桌面):采集→编码→QUIC 解帧、认证(含错误码拒绝)、Ping/Pong(含丢包字段)、
静止桌面关键帧恢复、输入注入实证(注入后从另一条 X11 连接读回指针真实坐标)
- 该关键帧用例做过变异测试:把修复退回会失败、恢复后通过,确认断言有效
- .gitattributes:shell 脚本强制 LF(Windows checkout 成 CRLF 会导致容器内无法执行)
- 手册:修正已失效的工具链路径;补充 cargo 镜像;新增第 8 节(Linux)与 6.1 节
(三条待修问题,含两条 Windows 侧仍存在的关键帧缺陷)
验证:
- Linux(容器, USTC 源 + Xvfb): cargo test -p linux-agent 通过,2 passed
- Windows: 本期未改 agent/,default-members 未变,`cargo build --release` 行为不变
|
2026-10-23 13:31:08 +08:00 |
|
dev-team
|
8dd18a06a1
|
fix: E2E 积压 - 陈旧帧跳过解码排空 QUIC 队列 + rgb 缓冲复用 + 版本号升 v0.8
|
2026-10-23 13:27:18 +08:00 |
|
dev-team
|
04c02d9ced
|
fix: 启动黑屏 - 静止桌面响应KeyFrameReq + 首帧强制IDR + 入会主动请求关键帧
|
2026-10-23 13:12:27 +08:00 |
|
dev-team
|
68b2ddc59a
|
merge: E2E 排队修复(64KB 窗口 + 拥塞跳帧)
|
2026-10-23 12:48:17 +08:00 |
|
dev-team
|
168f600fe1
|
perf(agent): E2E 排队修复——发送窗口 512KB→64KB + 拥塞反馈自动跳帧
- 实测数据:FPS 61 / RTT 7ms / E2E 618ms → 延迟全在发送侧排队:
512KB 窗口 ÷ WiFi 实际 ~3Mbps 吞吐 ≈ 1.3s 排队上限,latest-wins 管不到已进 QUIC 的字节
- send_window 64KB:排队硬上限 ~170ms@3Mbps;突发吞吐 64KB/7ms≈72Mbps 不受限;
连接级窗口,流 2 输入数据量极小不受影响
- 拥塞反馈跳帧:send write 耗时 >20ms(单帧预算 1.2 倍) → 置位标志 → 采集线程
跳过当前帧(NVENC 少输入一帧,参考链连续无花屏),注入率自适应匹配网络吞吐;
capture 日志新增 skipped 计数
- viewer 标题版本 v0.7-LowLatency
- 回环实测:NVENC 4ms/帧、skipped 0(回环无拥塞符合预期)、零错误
|
2026-10-23 12:48:16 +08:00 |
|
dev-team
|
bd7ca29945
|
merge: HUD 常显修复
|
2026-10-23 10:45:47 +08:00 |
|
dev-team
|
00b318af8b
|
fix(viewer): HUD 每秒强制呈现(不依赖视频帧)+ 标题栏版本号
- HUD 此前仅在 dirty(收到新帧)时绘制,视频流异常/帧被丢弃时面板
永不出现,且掩盖了排障信息;改为每秒统计刷新时强制 update_with_buffer
- 窗口标题加 v0.6-HUD 版本标记,用于识别误跑旧版 exe(排障关键)
- 回环实测:NVENC 4ms/帧、解码 1920x1080 匹配、14s 零错误
|
2026-10-23 10:45:46 +08:00 |
|
dev-team
|
e00175385d
|
merge: 修 HUD 停刷与帧率不稳(单槽 latest-wins + GOP 自愈)
|
2026-10-23 10:31:31 +08:00 |
|
dev-team
|
9c72aecc3b
|
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 零错误
|
2026-10-23 10:31:30 +08:00 |
|
dev-team
|
82ec166f23
|
merge: NVENC 硬编(4ms/帧@1080p,编码瓶颈解除)
|
2026-10-23 10:18:29 +08:00 |
|
dev-team
|
ddbb53d41a
|
feat(agent): NVENC 硬编接入(GPU 零拷贝 ARGB 直通,软编自动兜底)
- 编码器自动选择:NVENC(H264 High/CBR 5Mbps/UltraLowLatency/无B帧/按需IDR)→ openh264 兜底
- Duplication 增加 GPU 中间纹理(B8G8R8A8 DEFAULT),NVENC register_resource_dx11 直读,颜色转换完全省略
- KeyFrameReq → encode_picture(picture_type=IDR),静止 500ms 重编码 P 帧
- windows 0.58→0.62(nvenc crate 依赖 0.62,运行时 dlopen nvEncodeAPI64.dll 零 SDK 依赖)
- 实测(GTX 1650 Ti 回环):encode 41ms→4ms/帧(10x),convert 0ms,viewer 解码正常
|
2026-10-23 10:18:29 +08:00 |
|
dev-team
|
94c45aff3f
|
merge: FPS 调优(60fps上限/零拷贝/E2E 修复)
|
2026-10-23 10:02:42 +08:00 |
|
dev-team
|
e7472fa12f
|
perf(agent): 60fps上限/零拷贝转换/多线程编码/发送缓冲512KB + encbench基准
- capture: min_frame 33→16ms,RC 60fps;with_mapped 映射窗口内直接 BGRA→YUV(行距连续零拷贝)
- capture: num_threads(4) + 每120帧输出 convert/encode 耗时(实测:convert 2ms,encode 41ms/帧真实工况)
- agent: send_window 2MB→512KB,E2E 排队天花板 ~0.15s(修复 E2E 633ms 红)
- encbench: 1080p 编码基准(合成 5ms/帧,真实工况 41ms/帧 → 软编 1080p 上限 ~24fps,60fps 需 NVENC)
- tools/bench.md
|
2026-10-23 10:02:41 +08:00 |
|
dev-team
|
881341be3a
|
merge: B1 联调基线(HUD 扩展 + bench 脚本)
|
2026-10-23 09:47:10 +08:00 |
|
dev-team
|
7dbb04da17
|
feat(hud): B1 基线指标——抖动/帧间隔p95/丢包率/解码失败计数 + 测试脚本
- common: Pong 扩展 lost/sent(agent 发送方向 QUIC 计数,经交叉评审项)
- agent: Pong 附带 conn.stats().path 丢包统计
- viewer: Stats 加 GapRing(64)/jitter EMA/dec_fail;HUD 新增 JIT/P95/LOSS/DECFAIL 四行,% 字形
- tools/bench.md: 三场景基线测试脚本
|
2026-10-23 09:47:09 +08:00 |
|
dev-team
|
95049b6642
|
docs: B侧设计文档(联调基线/码率自适应/打洞中继/多屏文件)
|
2026-10-23 09:34:21 +08:00 |
|
dev-team
|
e0a076d570
|
docs: 两人分工方案定稿
|
2026-10-23 09:31:52 +08:00 |
|
dev-team
|
155405fbcc
|
docs: README
|
2026-10-23 09:21:07 +08:00 |
|
dev-team
|
4ebc5c1602
|
docs: 团队协作规范(分支策略/分工/合并规则)
|
2026-10-23 09:18:41 +08:00 |
|
dev-team
|
61e8a75cdd
|
init: MVP remote desktop (agent/viewer/common) with H.264 pipeline
|
2026-10-23 09:17:55 +08:00 |
|