How sjc042/courtvision_public works
CourtVision is an Android Phase 0 spike for on-device basketball tracking. The user starts the camera workflow, selects an inference mode, and sees detections, a tracked ball, pose overlays, and runtime statistics. The documented processing stages are frame analysis, YOLO detection, Kalman tracking, and gated pose inference; CSV instrumentation records performance and tracking data. The excerpts and source index establish key module references, while some internal wiring and the shot-state-machine implementation were not sampled, so those relationships are omitted or identified as documented only.
Main entry points: CameraViewModel.kt Camera view model · FrameProcessor.kt Frame processor · MainActivity.kt Main activity · CameraScreen.kt Camera screen
Components 21
App and Camera
- Main activity
app/src/main/java/com/courtvision/spike/MainActivity.kt - Camera screen
app/src/main/java/com/courtvision/spike/camera/CameraScreen.kt - Camera view model
app/src/main/java/com/courtvision/spike/camera/CameraViewModel.kt - Camera UI state
app/src/main/java/com/courtvision/spike/camera/CameraUiState.kt
Vision Pipeline
- Image analyzer
app/src/main/java/com/courtvision/spike/pipeline/SpikeImageAnalyzer.kt - Frame processor
app/src/main/java/com/courtvision/spike/pipeline/FrameProcessor.kt - Frame contracts
app/src/main/java/com/courtvision/spike/pipeline/FrameContracts.kt - Bitmap operations
app/src/main/java/com/courtvision/spike/pipeline/BitmapOps.kt - Kalman tracker
app/src/main/java/com/courtvision/spike/pipeline/KalmanBallTracker.kt - Shot state machine
app/src/main/java/com/courtvision/spike/pipeline
Inference Runtime
- Pose inference
app/src/main/java/com/courtvision/spike/pipeline/PoseLandmarkInterpreter.kt - Pose engine contract
app/src/main/java/com/courtvision/spike/pipeline/PoseInferenceEngine.kt - GPU delegate probe
app/src/main/java/com/courtvision/spike/pipeline/GpuDelegateProbe.kt - QNN delegate probe
app/src/main/java/com/courtvision/spike/pipeline/QnnDelegateProbe.kt - NNAPI delegate probe
app/src/main/java/com/courtvision/spike/pipeline/NnApiDelegateProbe.kt
Tracking and Metrics
- Performance CSV
app/src/main/java/com/courtvision/spike/pipeline/PerFramePerfCsvLogger.kt - Per-frame metrics
app/src/main/java/com/courtvision/spike/pipeline/PerFramePerfRow.kt - Performance logger
app/src/main/java/com/courtvision/spike/pipeline/PerformanceCsvLogger.kt - Tracking CSV
app/src/main/java/com/courtvision/spike/pipeline/TrackingCsvLogger.kt
Other components
- App user
- CameraX frames
Connections 20
- App user → Main activity: opens app
app/src/main/java/com/courtvision/spike/MainActivity.kt - Main activity → Camera screen: sets content
app/src/main/java/com/courtvision/spike/MainActivity.kt - Camera screen → Camera view model: uses state
app/src/main/java/com/courtvision/spike/MainActivity.kt - Camera view model → Camera UI state: updates
app/src/main/java/com/courtvision/spike/camera/CameraViewModel.kt - CameraX frames → Image analyzer: provides frames
README.md - Image analyzer → Frame processor: delegates frames
app/src/main/java/com/courtvision/spike/pipeline/SpikeImageAnalyzer.kt - Camera view model → Frame processor: configures pipeline
app/src/main/java/com/courtvision/spike/camera/CameraViewModel.kt - Frame processor → Kalman tracker: updates track
app/src/main/java/com/courtvision/spike/pipeline/FrameProcessor.kt - Frame processor → Pose inference: runs pose
app/src/main/java/com/courtvision/spike/pipeline/FrameProcessor.kt - Pose inference → Pose engine contract: implements
app/src/main/java/com/courtvision/spike/pipeline/PoseLandmarkInterpreter.kt - Frame processor → Bitmap operations: preprocesses frames
- Frame processor → Frame contracts: uses contracts
- Camera view model → GPU delegate probe: probes GPU
app/src/main/java/com/courtvision/spike/camera/CameraViewModel.kt - Camera view model → QNN delegate probe: probes QNN
app/src/main/java/com/courtvision/spike/camera/CameraViewModel.kt - Camera view model → NNAPI delegate probe: probes NNAPI
app/src/main/java/com/courtvision/spike/camera/CameraViewModel.kt - Camera view model → Performance CSV: logs frames
app/src/main/java/com/courtvision/spike/camera/CameraViewModel.kt - Performance CSV → Per-frame metrics: serializes rows
app/src/main/java/com/courtvision/spike/pipeline/PerFramePerfCsvLogger.kt - Camera view model → Performance logger: exports metrics
app/src/main/java/com/courtvision/spike/camera/CameraViewModel.kt - Camera view model → Tracking CSV: exports tracks
app/src/main/java/com/courtvision/spike/camera/CameraViewModel.kt - Frame processor → Shot state machine: may derive shot state
README.md