官方 FilterDetailEnhancement_Simple 把「增益缩放后」的 k = strength*gain*2>>8 只 传给 map(决定阈值与 divisor 下限),混叠系数用的是**原始 strength**。本移植最初 两处都用 k,等于把细节再乘一遍增益:真机 level 2 满屏噪点。改为原始 strength 后 HF 能量与关闭档基本相同(0.47-0.51 vs 0.46-0.47),边缘仍被增强。 细节校正: - 一个有用的推论:每档的边缘强度其实与档位无关(化简为 128/gain),档位只决定 哪些窗口通过对比度阈值——所以调高档位是"纳入更多弱对比区域",不是"推得更狠"。 据此把档位从 0-4 扩到 0/1/2/3/4/6/8(官方 MAG_SetDetailEnhancement 钳 0..32)。 - 官方 App 自身不调用 SetDetailEnhancement(jadx 全量搜索无此符号),SetEX 是数码 变焦 ROI 与增强无关;故无法据此对齐官方默认档,保持用户可见设置、默认关闭。 测试: - 新增 blendUsesTheRawStrengthNotTheGainScaledOne 黄金值用例(推导写在注释里), 把 bug 改回去会立刻失败(已实测验证)。 - 原 gainScalesTheEffect 改为 gainDoesNotAmplifyNoiseOnAFlatField + gainBelowOneIsANoOp, 因为修正后增益不再缩放混叠幅度。98 项测试全绿。 顺带修复(同一轮真机复现): - no_device 死锁:首次 connect 撞上相机重枚举时停在「无相机」,且紧随其后的 ATTACHED 广播被 800ms 防抖丢弃 → 永久无画面。防抖/退避改为延后重试,no_device 也安排 1.5s 重试(scheduleRetry 单槽位、最新优先)。 - 手机平放时加速度计 x/y≈0,迟滞逻辑保留旧姿态角导致 OSD 文字整体转 90°; 改为 tilt<4m/s² 判定平放、姿态归零。 - 录像帧缺 max/min 标记:probesAsMarks() 现在一并返回,录像与实时画面一致。 真机(小米 22041211AC/Android12/MIUI):15.1fps 稳定、单帧 6-9ms(开增强 11ms)、 拍照与分析页标记一致且各只有一个 min/max、设置跨冷启动持久化、 屏幕熄灭时渲染停止无空转(CPU 3.7%)。
12 MiBLFS
12 MiBLFS
The file is too large to be shown.
View Raw