slb: the seek chunk gives the data offset structurally, and breaks the 28 ties
The ties needed a different signal, not a longer scan. Banks carry one: a seek chunk sitting on a packet boundary, so seek_pos % 2048 IS the data offset. On the 6033 labelled banks with a seek before their first RIFF, 6031 agree (99.97%) -- better than the packet scan and structural rather than statistical, so scan_data_offset now tries it first. On the scan's 28 ties it resolves 26 correctly and 0 wrongly (2 have no usable seek). Combined rule scores 7354/7358 = 99.95%, up from 99.62%. 762 of the 1495 RIFF-less banks carry a seek, so the signal exists where it is needed. Also ruled out, since a wrong offset was this page's whole subject: the header is not audio being discarded. Adding 0 to the candidate set, it wins 6 of 7358. 7 disc tests pass.
This commit is contained in:
@@ -120,6 +120,37 @@ with a unique winner. `scan_data_offset` therefore falls back to 1392 on a tie.
|
||||
This is used only for the `RIFF`-less banks. Where a `RIFF` exists the offset is
|
||||
derived from it exactly, never scanned.
|
||||
|
||||
### ✅ A second, independent signal — and it breaks the ties
|
||||
|
||||
**Settled 2026-08-26.** The 28 ties needed a different signal, not more of the
|
||||
same one, and the banks carry one: a **`seek` chunk sitting on a packet
|
||||
boundary**. Its position modulo 2048 therefore *is* the data offset.
|
||||
|
||||
seek at 3 516 / 5 564 / 7 612 / 9 660 / 13 756 / 19 900 — all ≡ 1468 (mod 2048)
|
||||
|
||||
On the 6 033 labelled banks that have a `seek` before their first `RIFF`,
|
||||
**6 031 agree (99.97 %)** and 2 disagree. That is better than the packet scan
|
||||
and, more importantly, *structural* rather than statistical — which is why it is
|
||||
now tried first.
|
||||
|
||||
Applied to the packet scan's 28 ties: **26 resolved correctly, 0 wrongly**, and
|
||||
2 with no usable `seek`. The combined rule — `seek` residue, else packet
|
||||
plausibility, else 1392 — scores **7 354 / 7 358 = 99.95 %** on the labelled set,
|
||||
up from 99.62 %.
|
||||
|
||||
762 of the 1 495 `RIFF`-less banks carry a `seek`, and its residue lands on the
|
||||
four known offsets there too (1468 ×343, 1600 ×255, 1392 ×148, 1728 ×16), so the
|
||||
signal is available in the population that needs it.
|
||||
|
||||
### ❌ The header is not audio being discarded
|
||||
|
||||
Worth ruling out, since a wrong data offset was the whole subject of this page:
|
||||
if the bytes *before* the offset were audio, we would be throwing away the start
|
||||
of every clip. Adding **0** to the candidate set and re-running the scan, it wins
|
||||
**6 of 7 358** — noise. The header is genuinely not part of the packet stream.
|
||||
(1 482 banks have an all-zero header; 5 876 have content in it, which is what
|
||||
prompted the check.)
|
||||
|
||||
### Is that 99.62 % transferable? — checked, and it is conservative
|
||||
|
||||
The labelled set has a `RIFF`; the population the scan actually serves does not.
|
||||
|
||||
Reference in New Issue
Block a user