app+docs: 真机验证——修实时全黑(ArrayStoreException)并补端到端测试;同场景 A/B 映射已对齐(平均4.5/255,逐计数差2级);复核确认 LUT 步进常数用反汇编公式即最优;剩余差异定位到计数噪声域

This commit is contained in:
ZXCLI
2026-10-06 15:45:19 +08:00
parent bf03e852ca
commit 2290fbbafb
4 changed files with 209 additions and 1 deletions
+44
View File
@@ -489,6 +489,50 @@
"未连接"分支显示,正常出图时用户看不到任何反馈)。
- [x] 单测 66 → **76 项全绿**;debug + release(R8) 双构建通过;APK 已更新。
## 用户反馈修复 第三十二轮(2026-10-06 下午,手机解锁后真机验证:渲染已对齐,剩噪声)
用户:"手机我开了,你进行测试"。
### 1) 先修掉实时全黑(我上一轮引入的 bug)
`System.arraycopy(IntArray → ByteArray)` 每帧抛 `ArrayStoreException` → 实时画面全黑(SurfaceView
仍刷、logcat 无异常)。黄金向量测试只覆盖纯函数,没覆盖实例路径。已改逐元素拷贝 + 新增
`AndroidLutPipelineTest`(4 个端到端用例)。单测 **117 全绿**。
### 2) 同场景 A/B:映射对齐
官方/我们前后 2 分钟各拍一张(同一静止场景),调色板索引空间、同一 160×120 网格:
- 分位:官方 [82,89,**96**,117,133] vs 我们 [85,92,**98**,114,134];
- 逐计数中位索引差:**中位 2.0 级**;全图平均 |Δ| = **4.47/255**,99.2% ≤16。
对比旧 LUT(低端压死,我们 8/17 vs 官方 45/52,系统偏差 ≈35 级)→ **"官方对比度更高/更细腻"
的映射差异已消除**。
### 3) 步进常数 k 复核:反汇编公式即最优(旧结论作废)
用照片里存的 NUC 计数对官方照片做模型比对(新的一对,span=1241):
| k | 平均误差 | ≤8 占比 |
|---|---|---|
| **16·span/range(反汇编,=19)** | **4.64** | **82.9%** |
| 16(上轮"拟合最优") | 5.76 | 73.6% |
| 24 / 12 | 4.92 / 9.16 | 80.8% / 49.2% |
→ 代码不动,§10.4 的遗留项关闭(上轮"偏好 16"是当时那对照片的产物)。
### 4) 剩余问题已定位到"计数噪声"域
同 LUT 下我们的 NUC 计数渲染出的 HF(4.65/4.25)明显高于官方成品(照片 2.46/2.22),
即**映射一致、噪声不一致**;FFC 后立刻截图几乎不改善(帧间 2.44→2.34)→ 不是参考老化;
实时帧率 15.0 fps、单帧 6-9 ms(无回归)。→ 下一步查**实时 FFC 参考采集**与离线/PC
路径(PC 端 NUC 逐字节一致)的差别。
### 5) 运维踩坑(已写进渲染文档 §11.5)
推流中 force-stop 会把相机卡死(需 USB 重新枚举 `/sys/bus/usb/devices/2-1/authorized`);
切换 App 先按 HOME 正常停流;MIUI 每次重装/重枚举都要重新授权,勾"一律打开"要点**复选框本体**。
## 用户反馈修复 第三十一轮(2026-10-06,按真机 libcxsdk 反汇编定案:显示 LUT 才是差异)
用户:"先从逆向文件里面找灵感,尽可能多读一些伪代码,然后推测可能缺失的东西,再补上验证"。