mirror of
https://github.com/smittix/intercept.git
synced 2026-04-28 00:30:00 -07:00
The step-49 coarse scan introduced up to ±24 sample uncertainty in R channel placement. When accumulated SDR clock drift pushed the actual sync 35+ samples early in the search region, the step-49 windows could land on the B-pixel tail and return position 0, misplacing R by ~50 samples (~16 pixel colour shift) — worse than no correction at all. Replace with a vectorised goertzel_batch sliding-window scan at step=1 over a short window (sync_duration / 3 ≈ 3 ms), giving single-sample accuracy. Use consumed=pos (instead of max(pos,line_samples)) when the sync is found, so the next line starts at its correct separator and per-line timing errors stop accumulating entirely. Falls back to the fixed-offset path whenever the sync is not found (e.g. noisy signal), preserving the pre-change baseline quality. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>