Skip to content

feat(nr): persist overlay defaults for new streams - #1090

Open
qiin2333 wants to merge 4 commits into
masterfrom
codex/nr-overlay-defaults
Open

qiin2333 wants to merge 4 commits into
masterfrom
codex/nr-overlay-defaults

Conversation

@qiin2333

Copy link
Copy Markdown
Collaborator

改了啥呀

  • 在主机配置目录保存一份全局 NR 串流默认值;新串流启动时读取,应用明确设置的开关和参数仍优先。
  • 新增本地认证的“记住当前 NR 会话”接口,只有主机报告参数已生效才写盘,失败和未完成的状态不会被记成默认值。
  • NR 从关闭状态启动时也带入记住的参数;关闭或重置时同步实际状态,避免下一次串流又忘掉。
  • 更新控制面板子模块,配套 PR:sunshine-control-panel#152。

为啥要改

覆层只要有串流就能用,却每次都忘记设置,实在有点杂鱼呀。现在按串流记忆,不要求关联游戏;应用专属配置继续保持优先。

验证

  • 在最新 origin/master 上用 Ninja 编译 7 个受影响的 Sunshine C++ 对象文件,通过。
  • 独立冒烟测试验证默认值保存、重载,以及无效处理比例被拒绝。
  • 配套控制面板 PR 的渲染构建、Rust cargo check、11 项 NR 测试通过。
  • git diff --check 通过。

尚未在实际 GPU 串流上验证画面效果。请与控制面板 PR 配套合入,杂鱼状态才不会留下半套接口。

@coderabbitai

coderabbitai Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: AlkaidLab/foundation-sunshine/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 4e9a94d2-328b-4a6b-a49a-c9aa5727eaa2

📥 Commits

Reviewing files that changed from the base of the PR and between dfdb9f3 and 9cb157c.

📒 Files selected for processing (3)
  • src/image_enhancement/config.cpp
  • src/image_enhancement/config.h
  • src/image_enhancement/nr_defaults.cpp

Included review availability: Your plan provides up to 8 included reviews per hour; 6 remain after this review.

📜 Recent review details
🧰 Additional context used
📓 Path-based instructions (1)
Sunshine 核心 C++ 源码,自托管游戏串流服务器。审查要点:内存安全、 线程安全、RAII 资源管理、安全漏洞。注意预处理宏控制的平台相关代码。

⚙️ CodeRabbit configuration file

Files:

  • src/image_enhancement/config.cpp
  • src/image_enhancement/config.h
  • src/image_enhancement/nr_defaults.cpp
🔇 Additional comments (3)
src/image_enhancement/config.h (1)

75-79: LGTM!

src/image_enhancement/config.cpp (1)

205-213: LGTM!

src/image_enhancement/nr_defaults.cpp (1)

2-2: LGTM!

Also applies to: 32-33, 64-64


Summary by CodeRabbit

  • 新功能
    • 可将当前会话的降噪设置保存为默认值,并应用于后续启动的会话。
    • 支持按应用配置覆盖全局降噪默认值;选择“继承”时使用全局设置。
  • 错误修复
    • 降噪关闭时,仍会同步缩放比例、强度等设置,确保相关图像处理选项生效。

Walkthrough

此变更新增降噪默认值的读取、保存和会话记忆接口。会话启动流程载入默认值并处理应用级配置。Windows 管线也会在降噪禁用时更新会话参数和运行状态。

Changes

降噪默认值与会话流程

Layer / File(s) Summary
默认值契约与持久化
src/image_enhancement/nr_defaults.h, src/image_enhancement/nr_defaults.cpp, cmake/compile_definitions/common.cmake
新增降噪默认值结构及配置读取、校验和原子写入逻辑,并将新增文件加入构建目标。
会话记忆接口
src/image_enhancement/api.h, src/image_enhancement/api.cpp, src/confighttp.cpp
新增会话记忆 API。处理器检查请求格式、会话存在性和设置是否已应用,再保存设置;HTTP 路由要求认证并限制环回地址访问。
会话默认值与应用配置
src/rtsp.h, src/process.cpp, src/nvhttp.cpp
启动会话时载入已保存的降噪默认值。应用配置为 on 或 off 时覆盖默认值;inherit 不生成应用级降噪配置。
会话降噪参数应用
src/rtsp.cpp, src/platform/windows/display_vram.cpp
Windows ANNOUNCE 在降噪启用或禁用时均设置会话滤镜参数。禁用请求也会更新运行状态并通知 HDR 管线。

控制面板子模块更新

Layer / File(s) Summary
子模块提交更新
src_assets/common/sunshine-control-panel
子模块指针更新到新的提交;子模块内部变更不可见。

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant HTTP路由
  participant rememberSessionNr
  participant remember_session_nr
  participant 降噪管线列表
  participant save_nr_defaults
  HTTP路由->>rememberSessionNr: 转发 POST 请求
  rememberSessionNr->>remember_session_nr: 传递请求和响应
  remember_session_nr->>降噪管线列表: 按会话 ID 查找并检查已应用设置
  remember_session_nr->>save_nr_defaults: 保存已稳定的降噪设置
Loading

Suggested reviewers: yundi339

Merge Risk: ⚪ Minimal · up to 9cb15

No specific backend issue is established. The paired control-panel change is needed for the remembered-settings flow, but its integration could not be confirmed.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 13.04% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 23 functions across 12 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed 标题准确概括了本次变更的主要目的:为新的 NR 串流持久化覆层默认值。
Description check ✅ Passed 描述与变更内容相关,并说明了默认值持久化、会话记忆接口、应用配置优先级、控制面板子模块及验证结果。
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant