24m-2: RT_VLAW=1 two-stage detector law implemented (formula verified in-code g=0.319@43); end-to-end gap traced to STFT application layer (WOLA mainlobe smearing vs narrow dip); stale-build hazard reconfirmed
This commit is contained in:
+24
-1
@@ -141,6 +141,27 @@ static void process_band_structural(
|
||||
raw_level[k] = static_cast<float>(static_cast<double>(am[k]) / res_k * scale_factor_x);
|
||||
}
|
||||
|
||||
// RT_VLAW=1 (NOTES 24m): decoded two-stage detector law.
|
||||
// cutS(b) = 1.7436*ln(1 + lvl_raw/0.3824) [stage-S, center form]
|
||||
// applied gain = 10^(-gamma0*cutS/20), gamma0 = 1.79
|
||||
// Bypasses LUT/exp2/blend/warp/IIR3 entirely.
|
||||
static const int vlaw = getenv("RT_VLAW") ? atoi(getenv("RT_VLAW")) : 0;
|
||||
static int frame_dbg_ctr = 0;
|
||||
for (size_t k = 0; k < nbin; k++) {
|
||||
double res_k = std::max(static_cast<double>(res[k]), 1e-12);
|
||||
double lvl = raw_level[k];
|
||||
if (vlaw) {
|
||||
double cutS = 1.7436 * std::log1p(lvl / 0.3824);
|
||||
double g = std::pow(10.0, -1.79 * cutS / 20.0);
|
||||
if (getenv("RT_VDBG") && (k == 43 || k == 171) && (frame_dbg_ctr < 2))
|
||||
fprintf(stderr, "[VLAW] k=%zu lvl=%.5f cutS=%.5f g=%.5f\n",
|
||||
k, lvl, cutS, g);
|
||||
band_level[k] = static_cast<float>(g);
|
||||
} else {
|
||||
band_level[k] = static_cast<float>(lvl);
|
||||
}
|
||||
}
|
||||
if (!vlaw)
|
||||
for (size_t k = 0; k < nbin; k++) {
|
||||
double res_k = std::max(static_cast<double>(res[k]), 1e-12);
|
||||
double lvl = raw_level[k];
|
||||
@@ -232,7 +253,9 @@ static void process_band_structural(
|
||||
// mask = raw^0.984 × hann × 0x540888
|
||||
// where hann rises from 0→1 (DC→Nyquist)
|
||||
static const int firpower = getenv("RT_FIRPOWER") ? atoi(getenv("RT_FIRPOWER")) : 0;
|
||||
if (firpower) {
|
||||
if (vlaw) {
|
||||
mm = static_cast<double>(band_level[k]);
|
||||
} else if (firpower) {
|
||||
double raw = static_cast<double>(raw_level[k]);
|
||||
if (raw > 1e-12) {
|
||||
mm = std::pow(raw, 0.984);
|
||||
|
||||
Reference in New Issue
Block a user