fix(cw): repair FFT pipeline (NaN twiddle table + dead cond_22 path)
The waterfall showed mirrored/upside-down garbage because the FFT never produced a valid spectrum: 1. g3.c.f() (high-precision sin) had its quadrant-0 case mangled by jadx into a nested-if that returned NaN for small angles - the twiddle factor table ended up with 329/1024 NaN entries. Restored the smali switch: case0->g(), case1->c(), case2->-g(), case3->-c(). 2. i3.d.k() routed the runtime FFT (a5==0, single-thread path) into the else of if(a5!=1) instead of if(a5!=0), so the FFT never ran and the output stayed in the time domain (peak at bin 357 for a 669Hz tone instead of bin 86). Verified with a JVM harness (static-block tables + pure-tone inputs): 200Hz->bin26, 400Hz->bin51, 669Hz->bin86, 1000Hz->bin128, all exact. Twiddle table NaN count: 329 -> 0.
This commit is contained in:
1 parent
3c5486cc5c
commit
f731775346
2 files changed
+16
-14
No files matched your search
@@ -1211,7 +1211,8 @@ public final class d {
|
||||
throw null;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
} else {
|
||||
// smali cond_22(a5==0, k=1 时运行时路径!): 单线程 FFT + 后处理
|
||||
// jadx 原把这段错塞进 if(i8!=1) 的 else(死代码), a5==0 的 else 是幻觉(throw null)
|
||||
int i26 = this.f11700a;
|
||||
@@ -1264,4 +1265,3 @@ public final class d {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user