This commit is contained in:
duri 2025-10-18 23:47:22 +00:00 committed by Francesco Durighetto
parent 3e102b1bdf
commit a66159a44f
2 changed files with 12 additions and 5 deletions

View File

@ -62,6 +62,7 @@ class BirdseyeConfig(FrigateBaseModel):
title="Idle heartbeat FPS (0 disables, max 10)",
)
# uses BaseModel because some global attributes are not available at the camera level
class BirdseyeCameraConfig(BaseModel):
enabled: bool = Field(default=True, title="Enable birdseye view for camera.")

View File

@ -9,9 +9,9 @@ import os
import queue
import subprocess as sp
import threading
import time
import traceback
from typing import Any, Optional
import time
import cv2
import numpy as np
@ -793,7 +793,9 @@ class Birdseye:
self.stop_event = stop_event
self.requestor = InterProcessRequestor()
self.idle_fps: float = self.config.birdseye.idle_heartbeat_fps
self._idle_interval: Optional[float] = (1.0 / self.idle_fps) if self.idle_fps > 0 else None
self._idle_interval: Optional[float] = (
(1.0 / self.idle_fps) if self.idle_fps > 0 else None
)
if config.birdseye.restream:
self.birdseye_buffer = self.frame_manager.create(
@ -853,10 +855,14 @@ class Birdseye:
self.requestor.send_data(UPDATE_BIRDSEYE_LAYOUT, coordinates)
if self._idle_interval:
now = time.monotonic()
is_idle = (len(self.birdseye_manager.camera_layout) == 0)
if is_idle and (now - self.birdseye_manager.last_output_time) >= self._idle_interval:
is_idle = len(self.birdseye_manager.camera_layout) == 0
if (
is_idle
and (now - self.birdseye_manager.last_output_time)
>= self._idle_interval
):
self.__send_new_frame()
def stop(self) -> None:
self.converter.join()
self.broadcaster.join()
self.broadcaster.join()