Skip to content

AirControl v1.3.5

Choose a tag to compare

@enixz enixz released this 06 Jul 14:21
· 32 commits to master since this release

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_switches 11 → 0, switch_jerk 728.6px → 0, wrist_jerk_mean 19.9 → 14.6px, wrist_jerk_p95 66.6 → 50.5px.
  • Capped 1080p inference latency at ~15ms by downscaling frames to inference_max_width=720 before 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_width to 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.py with --from-meta and --render-overlay modes 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_tracker into 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_velocity motion prior (caused crop-window losing track at far distance)
  • simplified _priority_score formula (restored full version)
  • temporal_voter enabled by default (now off — its FSM adds recognition latency)
  • oversized hint_label (restored v1.3.0 size)

Full changelog: see CHANGELOG.md