Add config for inactivity threshold

This commit is contained in:
Nicolas Mowen 2024-02-02 07:26:02 -07:00
parent 30349782ec
commit 454d0a048e
2 changed files with 7 additions and 2 deletions

View File

@ -546,6 +546,9 @@ class BirdseyeConfig(FrigateBaseModel):
ge=1, ge=1,
le=31, le=31,
) )
inactivity_threshold: int = Field(
default=30, title="Birdseye Inactivity Threshold", gt=0
)
mode: BirdseyeModeEnum = Field( mode: BirdseyeModeEnum = Field(
default=BirdseyeModeEnum.objects, title="Tracking mode." default=BirdseyeModeEnum.objects, title="Tracking mode."
) )

View File

@ -287,6 +287,7 @@ class BirdsEyeFrameManager:
self.canvas = Canvas(width, height, config.birdseye.layout.scaling_factor) self.canvas = Canvas(width, height, config.birdseye.layout.scaling_factor)
self.stop_event = stop_event self.stop_event = stop_event
self.camera_metrics = camera_metrics self.camera_metrics = camera_metrics
self.inactivity_threshold = config.birdseye.inactivity_threshold
if config.birdseye.layout.max_cameras: if config.birdseye.layout.max_cameras:
self.last_refresh_time = 0 self.last_refresh_time = 0
@ -395,13 +396,14 @@ class BirdsEyeFrameManager:
def update_frame(self): def update_frame(self):
"""Update to a new frame for birdseye.""" """Update to a new frame for birdseye."""
# determine how many cameras are tracking objects within the last 30 seconds # determine how many cameras are tracking objects within the last inactivity_threshold seconds
active_cameras: set[str] = set( active_cameras: set[str] = set(
[ [
cam cam
for cam, cam_data in self.cameras.items() for cam, cam_data in self.cameras.items()
if cam_data["last_active_frame"] > 0 if cam_data["last_active_frame"] > 0
and cam_data["current_frame"] - cam_data["last_active_frame"] < 30 and cam_data["current_frame"] - cam_data["last_active_frame"]
< self.inactivity_threshold
] ]
) )