1use crate::TrackError;
2
3#[derive(Debug, Clone, Copy, PartialEq)]
4pub struct TrackerConfig {
5 pub match_iou_threshold: f32,
6 pub max_missed_frames: u32,
7 pub max_tracks: usize,
8}
9
10impl Default for TrackerConfig {
11 fn default() -> Self {
12 Self {
13 match_iou_threshold: 0.3,
14 max_missed_frames: 10,
15 max_tracks: 1024,
16 }
17 }
18}
19
20impl TrackerConfig {
21 pub fn validate(&self) -> Result<(), TrackError> {
22 if !self.match_iou_threshold.is_finite() || !(0.0..=1.0).contains(&self.match_iou_threshold)
23 {
24 return Err(TrackError::InvalidIouThreshold {
25 value: self.match_iou_threshold,
26 });
27 }
28 if self.max_tracks == 0 {
29 return Err(TrackError::InvalidMaxTracks { value: 0 });
30 }
31 Ok(())
32 }
33}