Repository navigation
窗口插帧助手 1.4.1(撤掉两个从未生效的画质档)
撤掉 v1.4.0 里两个永远不生效的画质项,并补上一条会拦住同类问题的判据。
这次修的是什么
v1.4.0 发出去后,真机实测反馈「几乎没有任何区别」。查下去发现不是效果弱,而是那两个档一帧都没跑过:
- 「MetalFX 空间放大」和「按屏幕分辨率重建」都以「输出尺寸 > 采集尺寸」为前提,而本工具的采集尺寸恒等于输出尺寸(= 源窗口尺寸 × 屏幕缩放因子,上限是面板物理像素)⇒ 那个前提永远不成立,它们与「原始画质」逐像素完全相同。
- 根因是一行硬编码常量:
let workResolution = 0—— 它是「采集尺寸 / 输出尺寸」唯一的差来源。 - 真实日志佐证:每次启动都是
采集 640x400 → 输出 640x400,workRes=只出现过0,MetalFX出现 0 次。
改了什么
- 删除「MetalFX 空间放大」档、
SpatialPass实现与import MetalFX。 - 删除「按屏幕分辨率重建」开关及整套
--output-scale管线(含子进程透传、已生效比对、失败回退),并把尺寸计算的三个函数收成一个 —— 让「输出 ≠ 采集」在结构上不可能再出现。 - 「Lanczos 重采样」档一并从下拉去掉(1:1 下它与「原始画质」逐像素相同,留着同样是骗人);但保留 Lanczos 作为尺寸不匹配时的内部兜底,并给它加了按尺寸去重的日志 —— 兜底悄悄在跑正是最难查的那类问题。
- 现在「画质」下拉只有两项:原始画质 / 自适应锐化,两项都真实生效。
- 新增源码级判据(
dev/verify-local.sh):断言ReconstructMode的取值集合只允许off/cas,并断言代码里没有SpatialPass/import MetalFX/--output-scale残留。写完后做了反向注入(临时加一个case metalfx)确认它会变红 —— v1.4.0 正是漏了这条。
一句实话:为什么这里没有「超分」
在「贴住源窗口」这个模型里,采集到的画面已经是 1:1 原生像素 ⇒ 没有任何放大空间,FSR / MetalFX / DLSS 这类上采样结构性用不上。要让它们有活干,只能先故意压低采集分辨率(就是小黄鸭那个 FSR 档的用法),但那是拿画质换性能,方向正好相反。本工具能做的「画质」只剩后处理(锐化)。另外,如果源窗口里播的本来就是低清内容(720p 视频铺满全屏),那点细节在源 App 把画面交出来之前就已经没了 —— 加什么滤镜都补不回来。
验证
verify-local.sh 全绿(含上面那条新判据的反向注入验证);代码签名、ZIP 完整性、解包后与源 .app 逐字节比对通过;产物 otool -L 已不再链接 MetalFX(独立证据,不是"代码删了框架还链着")。
适用
Apple Silicon / macOS 15+。自签名未公证,首次打开需右键 → 打开,或:
xattr -dr com.apple.quarantine "窗口插帧助手.app"v1.4.0 里那个真正有价值的修复 —— 产物最低系统要求从 macOS 27 降到 macOS 15 —— 在本版保留。
(1.1.x–1.3.0 的成品包都只能在 macOS 27 启动;1.4.0 修好了,但顺带加进了上面那两个死档。)
SHA-256:a1dc7bb8805af9b321a1f6726a8e34d75395896f99edabed9ee98a973823d486