AirControl v1.3.5
What's New
- Reverted to v1.3.0's handedness-keyed smoother architecture, eliminating the two-hand cursor flicker ("拉风箱") introduced during Phase 2.5-2.9. A/B on the same recording (1583 frames, 734 multi-hand):
primary_switches11 → 0,switch_jerk728.6px → 0,wrist_jerk_mean19.9 → 14.6px,wrist_jerk_p9566.6 → 50.5px. - Capped 1080p inference latency at ~15ms by downscaling frames to
inference_max_width=720before feeding MediaPipe (normalized output makes coordinate compensation unnecessary). - Worked around Windows DSHOW/MSMF FOURCC reset on resolution change: MJPEG is re-applied after every resolution switch, with a 0.5s device-settle delay on camera switch to avoid async-release crashes.
- Hardened drawing stability: open-palm pen lift now requires N consecutive frames (default 3) instead of single-frame immediate lift; gesture thresholds use a slow EMA on
hand_widthto ignore palm-width jitter. - Added meta.jsonl recording alongside raw video so replays reconstruct the original-runtime recognition point trajectory instead of re-detecting with current code.
- Added
analyze_primary_stability.pywith--from-metaand--render-overlaymodes for quantitative A/B diagnostics. - Added mp4v/ffv1 codec selection for raw recording (default mp4v, ~5-10x smaller files).
- 5 reversible config switches for speculative enhancement layers (
adaptive_skip/long_range/geometric_constraint/hand_prediction/temporal_voter). - Extracted
base_hand_trackerinto 6 focused service modules (smoothers, sr_engine, geometric_classifier, temporal_voter, face_guide, renderer). - Expanded test suite from 20 to 38 files.
Rolled Back
12 Phase 2.5-2.10 "improvements" that regressed stability have been reverted to v1.3.0-baseline behavior:
- mouse-mode EMA overlay on OneEuroSmoother
- local pinch recompute system (
_thumb_index_ema/PINCH_ENTER_RATIO) - 3-finger open palm detection (restored to 5-finger)
- ratio-only finger-close/scroll thresholds (restored 60px floor)
wrist_velocitymotion prior (caused crop-window losing track at far distance)- simplified
_priority_scoreformula (restored full version) temporal_voterenabled by default (now off — its FSM adds recognition latency)- oversized
hint_label(restored v1.3.0 size)
Full changelog: see CHANGELOG.md